基于单片机的LED点阵显示课程设计.docx
《基于单片机的LED点阵显示课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的LED点阵显示课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于单片机的LED点阵显示课程设计
1LED电子显示屏原理
1.1LED电子显示屏概述
LED电子显示屏(LightEmittingDiodePanel)是由几百--几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。
利用不同的半导体材料可以制造不同色彩的LED像素点。
目前应用最广的是红色、绿色、黄色。
而蓝色和纯绿色LED的开发已经达到了实用阶段。
LED显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
LED显示屏分为图文显示屏和条幅显示屏,均由LED矩阵块组成。
图文显示屏可与计算机同步显示汉字、英文文本和图形;而条幅显示屏则适用于小容量的字符信息显示。
LED显示屏因为其像素单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。
因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
1.2LED显示屏动态显示原理
LED点阵显示系统中各模块的显示方式:
有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。
点阵式LED汉字广告屏绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。
将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。
最典型的例子就是电影放映机。
在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。
以8×8点阵模块为例,说明一下其使用方法及控制过程。
图1中,水平线Y0、Y1……Y7叫做行线,接内部发光二极管的阳极,每一行8个LED的阳极都接在本行的行线上。
相邻两行线间绝缘。
同样,竖直线X0、X1……X7叫做列线,接内部每列8个LED的阴极,相邻两列线间绝缘。
在这种形式的LED点阵模块中,若在某行线上施加高电平(用“1”表示),在某列线上施加低电平(用“0”表示)。
则行线和列线的交叉点处的LED就会有电流流过而发光。
比如,Y7为1,X0为0,则右下角的LED点亮。
再如Y0为1,X0到X7均为0,则最上面一行8个LED全点亮。
图1:
(8×8)点阵LED显示模块结构原理及引脚图
LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号.如5x7点阵显示器用于显示西文字母.5×8点阵显示器用于显示中西文,8x8点阵可以用于显示简单的中文文字,也可用于简单图形显示。
用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过PC机或单片机控制驱动。
1.3Proteus简介
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
(1)智能原理图设计(ISIS)
(2)完善的电路仿真功能(Prospice)
(3)独特的单片机协同仿真功能(VSM)
(4)实用的PCB设计平台
2硬件设计
2.1总体设计思路
设计思路如图2:
图2:
总体思路框图
2.2设计论证
图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并列传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一列数据。
为了达到重叠处理的目的,列数据的显示就需要具有所存功能。
经过上述分析,就可以归纳出列驱动器电路应具有的功能。
对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
2.3系统硬件选择
由图2可知此次设计的硬件选择如下:
AT89C52单片机1个,锁存器74LS373芯片1片,非门74LS04芯片1片,4线-16线译码器741454芯片2片,移位寄存器74LS595芯片2片,最后需要构成16*32点阵的MATRIX-8X8-RED芯片4片以及电源和地。
2.4电路设计原理图
本设计的电路设计原理图如图3所示:
图3:
16*32LED点阵设计电路原理图
由于proteus里没有现成的16*32的点阵芯片,所以我选择4片MATRIX-8X8-RED芯片拼成一块16*32的点阵芯片。
3软件设计
显示屏软件模块包括:
初始化程序、主程序、多字滚动、显示程序、扫描程序。
显示程序的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
软件设计中,显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。
显示驱动器程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
3.1显示驱动程序设计
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=1/16×T0溢=1/16×f/12(65536-t)
其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。
显示驱动程序(显示屏扫描函数)流程图如图4所示:
图4:
显示驱动程序流程图
3.2系统主程序设计
本设计的系统软件能使系统LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
图形或文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约几秒;接着向上滚动显示“--------”这几个汉字及一个图形,然后以“卷帘入”效果隐去图形。
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
如果想改变些事内容,先用字模产生字代码,将用这段代码覆盖原来的代码,即可显示你想要的内容。
系统主程序流程图如图5所示:
图5:
系统主程序流程图
3.3源程序
;主程序如下:
ORG0000H
SJMPSTART;程序开始从START执行
ORG0030H;程序从0030H单元开始存放
START:
MOV60H,#0;60H单元清0,60H单元用于软件延时时的计数
MOV61H,#0;61H单元清0,61H单元用于软件延时时的计数
D0:
MOVR0,#165;中文字幕往左滚动一次需要读取数据165次
MOVDPTR,#TABLE1;字模表1首址赋指针
ACALLDISPLAY;调用显示子程序
MOVR0,#256;英文部分往左滚动显示完一次需读取数据256次
MOVDPTR,#TABLE2;字模表2首址赋指针
ACALLDISPLAY;调用显示子程序
AJMPD0;反复显示
;显示程序如下:
DISPLAY:
MOVR2,#10;每屏字幕扫描显示10次
LOOP0:
MOVR3,#32;总共扫描32列
CLRP3.2;移位寄存器74LS595锁存信号无效(为0)
MOVR5,#00H;列序号送寄存器,从第0列开始显示
SCAN1:
MOVR1,#00H;偏移量初值为0
LOOP1:
MOVR4,#2;每列显示数据有两字节,每次发送一字节,发两次
LOOP2:
MOVA,R1;偏移量寄存器内容送A
MOVCA,@A+DPTR;取字模数据送A
MOVSBUF,A;A中内容送串行口输出
JNBTI,$;检查数据是否已发送完,没发送完,继续等待
CLRTI;发送完毕,清串行口中断标志
INCR1;偏移量加1
DJNZR4,LOOP2;还没发送完两字节,继续发送
NOP
SETBP3.2;移位寄存器74LS595数据锁存信号有效(为1),锁存单片机送出的数据
CLRP3.3;移位寄存器74LS595输出允许信号有效,将锁数
据输出
NOP
NOP
MOVP1,R5;列编号送P1口,使该列显示数据
MOV60H,#5;开始软件延时,60H单元置初值5
DL1:
MOV61H,#20;61H单元置初值20
DL2:
DJNZ61H,DL2
DJNZ60H,DL1;软件延时,让一列数据的显示维持一点时间
INCR5;列编号加1
CLRP3.2;移位寄存器74LS595锁存信号无效(为0)
SETBP3.3;移位寄存器74LS595输出允许信号无效(为1)
DJNZR3,LOOP1;32列还没扫完,继续扫描
DJNZR2,LOOP0;每屏字幕没扫完10次,继续
INCDPTR;指针加1
INCDPTR;指针加1,使显示字幕往左移动
DJNZR0,DISPLAY;R0不为0,继续读取数据扫描显示
RET;子程序返回
TABLE1:
;黑屏
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;天
DB02H,01H,42H,01H,42H,02H,42H,04H,42H,08H,42H,30H,42H,0C0H,7FH,00H,
DB42H,0C0H,42H,30H,42H,08H,42H,04H,0C2H,02H,46H,03H,02H,02H,00H,00H
;道
DB02H,00H,42H,02H,22H,04H,33H,0FH,00H,04H,20H,02H,0AH,0FDH,6DH,25H,
DB35H,25H,25H,25H,25H,25H,65H,25H,0AFH,0FDH,24H,03H,00H,02H,00H,00H
;酬
DB4FH,0FEH,48H,0A4H,7FH,24H,48H,24H,7FH,
DB24H,48H,0A4H,0DFH,0FFH,48H,02H,
DB02H,0CH,0FFH,0F0H,02H,00H,3FH,0FCH,
DB02H,00H,0FFH,0FFH,00H,00H,00H,00H
;勤
DB40H,02H,47H,0A2H,0F4H,0AAH,54H,0AAH,
DB5FH,0FEH,54H,0AAH,0F4H,0AAH,47H,0A3H,
DB48H,02H,08H,0CH,0FFH,0F0H,08H,02H,
DB08H,01H,1FH,0FEH,08H,00H,00H,00H
TABLE2:
;h
DB00H,00H,00H,00H,30H,04H,7FH,0FCH,
DB0FFH,0FCH,03H,04H,03H,00H,03H,00H
DB03H,00H,03H,00H,03H,04H,03H,0FCH,01H,
DB0FCH,00H,04H,00H,00H,00H,00H
;n
DB00H,00H,00H,00H,03H,04H,03H,0FCH,
DB03H,0FCH,03H,04H,03H,00H,03H,00H
DB03H,00H,03H,00H,03H,04H,03H,0FCH,
DB01H,0FCH,00H,04H,00H,00H,00H,00H
;i
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB00H,00H,04H,03H,04H,1BH,0FCH
DB1BH,0FCH,1BH,0FCH,00H,04H,00H,04H,00H,
DB00H,00H,00H,00H,00H,00H,00H
;e
DB00H,00H,00H,00H,01H,0F0H,03H,0F8H,
DB06H,0CCH,0CH,0CCH,0CH,0CCH,0CH,0CCH
DB0CH,0CCH,0CH,0CCH,0CH,0CCH,06H,0CCH,
DB03H,0C8H,01H,0C0H,00H,00H,00H,00H
4Proteus仿真
本课程设计仿真利用proteus仿真步骤如下:
(1)选择设计图纸的到小
(2)选取仿真所需的元器件
选取元器件的方式是,单击元器件放置按钮“P”。
(3)把元器件放到图纸的合适位置,进行布线。
(4)编辑窗口连接端子
(5)分别对各元器件的属性值进行设置,单击
按钮,进行电气检测,查看接线是否合理,说明硬件电路已经顺利的完成。
(6)双击单片机,将用伟福编译成功的程序烧进单片机。
单击proteus中的play进行仿真。
本课程设计电路仿真图如图7所示:
图7:
16*32点阵显示仿真图
附汉字仿真效果图:
附字母仿真效果图:
5心得体会
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在设计中遇到了很多专业知识问题,最后在熊老师的辛勤指导下,终于游逆而解。
此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅。
同时,在陈老师的身上我们学也到很多实用的知识,在此我们表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
6参考文献
1、张义和陈敌北编著《例说8051》人民邮电出版社
2、周越主编《单片机技术实验实训教程》中国水利水电出版社
3、周越主编《单片机应用技术》中国水利水电出版社
4、李全利编《单片机原理及应用技术》高等教育出版社
5、李忠国陈刚编著《单片机应用技能实训》人民邮电出版社
6、赵建领编著《Protel电路设计与制版宝典》电子工业出版社
7、郭振民 丁红主编《电子设计自动化EDA》中国水利水电出版社
8、周润景《Proteus在MCS-51&ARM7系统中的应用》电子工业出版社
2602465A8斨243225F02异22367575F坟92147453E2叢238765D44嵄BZ3397684B8蒸X283416EB5溵2557763E9揩