《LED点阵显示.doc》由会员分享,可在线阅读,更多相关《LED点阵显示.doc(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LED点阵显示设计目 录第一章 摘要1第二章 系统方案论证221 需要实现的功能222 LED显示特点223 设计方案论证3231 显示模式方案3232 数据传输方案4第三章 关键电路设计531 电源设计532 单片机系统及外围电路6321 单片机的选择6322 AT89C51芯片介绍6323 单片机系统外围电路933 列驱动电路1034 行驱动电路12341 行驱动芯片74HC154 介绍12342 行驱动电路1435 LED点阵显示屏电路16第四章 软件流程1841 系统主程序1842 显示驱动程序19第五章 系统测试及结果分析2151 软件调试2152 硬件调试2553 性能分析25第六
2、章 理论分析计算26第七章 系统功能及使用方法27结束语28附录一 实物照片、电路图、PCB图、元器件清单29附录二 系统程序源代码33附录三 用户使用手册39参考文献40第一章 摘要本设计是一1616点阵LED电子显示屏的设计。整机以美国ATMEL 公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个行驱动器 74HC154和两个列驱动器74HC595来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字,采用16*16点阵LED显示模块来组成1616点阵显示模式。显示采用动态显示,使得图形或文字
3、能够实现静止、移入移出等多种显示方式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。单片机控制系统程序采用C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库中提取。LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券所、运动场馆、交通干道及各种室内/外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。经实践证明,该系统显示误差小,性能稳定,结构合理,扩展
4、能力强。关键词:AT89C51单片机; LED; 点阵显示; 动态显示; 汇编语言。第二章 系统方案论证21 需要实现的功能设计一个室内用1616点阵LED图文显示屏,要求在目测条件下LED点阵显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。22 LED显示特点LED发光灯可以分为单色发光灯、双色发光灯、三色发光灯、面发光灯、闪烁发光灯、电压型发光灯等多种类型。按照发光灯强度又可以分为普通亮度发光灯、高亮度发光灯、超高亮度发光灯等。这种单个的发光灯适宜用做指示灯,如电源指示、电路状态指示灯,进而对能够转变成电信号的各种物理
5、量进行指示。也可以用多个LED发光灯组成固定的字符或图形进行显示,如大型剧场会堂的出入口及洗手间的显示。和很多应用术语一样,LED图文显示屏并没有一个公认的严格的定义,一般把显示图形和/或文字的LED点阵显示屏称为图文屏。这里所说的图形,是指由单一亮度线条组成的任意图形,以便于不同亮度(灰度)点阵组成的图像相区别。图文显示屏的主要特征是只控制LED点阵中各发光器件的通断(发光或熄灭),而不控制LED的发光强弱。LED图文显示屏的外观可以做成条形,叫做条形图文显示屏(简称条屏),也可以按一定高度比例做成矩形的平面图文显示屏。其实条屏只不过是其宽度远大于高度的平面显示屏,在显示与控制的原理上并无区
6、别。 从理论上说,不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,再按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的图文显示屏来说,每个LED发光器件占据数据中的1位(1bit),在需要该LED器件发光的数据中相应的位填1,否则填0。当然,根据控制电路的安排,相反的定义同样是可行的。这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。
7、组成一个字的点阵,其大小也可以有1616、2424、3232、4848等不同规格。汉字的点阵结构相应的显示数据是用16进制格式以字节为单位表示的。23 设计方案论证 231 显示模式方案为了吸引观众增强显示效果,可以有多种显示模式,最简单的显示模式是静态显示。这里所说的“静态显示模式”不同于静态驱动方式。与静态显示模式相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示模式的方法,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。例如,按顺序调整行号,可以使显示图文产生上下平移;而
8、顺序调整列显示数据的位置,就可以达到左右平移的目的;同时调整行列顺序,就能得到对角线平移的效果。其它模式的数据刷新,也可找到相应的算法。不过当算法太复杂,太浪费时间的话,也可以考虑预先生成刷新数据,存储备用。刷新的时间控制,要考虑运动图形文字的显示效果。刷新太慢,动感不显著;刷新太快了,中间过程看不清。一般刷新周期可控制在几十毫秒范围之内。 232 数据传输方案采用扫描方式进行显示时,显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输方式的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式
9、。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据要经过并行到串行和串行到并行两次变换。首先,单片机从存储器中读出的8位并行数据要通过并串变换,按顺序一位一位地输出给列驱动器。与此同时,列驱动器中每一列都把当前数据传向后一列,并从前一列接收新数据,一直到全部列数据都传输完为止。只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解列数据准备(传输)
10、和列数据显示两个部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以至影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,准备下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图2-1为显示屏
11、电路实现的结构框图。单片机列驱动器行驱动器LED显示点阵电源图2-1 显示屏电路框图 第三章 关键电路设计 由于图文屏的控制电路采用单片机方案,控制功能的实现应在硬件和软件两方面进行折中。单片机及相应软件,主要负责存储(或生成)显示数据、安排控制信号的定时与顺序等。但是单片机的接口数量少,驱动能力不强,必须扩展一定的硬件电路,才能满足显示屏的需要。系统硬件部分电路大致上可以分成稳压电源、单片机系统及外围电路、列驱动器电路、行驱动器电路和LED点阵显示屏电路五部分。31 电源设计稳压电源的功能是把来自电网的220V交流电压转变为所需的、稳定的直流电压。它由电源变压器、整流电路、滤波电路和稳压电路
12、四个部分组成,如图3-1所示: + 电 源 + 整 流 + 滤 波 + 稳 压 + u1 u2 u3 uI U0 _ 变压器 _ 电 路 _ 电 路 _ 电 路 _(a)稳压电源的组成框图 u1 u2 u3 uI U0 0 t 0 t 0 t 0 t 0 t (b)整流与稳压过程图3-1 稳压电源的组成框图及整流与稳压过程根据要求所确定的稳压电源的电路形式如图3-2所示。图中变压器T将来自电网的220V交流电压变换为整流电路所需要的7.5V交流电压,再经整流电桥(4个二极管)D1将交流电压变换成脉动的直流电压,随后电解电容器C1将脉动直流电压中的大部分纹波加以滤除,以得到较为平滑的直流电压。为
13、了得到改善的纹波电压,再将直流电压通过电容C2,然后经集成稳压器IC1稳压,在输出端得到稳定的5V直流电压。这时,在输出端接上电容C3,用以滤除输出端的高频信号,改善负载的瞬态响应,最后即可得到所需的、稳定的直流电压。电路最后接入的发光二极管用做电源指示灯。图3-2 电源电路图32 单片机系统及外围电路321 单片机的选择单片机采用89C51或其兼容系列的芯片进行控制,它负责控制整个电路以及相应的程序的运行、以及给屏体电路部分发送命令。这里我们选择了内含4K字节Flash的AT89C51,因为我们只需要显示特定的图形和文字,无需庞大的字库,因此4K Flash已经可以满足字库储存的需求,不需要
14、扩展外存储器。322 AT89C51芯片介绍AT89C51AT89C51是美国ATMEL公司生产的8位Flash ROM单片机。其最突出的优点是片内ROM为Flash ROM,可擦写1000次以上,应用并不复杂的通用ROM写入器就能方便的擦写,读取也很方便,价格低廉,具有在片程序ROM二级保密系统。因此可灵活应用于各种控制领域。AT89C51包含以下一些功能部件:(1)一个8位CPU ;(2)一个片内振荡器和时钟电路;(3)4KB Flash ROM ;(4)128B 内RAM;(5)可寻址64KB的外ROM和外RAM控制电路;(6)两个16位定时/计数器;(7)21个特殊功能寄存器 ;(8)
15、4个8位并行I/O口;(9)一个可编程全双工串行口 ;(10)5个中断源,可设置成2个优先级。AT89C51单片机一般采用双列直插DIP封装,共40个引脚,图3-3为其引脚排列图。40个引脚大致可分为4类:电源、时钟、控制各I/O引脚。 一 电源Vcc芯片电源,接+5V;GND接地端。二 时钟XTAL1、XTAL2晶体振荡电路反相输入端和输出端。图3-3 AT89C51引脚图三 控制线控制线共有4根,其中3根是复用线。所谓复用线是指具有两种功能,正常使用时是一种功能,在某种条件下是另一种功能。1ALE/地址锁存允许/片内EPROM编程脉冲。(1)ALE功能:用来锁存P0口送出的低八位地址。AT
16、89C51在并行扩展外存储器时,P0口用于分时传送低8位地址和数据信号,且均为二进制数。当ALE信号有效时,P0口传送的是低8位地址信号;ALE信号无效时,P0口传送的是低8位地址信号。在ALE信号的下降沿,锁定P0口传送的内容,即低8位地址信号。需要指出的是,当CPU不执行访问外RAM指令,ALE以时钟振荡频率1/6的固定频率输出,因此ALE信号也可作为外部芯片CLK时钟或其他需要。但是,当CPU执行MOVX指令时,ALE将跳过一个ALE脉冲。(2)功能:片内EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。2 外ROM读选通信号。89C51读外ROM时,每个机器周期内两次有效输出
17、。可作为外ROM芯片输出允许的选通信号。在读内ROM或读外RAM时,无效。3RST/VPD复位/备用电源。(1)正常工作时,RST端为复位信号输入端,只要在该引脚上连续保持两个机器周期以上高电平,AT89C51芯片即实现复位操作,复位后一切从头开始,CPU从0000H开始执行指令。(2)VPD功能:在VCC掉电情况下,该引脚可接上备用电源,由VPD向片内RAM供电,以保持片内RAM中的数据不丢失。4/VPP内外ROM选择/片内EPROM编程电源。(1)功能:正常工作时,为内外ROM选择端。AT89C51单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外。当保持高电平时,先访问内R
18、OM,但当PC值超过4KB时,将自动转向执行外ROM中的程序。当保持低电平时,则只访问外ROM,不管芯片内有否内ROM。(2)VPP功能:片内有EPROM的芯片,在EPROM编程期间,此引脚用于施加编程电源。四 I/O引脚AT89C51有P0、P1、P2、P3 4个8位并行I/O端口,共32个引脚。P0口是一组8位漏级开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL逻辑门电路,对端口写1时,又可作高阻抗输入端用。在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。在Flash编程时,P0端口
19、接收指令字节;而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。P1 口是带内部上拉电阻的双向I/O口,向P1口写入1时P1口被内部上拉为高电平,可用作输入口。当作为输入脚时被外部信号拉低的P1口会因为内部上拉而输出一个电流。Flash编程和程序校验期间,P1接收低8位地址。P2 口是带内部上拉电阻的双向I/O口,向P2口写入1时P2口被内部上拉为高电平可用作输入口,当作为输入脚时被外部拉低的P2口会因为内部上拉而输出电流。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据,当使用8位寻址方式(MOVXRI)访问外部数据存储器
20、时,P2口发送P2特殊功能寄存器的内容,在整个访问期间不改变。Flash编程和程序校验时,P2也接收高位地址和一些控制信号。P3 口是带内部上拉电阻的双向I/O口,向P3口写入1时P3口被内部上拉为高电平可用作输入口,当作为输入脚时被外部拉低的P3口会因为内部上拉而输出电流。P3口除了作为一般的I/O口线外,更重要的是它的第二功能,如表31所示:表31 P3各端口第二功能端口引脚第二功能P3.0RXD串行口输入端P3.1TXD串行口输出端P3.2外部中断0请求输入端P3.3外部中断1请求输入端P3.4T0定时/计数器0外部信号输入端P3.5T1定时/计数器1外部信号输入端P3.6外RAM写选通
21、信号输出端P3.7外RAM读选通信号输出端323 单片机系统外围电路单片机系统外围电路形式如图3-4所示。单片机振荡器反相放大器的输入端(XTAL1)和输出端(XTAL2)之间接上12MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。电容C4、C5是晶振的负载电容,主要起频率微调和稳定的作用。单片机的串行口工作在方式0下,作为同步移位寄存器使用,端口RXD(P3.0)作为数据移位的输入/输出端,而由TXD(P3.1)端输出移位时钟脉冲。移位数据的发送和接收均以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。89C51的通用I/O口P1作为显示数据和二进制行号的公用
22、输出口。两种数据的输出在时间上是错开的。P1口的低4位与行驱动器相连,送出二进制的行选信号;P1.5P1.7口则用来发送控制信号。P0和P2口空着,在有必要的时候可以扩展系统的ROM和RAM。图3-4 单片机系统外围电路图33 列驱动电路列驱动电路由集成电路74HC595构成,它具有一个8位串行输入/输出或者并行输出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。74HC595的管脚及内部结构形式如图3-5所示。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存
23、器。引脚SER是串行数据的输入端。引脚SRCLK输入移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SER的下一个数据打入最低位。移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCLK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器。引脚是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。信号是移位寄存器的清零输入端,当其为低时移位寄存器的输出全部为0,由于SRCLK和RCLKError! No bookmark name given.两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QAQH,最高位
24、QH可作为多片74HC595级连应用时,向上一级的级连输出。但因QH受输出锁存器打入控制,所以还从输出锁存器前引出了QH,作为与移位寄存器完全同步的级连输出。移位寄存和输出锁存的时序波形如图3-6所示:图3-5 74HC595的管脚及内部结构逻辑图 图3-6 移位寄存和输出锁存的时序波形图 由74HC595组成的列驱动器示于图3-7中。该图由两片74HC595组成16列的驱动,由16个行驱动器驱动16行。第一片列驱动器的SER端连接单片机输出的串行列显示数据,其QH端连接第二片的SER端,采用这样的方法组成两片的级连。两片相应的SRCLK、RCLK端分别并联,作为统一的串行数据移位信号、串行数
25、据清除信号和输出锁存器打入信号。这样的结构,使得各片串行移位能把16列的显示数据依次输入到相应的移位寄存器输出端。移位过程结束之后,控制器输出RCLK打入信号,16列显示数据一起打入相应的输出锁存器。然后选通相应的行,该行的各列就按照显示数据的要求进行显示。图3-7 显示驱动电路34 行驱动电路341 行驱动芯片74HC154 介绍译码器是一个多输入、多输出的组合逻辑电路。其功能是将给定的输入码组进行“翻译”,变换成对应的输入信号,对每一种可能的输入组合,使输出通道中相应的一路有信号输出,一个且仅一个输出信号为有效电位。74HC154为变量译码器,也称二进制译码器,它是一种四线十六线译码器,
26、译码的输入端有4个,输出端有24=16个,并有两个选通端(使能端),它的管脚形式如图3-8所示,当选通端1、2均为低电平时,译码器处于工作状态,可将地址输入端(A0A3)的二进制编码在一个对应的输出端以低电平译出。否则,译码器被禁止,所有的输出端被封锁在高电平。为译码输出端,输出是低电平有效,即在选通时,每输入一个二进制代码将使对应的一个输出端为低电平,而其它输出端均为高电平的无效信号,也可以说对应的输出端被“译中”。74HC154译码器的真值表如表32所示:图3-8 74HC154管脚图表32 74HC154译码器的真值表 说明:H高电平; L低电平;X任意从真值表可知,每组4个变量输入,在
27、16个输出中只有一个引脚为“0”(且正好与输入代码是一一对应),其余15个全为“1”,这种译码输出称为低电平有效;四线十六线译码器逻辑形式为: ,。342 行驱动电路行驱动电路相对简单。行选通信号来源于单片机按照时序要求所给出的二进制信号,每次更新行号(开始扫描新的一行)时,由单片机输出4位二进制行号,行号经4/16线译码器译码后,生成16条行选通信号线,再经过驱动器驱动对应的行线。采用译码器的方案,还可以保证同一时刻只选通一条行线,从而达到显示的稳定性。行驱动电路原理如图3-9所示:图3-9 行驱动电路原理图行选通信号从74HC154的端输出,某一端输出低电平即为有效,而其它端输出均为高电平
28、的信号无效。如端输出低电平,此信号传至相应的PNP型三极管Q1,此时,三极管的基极为低电平,因此,发射结正向偏置,集电结反向偏置,三极管导通,其集电极再将高电平加于LED阵列的对应的行上,即将此行选通;而同时74HC154的其它端输出高电平而致使该行对应的三极管截止,从而所对应LED行线不被选通。行选通按顺序从,全部各行都选通一遍之后又重新开始,这就是行驱动电路的逐行扫描过程。行信号A、B、C、D的顺序变化范围从0000、0001、0010、至l111,来一个选通信号,行信号顺序就变化一次,其频率由扫描电路决定。 由于行驱动电路一条行线上要带动16列的LED进行显示,按每一LED器件20mA电
29、流计算,16个LED同时发光时,就需要1620=320mA的驱动电流,选用三极管8550作为驱动管可以在逻辑功能和驱动能力上符合LED的驱动要求。35 LED点阵显示屏电路LED点阵显示屏是将发光二极管按行按列布置的,驱动时也就按行按列驱动。在扫描驱动方式下可以按行扫描按列控制,当然也可以按列扫描按行控制。LED点阵显示屏现多采用一块1616点阵显示,以满足汉字显示的要求。1616 LED点阵是基本的点阵显示模块,理解了1616 LED点阵的工作原理就可以基本掌握LED点阵显示技术。1616点阵LED结构如图3-10所示: 图3-10 1616点阵LED引脚图图3-11 1616点阵LED引脚
30、定义图从图中(本图的LED阵列采用共阳的接法)可以看出,1616点阵共需要256个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上。要实现显示图形或字体,只需考虑其显示方式,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。当采用按行扫描按列控制的驱动方式时,LED点阵显示屏8行的同名列共用一套列驱动器。行驱动器一行的行线连接到电源的一端,列驱动器一列的列线连接到电源的另一端。应用时还应在各条行线或列线上接上限流电阻。扫描中控制电路将行线的1到 8轮流接通高电位,使连接到各该行的全部LED器件接通正电源,但具体那一个LED导通,还要看它的负电源是否接
31、通,这就是列控制的任务了。当对应的某一列置0电平,则相应的二极管就亮;反之则不亮。例如:如果想使屏幕左上角LED点亮,左下角LED熄灭的话,在扫描到第一行时,第一列的电位就应该为低,而扫描到第八行时第一列的电位就应该为高。这样行线上只管一行一行的轮流导通,列线上进行通断控制,实现了行扫描列控制的驱动方式。 第四章 软件流程在单片机系统中,硬件是系统的基础,软件则是在硬件的基础上对其合理的调配和使用,从而完成应用系统所要完成的任务。软件的设计是设计控制系统的应用程序。其任务是在总体设计和硬件设计的基础上,确定程序结构,分配内RAM资源,划分功能模块,然后进行主程序和各模块程序的设计,最后连接起来
32、成为一个完整的应用程序。在进行系统总体设计时,曾经规划过软件结构,但由于硬件系统尚未仔细确定,软件结构框图十分粗糙,当硬件设计接口扩展及各功能模块与CPU连接关系确定后,就能够具体明确对软件设计的要求。本设计的LED点阵显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED点阵显示屏的扫描显示工作。显示驱动程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初
33、始化)、显示效果处理等工作,由主程序来实现。从有利于实现语言的直观,易于记忆和检查,可读性较好和使语言程序占用较少的单片机存储空间,实时处理系统可以快速的执行指令的角度考虑,本设计中显示屏程序采用C语言编写。41 系统主程序系统主程序的总体结构如图4-1所示。系统的主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后LED点阵显示屏进入开机状态,转入正常的显示。首先是向上滚动显示“单片机是工业中最基本的应用方式”15个汉字,每个字停留时间约1.6s;接着再向上滚动显示“我爱单片机”这5个汉字。由于单片机没有停机指令,所以可以设置系统程序不断地循环执行上述显示效果。系统
34、程序结构属中断方式,绝大多数功能在中断服务子程序中完成。根据总体结构,可将程序划分为几个功能化模块:串行口中断服务程序、多字滚动显示子程序、单字显示子程序、扫描程序。各个模块可进行独立设计、调试和查错,最终再连接成一个整体。这样可方便程序调用,程序整体层次清晰,结构一目了然,方便阅读。开 始系统初始化“上滚屏”显示效果循环扫描显示图4-1 系统主程序的总体结构进入中断定时器赋初值读取行号并增1送新行显示数据消 隐切换显示数据送新行号、打开显示退出中断图4-2 显示驱动程序流程图42 显示驱动程序图4-2为显示驱动程序(显示屏扫描函数)流程图。根据流程图可以编写出相应的显示程序。显示驱动程序在进
35、入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:刷新率(帧频)=T0溢出率 =其中f为晶振频率,t为定时器T0初值(工作在16位定时器模式)。T0初值=2其中N与工作方式有关,本设计定时/计数器工作于方式1,如图4-3所示,方式1构成一个16位定时计数器,即N=16。方式1最大计数值为216=65536 ,若fosc=12MHz,则定时时间范围为165536s。机周时间与主振频率有关,机器周期是时钟周期的12倍,因此,机周时间=12/ fosc。当fosc=12MHz时,1机周=1s。图4-3 定时/计数器T0工作方式1逻辑电路结
36、构图然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。显示程序给出了各控制信号和显示数据,其作用及相互配合关系均已在硬件部分作过介绍,相应的程序部分在清单的注释区内分别进行了说明,在此不再一一详述。系统程序清单见附录二。第五章 系统测试及结果分析一个单片机系统经过总体设计,完成了硬件和软件设计开发。元器件安装后,在系统的程序存储器中写入编制好的应用程序,系统即可运行。但编制好的程序或焊接好的线路不能按预计的
37、那样正常工作是常见的事,多少会出现一些硬件、软件上的错误。这就需要通过调试来发现错误并加以改正。调试可分为硬件调试和软件调试。在允许的条件下,根据本设计系统的需求性首先采用在PC机上用模拟开发软件进行检测和调试,然后进行硬件的组装与调试。51 软件调试软件调试采用脱机调试的方法,即完全用仿真器软件在PC机上对目标电路原理图和程序进行检测和调试。调试过程中单片机相应输入端由通用键盘和鼠标设定,运行状态、各寄存器状态、端口状态等都可以在CRT指定的窗口区域显示出来,以确定程序运行有无错误。调试可按下列步骤进行:一 目标程序纠错该阶段工作通常在目标程序编辑时就完成。一般来说,仿真器软件能给用户输入的
38、程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢出等错误。二 子程序功能调试程序设计通常采用模块程序设计,调试时可对一个个子程序分别进行调试,设置好入口条件,然后采用单步运行或断点运行方式,检查系统CPU现场、RAM和I/O口状态,看程序执行结果是否符合设计要求。三 整体程序综合调试即把各子程序整体连起来进入到综合电路调试,看是否能实现预计的功能显示。在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,数据缓冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出,输入输出状态是否正常等。用软件模拟器调试不需任何在线仿真器,也不需要用户样机,直接就可以在PC机上开
39、发和调试。调试和修改完毕后,对于实时性要求不高的应用系统可以直接使用编程器将软件固化在目标系统ROM中,然后独立投入运行。软件调试结果仿真截图:4052 硬件调试单片机应用系统的硬件调试和软件调试是分不开的,许多硬件故障在软件调试时才能发现,但通常要先排除系统中明显的硬件故障。调试工作可以分为四步:一 目测检查根据硬件逻辑设计图,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,必要时可用万用表检测线路通断情况。二 电源调试 样机的第一次通电测试很重要,若样机中存在电源故障,则加电后将造成器件损坏。调试的方法有两种:一种是断开样机稳压电源的输出端检查空载时电源工作情况;
40、另一种是拔下样机上的主要集成芯片,检查电源的负载能力(用假负载)。确保电源无故障并性能符合设计要求。三 通电检查 在确保电源良好前提下,接通电源。最好在电源与其余电路之间串接一个电流表。若接通后电流很大,必须立即切断电源。电源大得超出正常范围,说明电路中有短路或故障。通电检查的主要目的是看系统是否存在短路或由元器件损坏、装配错误引起的电流异常。四 检查相应芯片的逻辑关系加电后检查各芯片插座上相关引脚的电位,仔细测量相应的输入输出电平是否正常。单片机系统大都是数字逻辑电路,使用电平检查法可首先查出逻辑设计是否正确,选用器件和连接关系是否符合要求等。53 性能分析系统通过调试组装后一般即可正常工作
41、。LED点阵显示屏的刷新频率及显示显示效果是主要的性能指标。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5-1给出了显示屏采用的频率及其对应的定时器T0初值。表51 显示屏刷新率(帧率)与T0初值关系表刷新率/Hz255062.57585100120T0初值OxEC78OxF63COxF830OxF97EOxFA42OxFB1EOxFBEE从理论上来说,24Hz以上的刷新率就能看到连续稳定的显示,刷新率越高,显示越稳定,同时刷新率越高,显示驱动程序占用的CPU时间也越多。实验证明,在目测条件下刷新率40Hz以下的画面看起来闪烁较严重,刷新率50Hz以上的已基本觉察不出画面闪烁,刷
42、新率达到85Hz以上时再增加画面闪烁没有明显改善。显示效果处理的内容和方法非常广泛,根据需求可做变动,在这里不做具体讨论。根据实践证明,这个方案设计的1616点阵LED图文显示屏,结构合理,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。第六章 理论分析计算一电路中为什么要用到三极管8550 因为16个行选通信号是其中一个低电平的为有效,其余为高电平的信号无效,8550是PNP型三极管,低电平信号传送至三极管的基极,则发射结正向偏置,集电结反向偏置,三极管导通,其集电极再将高电平加于LED阵列的对应
43、的行上,即将此行选通;而同时其它高电平端所对应三极管截止,从而所对应LED行线不被选通。由于行驱动电路一条行线上要带动16列的LED进行显示,按每一LED器件20mA电流计算,16个LED同时发光时,就需要1620=320mA的驱动电流,由于三极管有电流放大作用,选用三极管8550作为驱动管可以在逻辑功能和驱动能力上符合LED的驱动要求。二芯片74HC595的端口起什么作用 端口是74HC595芯片中移位寄存器的清零信号输入端,当其为低时移位寄存器的输出全部为0,也就没有数据打入到输出锁存器,即74HC595没有列选信号输出。第七章 系统功能及使用方法一、系统功能通过AT89C51芯片控制一个行驱动器 74HC154和两个列驱动器74HC595来驱动一块16*16点阵LED点阵显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字,采用16*16点阵LED显示模块来组成1616点阵显示模式。显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。二、 使用方法在proteus里双击单片机,出现一个对话框,program file ,点文件夹标志,选取要加入的HEX文件,点击确定,执
限制150内