《[毕业设计精品]点阵汉字显示系统设计.doc》由会员分享,可在线阅读,更多相关《[毕业设计精品]点阵汉字显示系统设计.doc(20页珍藏版)》请在三一办公上搜索。
1、 课程设计课题名称 点阵汉字显示系统设计 姓 名 学 号 班 级 电子 专 业 电子技术系 指导教师 完成日期 2009. 12.24 点阵汉字显示系统设计摘要:本文阐明用单片机控制单色显示屏的方法,对LED显示模块单元如何进行行列信号控制及信号传输中的驱动问题进行了研究。讨论了单片机控制系统中关键的数据处理以及发送问题,结果表明采用并行数据输入、串行数据及同步时钟输出的专用电路可大大减少CPU的辅助时间,提高数据的发送速度。关键词 LED;单片机;显示屏;驱动;扫描A LED Display System Control Base On MCUStudent: XU YU Teacher:
2、SHEN ZHICHUNAbstract:This text clarifies to use a singlechip control monochrome manifestation to hold of method, show the mold piece how the unit carry on the row or column signal control and signal to deliver to the LED medium of drove a problem to research. Discussing a problem of singlechip in a
3、control system how dose it processing the key data and sending out, result indicate adoption parallel communication, string data in line and synchronous the clock outputs appropriation electric circuit can reduce CPU assistant time consumedly, the exaltation data sends out speed.Keywords:LED;Surface
4、 Mount Assemblies;Display;Driver;Scan 目 录 摘要2一课程提出的背景 4二设计内容与要求 4三系统整体方案设计 4四.系统硬件电路的设计 64.1 单片机系统及外围电路4.2 列驱动电路4.3 行驱动电路4.4 硬件电路五基本显示原理 85.1 点阵原理5.2 移位锁存器74HC595原理5.3 达林顿晶体管ULN2803简介 六程序设计116.1 定时中断程序6.2 串行中断程程序七程序清单14八总结,感悟19九参考文献20一课题提出的背景在大型商场、车站、码头、地铁站以及各类办事窗口等越来越多的场所需要用LED点阵显示图形和汉字。LED行业已成为一个快
5、速发展的新兴产业,市场空间巨大,前景广阔。随着信息产业的高速发展,LED显示作为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所,例如户内外公共场所广告宣传、机场车站旅客引导信息、公交车辆报站系统、证券与银行信息显示、餐馆报价信息豆示、高速公路可变情报板、体育场馆比赛转播、楼宇灯饰、交通信号灯、景观照明等。显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。二设计内容与要求 构建一个单片机应用系统,用来控制点阵汉字显示,汉字显示内容“天津电子信息职业技术学院”,单片机的应用系统由硬件和软件两部分组成。硬件系统需要围绕单片机芯片组建一个能完成特定应
6、用功能的硬件组合实体。软件系统需要借助其它微型计算机配之以相应的软件进行编程。最终通过LED发光二极管构成16*16的点阵,来显示汉字,显示的过程和显示的内容也可以自己发挥。三系统总体方案设计LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;第16行之后,又重新燃亮第1行,
7、反复轮回。当这样轮回的速度足够快(每秒24次以上),每行LED的点亮时间占总时间的116,由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。采用串行传输中列数据准备和
8、列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。经过上述分析,可以归纳出列驱动器电路应具备的主要功能:对数据准备来说,它应能实现串入并出的移位功能;对数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打人并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。同时为了LED显示的亮度,采用8行扫描,
9、每个汉字上面有2个16列驱动器驱动,列驱动器的位置应该是在第1行跟第9行,即每个16*16的汉字点阵是有4个8*8的点阵组成的阵列,扫描的时候同时扫描显示第1行跟第9行,第二次扫描的时候显示第2行跟第10行,以此类推,最后显示第8行跟第16行,如图1所示:第1行全亮 | 第2行不亮 | 第3行不亮 | 第4行不亮 | 第5行不亮 | 第6行不亮 | 第7行不亮 | 第8行不亮 | 第9行全亮 | 第10行不亮 | 第11行不亮 | 第12行不亮 | 第13行不亮 | 第14行不亮 | 第15行不亮 | 第16行不亮 | 图1共阳型LED点阵单元(8X8)的结构示意图如图2,由行输入高电平点亮。
10、 图2 LED点阵单元结构示意图四系统硬件电路的设计硬件电路大致上可以分为单片机系统及外围电路、列驱动电路和行驱动电路三部分。1.单片机系统及外围电路本系统由AT89C52构成单片机最小应用系统同时配有110592 MHz晶振和按键复位电路等。系统外扩的一片Flash存储器29F040为数据存储器,可用来存储由PC机串口送来的点阵信息(通过软件将图像或文字转 换成与LED显示屏的像素相对应的点阵信息)。该Flash存储器是一种非易失性存储器,它在供电电源关闭后仍能保持片内信息。由于29F040的容量为 512 KB(该芯片内部由8个64 Kbyte的读写块组成,可分块进行读、写和擦除等操作),
11、而AT89C52只能管理64KB的数据空间,所以,需将29F040分成8页,每页 64KB。其页码可由单片机的P32P34来选择。另外,采用MAX232可完成RS232与TTL电平的转换,以便使PC机与单片机交换信息。2. 列驱动电路列输入驱动由八个8位串行输入,串行或并行输出三态移位寄存器74HC595实现。该芯片具有串行输入、并行输出两个独立的时钟信号。输入数据在串行移位时钟SRCLK上升沿由串行输入端SER输入到芯片内部串行移位寄存器中,同时,SQH端串行输出;在锁存时钟信号RCLK上升沿到来时,芯片将内部串行移位寄存器8位数据并行输出。正常工作时,应将复位端SRCLR与使能端RCLK分
12、别接高电平、低电平。单片机输出信号直接与串入并出移位寄存器74HC595的锁存器输出端连接。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿将发生移位,并将SI的下一个数据打入最低位。移位后的各位信号出现在各移位寄存器的输出端,也就是输出寄存器的输入端。RCK是输出锁存器的打入信号,器上升沿将移位寄存器的输出打入输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。SCLR信号是移位寄存器的清0输入端,当其为低时移位寄存器的输出全为O。由于SCK和RCK两个
13、信号是相互独立的,所以能够做到输入串行移位与输出锁存器互不干扰。芯片的输出端为QA-QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。但因QH受输出锁存器打入控制,所以还从输出锁存器前引出了QH,作为与移位寄存器完全同步的级联输出。3行驱动电路 每一路输出端与16x64点阵显示器对应的每一行之间用ULN2803将电流信号放大,本文选用的是达林顿晶体管。这样,74HC595某一输出脚为低电平时,对应的三极管发 射极为高电平,从而使点阵显示器的对应行也为高电平。4硬件电路图832点阵驱动电路示意图4字节字模数据扫描码32*8扫描方式示意图五基本显示原理一个国标汉字是由16X1
14、6即256个点(像素)来构成的,显示一个汉字该亮哪些点这些复杂的工作都交给取模软件来完成,同时,取模软件也负责把要显示的汉字转化成程序中要用到的显示代码,代码以一定的规律表征了该亮的点(一般用“1”表示)与不该亮的点(一般用“0”表示),一共256位。单片机负责将这些代码一段一段有规律地送到LED屏,比如第一次输出表示第1列的16位代码点亮第1列、紧接着再输出16位代码去点亮第2列直到点亮第16列然后再重新点亮第1列,如此循环,就完成了这个汉字的显示。单片机输出的速度足够快时,由于视觉暂留现象使得人眼在同一时刻感受到了这16列输出的信息,也就是看到了这个汉字。由于AT89S52单片机是8位总线
15、结构,一次不能输出16位代码以显示完整的一列,这样我们把一个字拆分为上下两部分,一次送8位,一共送32次,这样同样完成了一个汉字的显示。事实上这个汉字区域也可以是在256象素范围内的任何图形。再结合硬件电路来理解本文的LED屏:显示代码是通过驱动电路送至LED屏的,列的切换则是通过ULN2803依次轮流导通来实现的,也就是扫描。1.点阵原理 点阵内部结构及外形如下,8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则
16、第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮。 行(从上到下依为)行1行2行3行4行5行6行7行8引脚号9148121725列(从左到右依为)列1列2列3列4列5列6列7列8引脚号1334106111516表1 LG12088BH型点阵单元的引脚排列LG12088BH型点阵单元2移位锁存器74HC595原理 74HC595 是8位串行输入,并行输出(锁存,3态) 移位寄存器74HC595外形及内部逻辑结构图74HC595特点: 驱动
17、电流大 速度快,最高频率 工作电压范围:2.06.0V 低输入电流:1.0A 高抗噪声度极限参数:电源电压Vcc 最大值7.0V每个输出端输入电流 IIN = 35mA 每个输出端输出电流IOUT = 45mA 存储温度To -65150引脚功能:15,1,2,3,4,5,6,7. QAQH 三态锁存输出。8. GND地 。 9. SQH串行输出。10. RESET 低电平有效,使移位寄存器输出清零,对缓冲器无影响。11. SC 移位寄存器输入时钟,上升沿使串行输入数据进入移位寄存器。12. LC 锁存器输入时钟,上升沿锁住移位寄存器的数据。13. OE 低电平有效,使锁存器的数据输出。高电平
18、使输出并行输出端变为高阻态。14. IN 串行数据输入端。16. Vcc 电源74HC595有3层结构: 第一层为移位D触发器; 第二层为锁存D触发器; 第三层为输出3态门; 当复位信号为0时,移位D触发器清0; 当移位脉冲从L-H时,第一个移位D触发器的Q=D; 其它的Qn=Qn-1; 当锁存脉冲从0-1时,第二层为锁存D触发器的输出=/输入; 当OE=1时,595的输出为高阻态; 当OE=0时,595的输出为第二层为锁存D触发器的输出的反相; 3. 高电压大电流八位达林顿管ULN2803 ULN2803是达林顿管输出器件,在电路中能起到大电流输出和高压输出作用 显示屏电路框图六程序设计程序
19、中需要使用两个计时器,一个用于扫描定时,定时时间到时输出1帧显示数据,另一个用于循环显示7个汉字,定时时间到时调整字模数据起点,从而改变显示字符。第二个计时器可以在第一个定时中断中设置一个计数器,达到预定值后调整字模数据起点。(1) 定时中断程序 任务:启动下一帧数据的发送(发送本帧字模数据的第一个字节) 为每个字符显示时间(ZFJS)计数,当达到预定值时将显示字符编号(ZF)加1.NNYY定时中断入口保护现场恢复计数初值取字模数据发送字模数据调整字模的指针字符显示计时时间到?字符号+1字符号*7字符号=0恢复现场返回CTC: PUSH ACC PUSH B MOV TH0, #CTH MOV
20、 TL0, #CTL CLR A MOVC A, A+DPTR INC DPTR MOV SBUF, A INC ZFJS MOV A, ZFJS CJNE A, #YS, CTCR MOV ZFJS, #0 INC AF MOV A, ZF CJNE A, #7, CTCR MOV ZF, #0CTCR:POP B POP ACC RETI图4 定时计数器定时中断程序框图与程序(2)串行中断程程序任务:发送的字节数(JXJS)为02时,继续发送字模数据,每次发送后发送字节数(JZJS)加1。 发送的字节数(JZJS)为3时,4字节的字模数据已发送完,发送扫描码(SMM),发送字节数再加1。
21、发送的字节数(JZJS)为4时,本帧数据全部发送完成,由P3.2产生一个RCLK脉冲,使移位寄存器锁存数据,同时检查一个字符的全部8行数据是否都发送完成,若是则调整字模数据指针(DPTR)指向本字符字模数据的起点。NY串行中断入口保护现场取发送字节数字节数4?字符号8?扫描行0调整字模指针返回SHUCHU: PUSH ACCCLR TIMOV A,JZJSCJNE A,#4,SHUCHU1CLR RCLKMOV JZJS,#0INC SMJSMOV A,SMJSSETB RCLKCJNE A,#8,SCRMOV SMJS,#0MOV A,ZFMOV B,#32MUL ABMOV DPTR,#X
22、UADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,ASJMP SCRSHUCHU1:CJNE A,#3,SHUCHU2MOV A,SMMMOV SBUF,ARL AMOV SMM,ASJMP SHUCHU3SHUCHU2: CLR AMOVC A,A+DPTRMOV SBUF,AINC DPTRSHUCHU3: INC JZJSSCR: POP ACCRETI 取扫描行数字节计数器0发送一个锁存脉冲字符号=0恢复现场字节数3?取扫描码输出扫描码扫描移位取字模数据发送字模数据字模指针+1YNYYN图5 串行中断程序框图与程序注意:串行中断首先是在定时中断中向
23、串行口发送了第一字节,串行口发送完成后产生的。串行中断程序继续向串行口发送数据,每当串行口发送完成后继续产生中断。当字节计数器达到4后,本帧数据发送完毕,不再向串行口发送数据,因此也就不会再有串行中断产生,直到定时计数器中断发起下一帧数据的传送。定时中断发送一字节字模数据串行中断发送第二字节字模数据串行中断发送第三字节字模数据串行中断发送第四字节字模数据中行中断发送扫描码串行中断不再发送串行数据串行口发送1字节串行口发送1字节串行口发送1字节串行口发送1字节串行口发送1字节串行口发送1字节 图6 一帧数据的发送过程示意图七程序清单由于显示工作都安排在中断中完成,主程序的工作只是对定时计数器控制
24、寄存器,串行口控制寄存器进行设置,同时开放定时计数器0和串行中断,启动定时计数器0汉字显示ORG 0000HLJMP MAINORG 000BH ; 定时计数器0中断程序矢量地址SJMP CTC ORG 0023H ;串行中断程序矢量地址SJMP SHUCHU主程序MAIN: MOV TMOD,#01H ;设置定时计数器0为工作模式1MOV TH0,#CTH ;设置计数器初值MOV TL0,#CTLMOV SCON,#00H ;设置串行口工作模式MOV SMM,#01 ;扫描码初值MOV SMJS,#0 ;扫描行计数初值MOV JZJS,#0 ;发送字节计数初值MOV DPTR,#XU ;字模
25、表起点MOV ZF,#0 ;先显示第0个字符SETB TR0 ;启动定时计数器0SETB ET0 ;开定时计数器0中断SETB ES ;开串行口中断SETB EA ;开总中断定时计数器0中断程序入口CTC: PUSH ACC ;保护现场PUSH BMOV TH0,#CTH ;重置计数器初值MOV TL0,#CTLCLR A ;取字模数据MOVC A,A+DPTRINC DPTR ;字模指针加1MOV SBUF,A ;发送字模数据INC ZFJS ;字符显示时间计数器加1 MOV A,ZFJS ;判断字符显示时间是否达到预定值(YS)CJNE A,#YS,CTCR MOV ZFJS,#0 ;达到
26、字符显示时间,字符显示时间计数器=0INC ZF ;字符编号加1MOV A,ZF ;字符编号=7,说明7个字符已显示完CJNE A,#12,CTCRMOV ZF,#0 ;从头开始显示CTCR: POP B ;恢复现场POP ACCRETI ;中断返回串行口中断服务程序SHUCHU: PUSH ACC ;保护现场CLR TI ;清TI标志MOV A,JZJS ;取发送字节计数CJNE A,#4,SHUCHU1 ;本帧未发送完,转SHUCHU1待添加的隐藏文字内容2CLR RCLK ;本帧发送完,输出一个锁存脉冲下降沿MOV JZJS,#0 ;字节计数器清零INC SMJS ;扫描行加1MOV A
27、,SMJS ;检查8行是否扫描完SETB RCLK ;输出一个锁存脉冲上升沿CJNE A,#8,SCR ;未扫描完返回MOV SMJS,#0 ;已扫描完,恢复扫描计数MOV A,ZF ;根据字符计数器调整数据指针ZFMOV B,#32 ;每个汉字字模为32字节MUL ABMOV DPTR,#XUADD A,DPL ;调整指针MOV DPL,AMOV A,BADDC A,DPHMOV DPH,ASJMP SCRSHUCHU1: CJNE A,#3,SHUCHU2 ;本帧字模未发送完,输出扫描码MOV A,SMM ;本帧字模已发送完,取出扫描码MOV SBUF,A ;发送扫描码RL A ;扫描码移
28、位MOV SMM,ASJMP SHUCHU3SHUCHU2: CLR A ;取字模数据MOVC A,A+DPTRMOV SBUF,A ;发送INC DPTR ;指针指向下一位数据SHUCHU3: INC JZJS ;字节计数器加1SCR: POP ACC ;恢复现场RETI ;中断返回变量,常量,字模数据设置SMJS DATA 22H ;扫描计数器JZJS DATA 23H ;输出字节计数器SMM DATA 24H ;扫描码ZFJS DATA 25H ;每个字符显示时间计数器ZF DATA 26H ;当前输出字符编号RCLK BIT P3.2 ;移位寄存器锁存端连接在P3.2YS EQU 20
29、0 ;字符显示时间计数CT EQU 65535-1000*3;12MHz ; 主频时定时器初值计算公式化简CTH EQU CT/256 ;定时计数器0初值高位CTL EQU CT MOD 256 ;定时计数器0初值低位XU: DB 40H, 10H,00H, 02H,40H, 10H, 08H, 42H; 许DB 40H, 10H, 0FCH, 33H, 40H, 12H, 40H, 12HDB 40H, 14H, 40H, 04H,40H, 18H ,40H, 00HDB 40H, 10H, 44H, 0F0H, 40H,00H, 0FEH, 1FHYU: DB 40H, 10H, 04H,
30、 10H, 20H, 10H, 0FEH, 13H;煜DB 0FCH, 13H, 04H, 12H, 08H, 29H, 04H, 12HDB 88H, 24H, 0FCH, 57H, 90H, 40H, 04H, 5AHDB 0FEH, 47H,04H, 52H,00H80H,0FCH, 93HEND显示汉字举例:2字节字模数据 | | 扫描码(每次扫描一行) | | | | | | | | | :亮 | :灭 | | | 图7:汉字字模的产生图7中16*16点阵可以分为4个8*8点阵,可以用二进制数表示LED的亮与灭,每行16只LED共需16位二进制数,分为两个字节 01000000000
31、10000 40H|10H0000000000000010 00H|02H0100000000010000 40H|10H0000100001000010 08H|42H : : : : : : : : :0100000000000000 40H|00H11111111000011111 0FEH|1FH字模的产生字模数据读取顺序:16列 每列2字节第1字节 3 2 第2字节第3字节 76 第4字节第5字节 1110 第6字节第7字节 1514 第8字节第9字节 1918 第10字节第11字节 2322 第12字节第13字节 2726 第14字节第15字节 3130 第16字节第17字节 10
32、 第18字节 第19字节 54 第20字节第21字节 98 第22字节第23字节 1312 第24字节第25字节 1716 第26字节第27字节 2120 第28字节第29字节 2524 第30字节第31字节 2928 第32字节 数据输出顺序显示效果图:八总结,感悟一个星期的课程设计就结束了,我从中学到了很多东西且感悟良多,体会到了课本联系实际,学以至用的设计思想。作为一名应用电子专业的大二学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已经度过的大学时间里,我们大多数接触的是专业基础课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业
33、基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。通过本次实习,让我初步了解LED点阵显示的基本原理和实现方法,也让我初步掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法,同时让我又复习如何用Protel 99se软件画电路图。通过本次实习,也使我进一步弄懂所学到的课本知识,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养利用单片机进行科技革新、开发和创新的基本能力。 以下是我总结了在编写
34、程序时需要注意的一些事项:1在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源,同时要认真查阅芯片功能,掌握好硬件识。2在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路;3要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;4在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。这次课程设计使我懂得了同学间的团结合作的重要性,懂得了理论联系实际的意义,仅仅只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是正确的理论,从而提高自己实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的单片机实习,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,并决心在以后的学习中加以改正,努力练习,提高自己的动手能力。最后的答辩环节也是感受很多,老师的提问让自己意识到仍然存在的许多不足,促使自己