ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:25.64KB ,
资源ID:6892834      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6892834.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1616点阵LED电子显示屏的方案设计书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

1616点阵LED电子显示屏的方案设计书.docx

1、1616点阵LED电子显示屏的方案设计书封面作者:PanHongliang仅供个人学习三、1616点阵LED电子显示屏的设计1功能要求设计一个室内用1616点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。2方案论证从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。1616的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来

2、扩展端口,按8位的锁存器来计算,1616的点阵需要256832个锁存器。这个数字很庞大,因为我们仅仅是1616的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。具体就1616的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数

3、据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形了。采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。采用串行传

4、输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序、一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两个部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁

5、存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说;它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图3-1为显示屏电路实现的结构框图。3系统硬件电路的设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。(1)单片机系统及外围电路单片机采用89C51或其兼容系列的芯片,采用24MHz或更高频率的晶振,以获得较高的 刷新频率,使显示更稳定。单片机的串口与列驱动器相连,用来送显示数据。P1口低4位与行驱动器相

6、连,送出行选信号;P1.5P1.7口则用来发送控制信号。P1和P2口空着,在有必要时可以扩展系统的ROM和RAM。1616点阵显示屏的硬件原理图如图3-2所示。(2)列驱动电路列驱动电路由集成电路74HC595构成。它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。74HC595的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SER是串行数据的输入端。引脚SCLK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SER的下一个数据打

7、入最低位。移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器。引脚E是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。SCLR信号是移位寄存器的清。输入端,当其为低时移位寄存器的输出全部为0。由于SCLK和RCLK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为Q0Q7,最高位Q7可作为多片74HC595级联应用时,向上一级的级联输出。但因Q7受输出锁存器打入控制,所以还从输出锁存器前引出了Q7,作为与移位寄存器完全同步的级联输出。(3)行驱动电路单

8、片机P1口低4位输出的行号经416线译码器74LSl54译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示,按每一LED器件20mA电流计算,16个LED同时发光时,需要320mA电流,选用三极管8550作为驱动管可满足要求。4系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏的扫描显示工作。显示驱

9、动程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。(1)显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下: 刷新率(帧频)其中fosc为晶振频率,t0为定时器T0初值(工作在16位定时器模式)。然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏

10、,即消隐,等显示数据打人输出锁存器并锁存,然后再输出新的行号,重新打开显示。图3-3为显示驱动程序(显示屏扫描函数)流程图。(2)系统主程序系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示一个图形(),停留约3s;接着向上滚动显示“我爱单片机”5个汉字及1个图形,停留约3s;再向左跑马显示“我爱单片机”这5个汉字及1个图形,然后以“卷帘入”效果隐去图形()。由于单片机没有停机指令,所以可以设置系统程序不断地循环执行上述显示效果。图3-4是系统主程序的流程图。5调试及性能分析LED显示屏硬件电路只要器件质量可靠,引脚焊接正确,一般无需调试即可

11、正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表3-1给出了实验调试时采用的频率及其对应的定时器T0初值。从理论上来说,24 Hz以上的刷新率就能看到连续稳定的显示,刷新率越高,显示越稳定,同时刷新率越高,显示驱动程序占用的CPU时间也越多。实验证明,在目测条件下刷新率40 Hz以下的画面看起来闪烁较严重,刷新率50 Hz以上的已基本觉察不出画面闪烁,刷新率达到85 Hz以上时再增加画面闪烁将没有明显改善。 表3-1 显示屏刷新率(帧频)与T0初值关系表(24 MHz晶振)刷新率Hz25506257585100120T

12、0初值0xEC780xF63C0xF8300xF97E0xFA420xFB1E0xFBEE显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可对照源程序自行分析。这个方案设计的1616点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。6控制源程序清单以下是1616点阵LED电子显示屏的源程序,分别采用C语言及汇编语言编写。C程序在Keilt uVision2 V2.30(C51.exeV7.0)环境下调试通过。/*-1616点阵LED显示屏程序-*/

13、#include#define BLKN 2 /*列锁存器数*/sbit G=0x97。 /*P1.7为显示允许控制信号端口*/sbit RCLK=0x96。 /*P1.6为输出锁存器时钟信号端*/sbit SCLR=0x95。 /*P1.5为移位寄存器清0端*/void delay(unsigned int)。 /*延时函数*/unsigned char dispram32。 /*显示缓存*/*- 主函数void main(void)-*/void main(void)unsigned char code Bmp32= /*字模表*/0xF9, 0xB7, 0xC7, 0xAF, 0xF7,

