《8×8点阵LED数码图形显示的课程设计(共22页).doc》由会员分享,可在线阅读,更多相关《8×8点阵LED数码图形显示的课程设计(共22页).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上88点阵LED数码图形显示器的课程设计第一章 总体方案设计1.1总体设计要求本系统采用单片机AT89C51为LED显示屏的控制核心,制造一种简单的88显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字稳定、清晰无串扰,图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。根据设计要求,初步确定设计方案如下:1. 选择AT89C51单片机(晶振频率为f=12MHZ)作为整个系统的核心器件,对整个系统进行总体控制,发送并时时处理系统信息。2通过编程显示数字:“,心形图”。3动态显示
2、,即跑马灯文字幕,每0.25秒左移一次。 4. 扫描信号连接到单片机的P0口,显示信号连接到单片机的P2口。5点阵的点亮过程有程序控制,由驱动电路完成,点阵采用单色显示,其中驱动电路采共阴型高态扫描、高态显示信号的驱动电路。1.2系统框图本文设计行、列驱动电路,显示屏电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如下图1-1所示:图 1-1 系统框图第二章 系统硬件电路的设计本系统的硬件电路是由单片机最小系统、动态显示驱动电路两部分组成。其中,单片机最小系统包括电源电路、复位电路和晶振电路构成;显示部分使用共阴型高台扫描、高态显示信号驱动电路,完成“跑马灯”文字幕效
3、果。2.1 单片机最小系统设计2.1.1 单片机的时钟电路 AT89C51单片机内部的振荡电路是一个高增益反向放大器,引线X1和X2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C51的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。 内部时钟方式:利用其内部的振荡电路在X1和X2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 X1和X2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12
4、MHz的石英晶体,电容器一般选择30PF左右。图2-1使用片内振荡电路的时钟电路2.1.2 单片机的复位电路 本设计中AT89C51是采用上电自动复位和按键复位两种方式。最简单的复位电路如图2-2所示。上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。其中R1和R2分别选择200和2K的电阻,电容器一般选择22F。图2-2 AT89C51的复位电路2.1.3 AT89C51的最小应用系统 AT89C51是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2-3所示。这样构成的最小系统
5、简单可靠,其特点是没有外部扩展,有可供用户使用的大量的IO线。图2-3 AT89C51单片机构成的最小系统2.2 显示器及接口设计2.2.1 88点阵LED显示器的组成原理及控制方式 本次设计中采用88点阵LED显示器,简称LED点阵板或LED矩阵板。它是以发光二极管为像素,按照行与列的顺序排列起来,用集成工艺制成的显示器件。有单色和双色之分,这种显示器有共阳极接法和共阴极接法两种,设计中用到的是共阳极的显示器。共阳极接法的原理图如图2-4所示,图中画出了88点阵的二极管。每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。当给发光二极管阳极引出端r
6、1加高电平,阴极引出端c1加低电平时,左上角的二极管被点亮因此,对于行和列的电平进行扫描控制时,可以达到显示不同字符的目的。图2-4 88点阵LED显示器组成原理图 (1)“”在8X8LED点阵上显示图如下图所示1234567812H,14H,3CH,48H,3CH,14H,12H,00H(2).“”在8X8LED点阵上显示图如下图所示1234567800H,00H,38H,44H,44H,44H,38H,00H(3)心形图在8X8LED点阵上显示图如下图所示1234567830H,48H,44H,22H,44H,48H,30H,00H图2-5 88点阵LED引脚的排列图2.2.2 88点阵L
7、ED显示器与单片机的接口 88点阵LED的引脚图如图2-5所示,当采用单片机进行控制时,连接点阵显示器的共阳极r端需经驱动三极管9012与单片机的P2口相连,而共阴极c端需经限流电阻与单片机的P0口相连。在编程控制时,将88点阵LED显示分成行和列两部分,字符数据从P0口输出,扫描控制字从P2口输出,每一列由一个字节的数据组成,数据可一次送入,然后扫描一行,显示一个字需要扫描8次。2.2.3 驱动电路的设计显示器驱动是一个非常重要的问题,如果驱动能力差,显示器亮度就低;而驱动器长期在超负荷下运行则很容易损坏。如果是静态显示,则LED驱动器的选择较为简单,只要驱动器的驱动能力与显示器工作电流相匹
8、配即可。而且只须考虑段的驱动,因为,共阳极接+5V,而共阴极接地,所以位的驱动无须考虑。动态显示则不然,由于一位数据的显示是由段和位选信号共同配合完成的,因此,必须同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。理论分析表明,同样的驱动器,当其驱动静态显示器时,其亮度为驱动动态显示器的n倍,n近似为显示位数。所以要使动态显示器达到静态显示器的亮度,必须将驱动器能力提高n倍。本设计中,因为采用了88点阵LED显示器,用AT89C51单片机进行控制,因此它很适宜于按扫描方式动态显示多个字符数据,所以我们只选用了8个PNP型三极管作为驱动显示器的电路。如图2-6所示,因AT89C51单片
9、机的IO口有20mA的吸入电流,正因为这一特点,使的本设计中的驱动电路部分大大简化,不用附加专门的驱动电路即可正常工作。图2-6 显示驱动电路2.3电源电路的设计 电源电路采用普通集成稳压电路,在本设计中,由于考虑到成本问题,这部分电路就以输出+5V的稳压电源代替。第三章 88点阵显示器控制系统的硬件设计3.1 硬件系统的总体设计 根据设计要求与设计方案,硬件电路的设计框图如图3-1所示。硬件电路结构由8个部分组成:时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极驱动电路、点阵显示阴极驱动电路和88点阵显示电路。按键电路复位电路电源电路时钟电路 单 片 机点阵显示器阳极驱动电路点阵显示
10、器阴极驱动电路88点阵LED显示器图3-1 88点阵显示器组成原理框图3.2 单片机AT89C51芯片的性能及功能的分析3.2.1 AT89C51的主要特性: 32条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路3.2.2 AT89C51管脚说明:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时
11、,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口
12、输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用
13、于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程
14、序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.3 具体电路及功能分析3.3.1 显示电路 本设计采用双色88点阵模块显示,但是在设计中我们只用单色显示,我们通过改变限流电阻的阻值的大小来改变显示字符的亮度。3.3.2 电源电路 电源电路采用普通的三端集成稳压电源。为整个系统提供+5V的电压。3.3.3 电路原理图 图3-2 电路
15、原理图3.4硬件系统连线 (1)把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1DR8”端口上;(2)把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1DC8”端口上;(3)把“单片机系统”区域中的P2.0/A8端子用导线连接到“独立式键盘”区域中的SP1端子上;第四章 系统软件电路的设计4.1 软件设计思想主程序先进行设置中断,并启动,再进行键盘扫描载入,心形图,然后判断一组字型是否扫描完,按不同情况进行循环调用子程序。进入子程序后,首先设置相应的程序,反复调用显示子程序,并在显示过程中反复调用键盘扫描子程序进行延时,判断是否退出相应的方
16、式显示子程序。设计过程中,能很好得提高按键响应速度。如图4-1所示为软件系统框图。图 4-1 软件设计框图字符编码:88点阵可以看成是从上至下8个字节,每个字节8位,因为该点阵为共阴型点阵,因此若该灯亮,则该位为“1”;该灯不亮,则该位为“0”。所以,心形图的编码为,从上至下:“”: 12H,14H,3CH,48H,3CH,14H,12H,00H“”: 00H,00H,38H,44H,44H,44H,38H,00H“心形图”: 30H,48H,44H,22H,44H,48H,30H,00H4.2 主程序设计主程序首先设置并启动T0中断,然后调用初始化程序,为后面程序要用到的数据调入,并清零一些
17、用到的数据单元,然后载入,心形图,进行扫描。图4-2为主程序流程图。 图 4-2 主程序流程图主程序如下:COLUMN REG P0 ;行ROW REG P2 ;列SCANCODE EQU B ;扫描码SPEED EQU 1 ;0.25s延迟S_TIME EQU -2500 ;2.5ms扫描时间 ORG 0000H ;程序从0000H地址开始 JMP MAIN ;跳至MAIN ORG 000BH ;TIMER0中断向量 JMP TIMER0 ;跳至TIMER0中断子程序MAIN: MOV IE,#82H ;设定TIMER0中断 MOV TOMD,#01H ;使用T0定时器,方式1 MOV SP
18、,#60H ;移开堆栈指针 SETB RS0 ;切换到RB1 MOV R1,#20H ;显示存储起始地址 MOV R2,#8 ;扫描8行 MOV R3,#SCANCODE ;载入扫描码 CLR RS0 ;切换回RB0 MOV TH0,#0F6H ;设定每行扫描时间 MOV TL0,#3CH ;设定每行扫描时间 SETB TR0 ;启动TIMER0LOOP: MOV DPTR,#TABLE ;将数据指针指向TABLE地址 MOV R4,#4 ;4组字型 SJMP $ ;等待中断或其他4.3 子程序设计子程序中包括动态显示程序、按键程序、延时程序和中断程序四种,下面依次详细介绍。4.3.1 动态显
19、示程序设计本系统中采用左移动态显示方式。对于88LED阵列,其左移就是显示4个不同的字型。首先扫描第一个字型,同样是8行、8次扫描,8次显示;完成第一个字型后,再扫描第二个字型;完成第二个字型后,再扫描第三个字型依次类推,即可产生“,心形图”左移的感觉。假如第一个字型的编码为00H 00H 36H 49H 49H 36H 00H 00H;第二个字型的编码为00H 1CH 22H 41H 41H 22H 1CH 00H,也就是把第一个字型编码中,第1行显示数据,变为第8行显示数据、第2行显示数据,变为第1行显示数据、第3行显示数据,变为第2行显示数据、第4行显示数据,变为第3行显示数据依次类推。
20、当第一个字型扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。同样的,当第二个字型扫描完成后,就进行这样的调整动作,以产生第三个字型的编码。这个调整动作是将8个编码根据顺序填入存储器,调整存储器地址的程序流程图如图4-3所示。图 4-3 动态显示流程图动态显示子程序如下: MOV R2,#8 ;转移次数 MOV R0,#20H ;R0内置目的存储器地址 MOV R1,#21H ;R1内置来源存储器地址 MOV 28H,R0 ;先将第一行内容搬至28H地址MOVE_L: MOV A,R1 ;将来源存储器内容搬至ACC MOV R0,A ;将ACC内容搬至目的存储器 INC R0 ;下一个
21、目的地址 INC R1 ;下一个来源地址 DJNZ R2,MOVE_L ;跳至MOVE_L,执行8次 RET ;返回4.3.2 按键程序设计系统中采用独立式非编码键盘,在P1口接一个按键,P0端口分别控制88LED阵列。当有键按下时,对应的LED亮;反之则灭。如图4-4所示为按键控制流程图。图 4-4 按键流程图按键子程序如下: ORG 0000HSTART: MOV P1,#0FFH ;置P1口为输入状态LOOP: MOV A,P1 ;读入P1口状态数据 NOP MOV P0,A ;将状态数据送入P0口,控制LED阵列 SJMP LOOP ;继续循环 END4.3.3 延时程序设计延时程序在
22、单片机编程中使用非常广泛,也很重要,在本设计的程序中用到了延时子程序。已知晶振12MHZ,所以机器周期为1s,但执行一次DJZN操作为2s,则延时时间是(1200250)次2s/次=s=100ms。延时流程图如图4-5所示。 图 4-5 延时流程图程序如下:DELAY: MOV R7,#1D1: MOV R6,#200D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET4.3.4 中断程序设计显示程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定。根据设计要求,设定扫描时间为2.5ms,那么定时器T0定时2.5ms,则定时初
23、值计算公式为:定时时间t时钟频率/12中断流程图如图4-6所示。图4-6 中断流程图中断子程序如下:TIMER0: CLR TR0 ;关闭TIMER0 PUSH A ;储存ACC SETB RS0 ;切换到RB1 MOV COLUMN,#0 ;关闭LED阵列 MOV A,R1 ;取出显示信号;使用共阳极式LED阵列,则加入下一列指令 CPL A MOV ROW,A ;输出显示信号 MOV A,R3 ;载入扫描码 MOV COLUMN,A ;输出扫描码(显示一行) RR A ;下一个扫描码 MOV R3,A ;储存下一个扫描码 INC R1 ;下一个显示信号 DJNZ R2,NEXT_C ;未超
24、过8行则跳至NEXT_C MOV R2,#8 ;重新开始扫描 MOV R1,#20H ;从第一行开始扫描NEXY_C: MOV TH0,#F6H ;设定每行扫描时间 MOV TL0,#3CH ;设定每行扫描时间 SETB TR0 ;启动TIMER0 CLR RS0 ;切换回RB0 POP A ;取回ACC RETI第五章 调试及性能分析5.1 软件调试软件调试主要是利用计算机仿真针对程序中可能存在的错误进行检测,直到得到正确的显示结果。按照程序流程图在KEIL C51软件中编写好程序,在此软件中检测编写好的程序是否有误语法错误。此次软件调试参考前面的子程序,选择动态显示程序和延时程序进行调试,
25、并观察其结果,如图5-1、5-2所示。图 5-1 动态显示程序调试结果图 5-2 延时程序调试结果5.2 性能分析此次系统设计结果较好,LED显示屏能很好的显示信息。这个方案设计的88的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。总结通过此次论文设计,让我学到了许多知道的和不知道的,都有提高,在单片机的选择、显示屏的组合还有各种器件的选用有了一个明确的认识,程序设计上清晰地思路,理论在实践方面的运用能力有巨大的提高。在实践以前,由于对单片机有一定的兴趣,我通过课外
26、学习已经接触了很多概念以及设计方式,但不专业。但是通过这次深层次的学习、设计我有了一定的实践经验和理论基础,也让我可以进行更深的研究学习,在设计思路上,通过查阅资料了解了许多方法,认识到形式的多样性,模仿优秀作品是每个设计师必走之路,但是做设计必须要有自己的思想,人也要有自己的鲜明个性,久了就成了自己的风格,风格的养成与一个人的艺术素养和个人修养有直接关系。要拓展自己的知识面,使自己的知识系统化知识需要接触社会的方方面面,光有书本知识是远远不够的。要求自己在以后的学习中多想,多读,多学。要求自己的写作水平一定要过硬。经验的提高,让我今后在设计时更加方便、快捷,也为毕业后的就业提供了保障。 参考
27、文献1张晓峰,高斌电气自动化实验教程国防工业出版社,2010年3月 2 楼然苗,李光飞51系列单片机设计实例北航出版社,2005年1月3 王幸之,钟爱琴,王雷,王闪AT89系列单片机原理与接口技术北京航空航天大学出版社,2004年5月4 朱定华单片机原理及接口技术电子工业出版社,2001年4月5 赵茂泰智能仪器原理及应用电子工业出版社,2004年2月6 范力旻单片机原理及应用技术电子工业出版社,2009年1月附录1.1 元件清单元器件名称型号数目1、AT89C51单片机1块2、晶振12MHZ1块3、PNP三极管90128只4、88点阵共阳LED显示器共阳1块5、按钮开关1只6、极性电容20uf
28、1只7、瓷片电容30pf2只8、电阻1k9只9、电阻10 k1只10、电阻2708只11、电源5V1个1.2 程序清单COLUMN REG P0 ;行ROW REG P2 ;列SCANCODE EQU B ;扫描码SPEED EQU 1 ;0.25s延迟S_TIME EQU -2500 ;2ms扫描时间 ORG 0000H ;程序从0000H地址开始 JMP START ;跳至START ORG 000BH ;TIMER0中断向量 JMP TIMER0 ;跳至TIMER0中断子程序START: MOV IE,#82H ;设定TIMER0中断 MOV TOMD,#01H ;使用T0定时器,方式1
29、 MOV SP,#60H ;移开堆栈指针 SETB RS0 ;切换到RB1 MOV R1,#20H ;显示存储起始地址 MOV R2,#8 ;扫描8行 MOV R3,#SCANCODE ;载入扫描码 CLR RS0 ;切换回RB0 MOV TH0,#0F6H ;设定每行扫描时间 MOV TL0,#3CH ;设定每行扫描时间 SETB TR0 ;启动TIMER0LOOP: MOV DPTR,#TABLE ;将数据指针指向TABLE地址 MOV R4,#4 ;4组字型 NEXT: MOV R2,#8 ;加载数据数量 MOV R0,#20H ;储存存储器起始地址 CALL LOADING ;加载一个
30、字型 CALL DELAY ;延时 DJNZ R4,NEXT ;跳至NEXT形成一个循环 JMP LOOP ;跳至LOOP形成一个循环LOADING: MOV R3,#0 ;间距L_1: MOV A,R3 ;将间距放入ACC MOVC A,A+DPTR ;读入数据 MOV R0,A ;将数据存入存储器 INC R3 ;指向下一个读取地址 INC R0 ;指向下一个储存地址 DJNZ R2,L_1 ;跳至L_1形成一个循环 INC DPTR ;下一笔数据 RETDELAY: MOV R7,#1 D1: MOV R6,#200D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2
31、 DJNZ R7,D1 RETTIMER0: CLR TR0 ;关闭TIMER0 PUSH A ;储存ACC SETB RS0 ;切换到RB1 MOV COLUMN,#0 ;关闭LED阵列 MOV A,R1 ;取出显示信号;使用共阳极式LED阵列,则加入下一列指令 CPL A MOV ROW,A ;输出显示信号 MOV A,R3 ;载入扫描码 MOV COLUMN,A ;输出扫描码(显示一行) RR A ;下一个扫描码 MOV R3,A ;储存下一个扫描码 INC R1 ;下一个显示信号 DJNZ R2,NEXT_C ;未超过8行则跳至NEXT_C MOV R2,#8 ;重新开始扫描 MOV R1,#20H ;从第一行开始扫描NEXY_C: MOV TH0,#F6H ;设定每行扫描时间 MOV TL0,#3CH ;设定每行扫描时间 SETB TR0 ;启动TIMER0 CLR RS0 ;切换回RB0 POP A ;取回ACC RETITAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH GRAPH: DB 12H,14H,3CH,48H,3CH,14H,12H,00H DB 00H,00H,38H,44H,44H,44H,38H,00H DB 30H,48H,44H,22H,44H,48H,30H,00H END专心-专注-专业