14、 0xB7, 0xF7, 0xB7, 0xF7, 0xBF, 0x00, 0x01, 0xF7, 0xBF, 0xF7, 0xB7, 0xF1, 0xD7, 0xC7, 0xCF, 0x37, 0xDF, 0xF7, 0xAF, 0xF6, 0x6D, 0xF7, 0xF5, 0xD7, 0xF9, 0xEF, 0xFD/*我*/ ,0xFF, 0x07, 0xC0, 0x6F, 0xED, 0xEF, 0xF6, 0xDF, 0xC0, 0x01, 0xDD, 0xFD, 0xBD, 0xFF, 0xC0, 0x03,0xFB, 0xFF, 0xF8, 0x0F, 0xF3, 0xDF, 0

15、xF4, 0xBF, 0xEF, 0x3F, 0x9C, 0xCF, 0x73, 0xF1, 0xCF, 0xFB/*爱*/, 0xF7, 0xDF, 0xF9, 0xCF, 0xFB, 0xBF, 0xC0, 0x07, 0xDE, 0xF7, 0xC0, 0x07, 0xDE, 0xF7, 0xDE, 0xF7,0xC0, 0x07, 0xDE, 0xF7, 0xFE, 0xFF, 0x00, 0x01, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF/*单*/, 0xFF, 0xBF, 0xEF, 0xBF, 0xEF, 0xBF, 0xEF

16、, 0xBB, 0xE0, 0x01, 0xEF, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF,0xE0, 0x0F, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xDF, 0xEF, 0xDF, 0xEF, 0xBF, 0xEF, 0x7F, 0xEF/*片*/, 0xEF, 0xFF, 0xEF, 0x07, 0xEF, 0x77, 0x01, 0x77, 0xEF, 0x77, 0xEF, 0x77, 0xC7, 0x77, 0xCB, 0x77,0xAB, 0x77, 0xAF, 0x77, 0x6E, 0xF7, 0xEE, 0xF5, 0

17、xED, 0xF5, 0xED, 0xF5, 0xEB, 0xF9, 0xEF, 0xFF/*机*/, 0xF8, 0x3F, 0xE7, 0xCF, 0xDF, 0xF7, 0xBF, 0xFB, 0xB3, 0x9B, 0x73, 0x9D, 0x7F, 0xFD, 0x7F, 0xFD,0x6F, 0xED, 0x67, 0xCD, 0xB3, 0x9B, 0xB8, 0x3B, 0xDF, 0xF7, 0xE7, 0xCF, 0xF8, 0x3F, 0xFF, 0xFF/* */ 。register unsigned char i,j,k,l。SCON=0x00。 /*串行工作模式0:

18、移位寄存器方式*/TMOD=0x01。 /*定时器T0工作方式1:16位方式*/TR0=1。 /*启动定时器T0*/P1=0x3F。 /* P1端口初值:允许接收、锁存、显示*/IE=0x82。 /*允许定时器T0中断*/while(1) delay(500)。 /*延时2s*/ for(i=0。i32。i+) /*显示效果:卷帘出*/ disprami=Bmp5i。 if(i%2)delay(100)。 /*/ delay(500)。 for(i=0。i6。i+) /*显示效果:上滚屏*/ for(j=0。j16。j+) for(k=0。k16。k+) dispramk*BLKN=dispr

19、am(k+1)*BLKN。 dispramk*BLKN+1=dispram(k+1)*BLKN+1。 dispram30=Bmpij*BLKN。 dispram31=Bmpij*BLKN+1。 delay(100)。 /*/ delay(500)。 for(i=0。i6。i+) /*显示效果:左跑马*/ for(j=0。j2。j+) for(k=1。k9。k+) for(l=0。l16。l+) dispraml*BLKN=dispraml*BLKN7。 dispraml*BLKN+1=dispraml*BLKN+1(8-k)。 delay(100)。 /*end (k=0。k16。k+)*/

20、/*end for(i=0。i。i+)*/*/ delay(500)。 for(i=0。i32。i+) /*显示效果:卷帘入*/ disprami=0x00。 if(i%2)delay(100)。 /*/ for(i=0。i32。i+) /*显示效果:卷帘入*/ dispram31-i=0xff。 if(i%2)delay(100)。 /*/ /*end while(1)*/void delay(unsigned int dt) /* 延时函数 */ register unsigned char bt。 for(。dt。dt-) for(bt=0。bt255。bt+)。 void leddis

21、play(void) interrupt 1 using 1/* 显示屏扫描(定时器T0中断)函数 */ register unsigned char i,j=BLKN。 TH0=0xFB。 /*设定显示屏刷新率每秒62.5帧*/ TL0=0x1E。 i=P1。 /*读取当前显示的行号*/ i=+i&0x0F。 /*行号加1,屏蔽高4位*/ do j-。 SBUF=disprami*BLKN+j。 /*送显示数据*/ while(!TI)。 TI=0。 while(j)。 /*完成一行数据的发送*/ G=1。 /*消隐(关闭显示)*/ P1&=0xF0。 /*行号端口清0*/ RCLK=1。

22、/*显示数据打入输出锁存器*/ P1=i。 /*写入行号*/ RCLK=0。 /*锁存显示数据*/ G=0。 /*打开显示*/ SCLR=1。 以下为用汇编语言编写的字符显示控制程序:。 *。* 个1616点阵电子屏字符显示器 *。 *。显示字用查表法,不占内存,字符用1616共阳LED点阵。效果:向上滚动显示19个字,再重复循环。R1:查表偏址寄存器,B:查表首址,R2:扫描地址(000FH)。R3:滚动显示时控制移动速度,单字显示可控制静止显示的时间。 *。* 中断入口程序 *。 *ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0ORG

23、 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI。 *。* 初始化程序 *。 *。 *。* 主程序 *。 *START:MOV 20H,#00H 。清标志,00H为第16行开始扫描标志,01为1帧扫描结束标志 MOV A,#0FFH MOV P1,A 。端口初始化 MOV P2,A MOV P3,A MOV P0,A CLR P1.6 。串行寄存器输入打入输出控制位 MOV TMOD,#01H 。使用T0作16位定时器,行扫描用。 MOV TH0,#0FCH 。1ms初值(12MHz) MOV TL0,#18H MOV SCON,#00H 。串

24、口0方式传送显示字节 MOV IE,#82H 。T0中断允许,总中断允许 MOV SP,#70HMAIN: LCALL DIS1 。显示准备,黑屏,1.5s MOV DPTR,#TAB LCALL MOVDISP 。向上滚动显示一页(8个字) INC DPH LCALL MOVDISP 。向上滚动显示一页(8个字) INC DPH LCALL MOVDISP 。向上滚动显示一页(8个字) AJMP MAIN。 *。* 多字滚动显示子程序 *。 *。每次8个字,入口时定义好DPTR值MOVDISP:MOV B,#00H 。向上移动显示,查表偏址暂存(从00开始)DISLOOP:MOV R3,#0

25、7H 。移动速度DISMOV:MOV R2,#00H 。第0行开始 MOV R1,B SETB TR0 。开扫描(每次一帧)WAITMOV:JBC 01H,DISMOV1 。标志为1扫描一帧结束(16ms为一帧,每行1ms) AJMP WAITMOVDISMOV1:DJNZ R3,DISMOV 。一帧重复显示(控制移动速度) INC B 。显示字的下一行(每行2字节) INC B MOV A,R1 。R1为0,8个字显示完 JZ MOVOUT AJMP DISLOOPMOVOUT:RET 。移动显示结束。 *。* 单字显示子程序 *。 *;显示表中某个字DIS1: MOV R3,#5AH 。静

26、止显示时间控制(16ms*#=1.6s)DIS11: MOV R2,#00H 。一帧扫描初始值(行地址从000FH) MOV DPTR,#TAB 。 取表首址 MOV R1,#00H 。 查表偏址(显示第一个字) SETB TR0 。 开扫描(每次一帧)WAIT11:JBC 01H,DIS11 。为1,扫描一帧结束 AJMP WAIT11DIS111: DJNZ R3,DIS11 RET。 *。* 扫 描 程 序 *。 *。1ms刷新一次,每行显示1s。INTT0: PUSH ACC MOV TH0,#0FCH 。1ms初值重装 MOV TL0,#18H JBC 00H,GOEND 。16行扫

27、描标志为1,结束 INC R1 。取行右边字节偏址 MOV A,R1 MOVC A,A+DPTR 。查表 MOV SBUF,A 。串口0方式发送WAIT: JBC TI,GO 。等待发送完毕 AJMP WAITGO: DEC R1 。 取行左边字节偏址 MOV A,R1 MOVC A,A+DPTR MOV SBUF,AWAIT1: JBC TI,GO1 AJMP WAIT1GO1: SETB P1.7 。关行显示,准备刷新 NOP 。串口寄存器数据稳定 SETB P1.6 。产生上升沿,行数据打入输出端 NOP NOP CLR P1.6 。恢复低电平 MOV A,R2 。修改显示行地址ORL A,#0F0H 。 修改显示行地址MOV R2,A 。 修改显示行地址 MOV A,P1 。 修改显示行地址 ORL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1