第一章 方案选择及总体设计
1.1 方案确定
1.1.1 功能要求 1、采用STC-52单片机作为微处理器。 2、设计一个8×8点阵LED数码字符显示器。 3、在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰。 4、动态显示“0——9”几个字符。 1.2.2 方案确定 采用ST89C52单片机作为微处理器,将共阳极二极管用共阴型接法连接成8×8点阵LED数码字符阵列,通过程序控制,采用动态显示,建立字符库“0——9”。 1.2 器件选择微处理器采用ST89C52系列单片机,ST89C52单片机是这几年在我国非常流行的单片机,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)高性能单片机,可擦除只读存储器可以反复擦除100次,具有低功耗、高性能的特点。 第二章 控制系统设计2.1 控制系统硬件设计 2.1.1整体模块设计本设计行、列驱动电路,显示器电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如图1所示。 图1 硬件系统框图
此次需要实现的功能是利用一个ST89C52,一个8×8LED点阵,动态显示“0——9”10个字,采用PC上位机驱动显示电路。 2.1.2 单片机最小系统设计ST89C52单片机最小系统电路由复位电路、晶振电路两部分组成。 2.1.2.1 晶振电路设计ST89C52单片机芯片内部设有一个由反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡电路的的输入端和输出端,时钟可有内部或外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就会产生自激振荡。系统采用的定时元件为石英晶体和电容组成的并联谐振回路。晶振频率采用12MHZ,C1、C2的电容值取30pF,电容的大小起频率微调的作用。晶振电路图如图所示。 图2 晶振电路图
2.1.2.2 复位电路设计ST89C52单片机在启动运行时或者出现死机时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作。单片机有多种复位方式,常用的复位操作有上电复位和手动复位方式。本设计采用最简单的上电复位方式,电路如图3所示。上电复位是通过外部复位电路的电容充电来实现的,复位电路产生的复位信号(高电平有效)由RST引脚送入到内部的复位电路,对ST89C52单片机进行复位,复位信号要持续两个机器周期(24个时钟周期)以上,才能使ST89C52单片机可靠复位。当上电时,C1相当于短路,有时碰到干扰时会造成错误复位,可在复位端加个去耦电容,可以取得很好的效果。 ST89C52单片机复位电路如下图所示:
图3 上电复位电路图 图4 按键电平复位电路图 复位电路工作原理: 上电瞬间RST引脚的电位与VCC等电位,RST引脚为高电平,随着电容C5充电电流的减少,RST引脚的电位不断下降,可以保持RST引脚在为高电平的时间内完成复位操作。 当单片机已在运行当中时,按下复位键S5后再松开,也能使RST引脚为一段时间的高电平,从而实现ST89C52单片机复位。 2.1.3 驱动电路设计正向点亮一颗LED,至少也要10~20mA,若电流不够大,则LED不够大。而不管是ST89C52的I/O口,还是TTL、CMOS的输出端,其高态输出电流都不是很高,不过1~2mA而已。因此很难直接高态驱动LED,这时候就需要额外的驱动电路,通常有共阳型与共阴型LED阵列驱动电路,本设计才用共阴型高态扫描信号驱动电路。 共阴型LED阵列驱动电路采用高态扫描,也就是任何时间只有一个高态信号,其它则为低态。一行扫描完成后,再把高态信号转化到近邻的其他行,扫描信号接用一个反向驱动器,ST89C52本身内置一个反向驱动器,本设计将ST89C52作为点矩阵显示控制系统的控制核心,通过点矩阵实时显示并移动字符。 单片机的串口与行驱动器相连,用来发送显示数据信息。P0口与LED阵列的行引脚相连,送出数据、地址以及系统控制信号。输出低态时,最大可吸取0.5A,即500mA,若每个LED取30mA,7个LED同时点亮,需要210mA,完全满足LED点亮的基本条件。 图5 驱动电路图 所要显示的信号送入74HC573芯片,然后连接到LED阵列的列阵脚。对于高态的显示信号,将可提供其所连接LED的驱动电流,而这个驱动电流经过LED到输出端,形成正向回路,即可点亮该LED。其中每个晶体管任何时间只需负责驱动一个LED,所以选择30mA射极电流的晶体管。驱动电路如图5所示。 2.1.4 LED点阵显示设计 本设计采用ATMEL公司的AT89C51作矩阵显示控制系统控制核心,12MHZ晶振,88点阵共阳LED显示器。其中,P1口作为字符数据输出口,P3口为字符显示扫描输出口,第31脚(EA)接电源,改变电阻(270*8)的大小可改变显示字符的亮度,驱动用74HC573芯片。 本设计LED矩阵显示器电路选用8×8点阵模块,系统由单片机控制。 LED显示屏是将发光二极管按行按列布置的,在扫描驱动方式下可以按行扫描按列控制,也可以按列扫描按行控制。本文就是使用1块8×8点阵,采用按列扫描按行控制控制方式,扫描顺序自左向右,以满足汉字显示的要求。8×8点阵LED结构如图6所示。
图6 LED数码显示管 8×8 点阵LED的工作原理。图7为8×8点阵LED外观及引脚图,其等效电路如图8所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。 图7 8×8点阵LED外观及引脚图 图8 8×8点阵LED等效电路 一个8×8点阵是由64个发光二极管按规律组成的,如图8所示。图中,行接低电平,列接高电平,发光二极管导通发光。 2.2控制系统软件设计2.2.1 软件设计思想 主程序先进行设置中断,并启动,再进行键盘扫描载入“0——9”字型,然后判断一组字型是否扫描完,按不同情况进行循环调用子程序。进入子程序后,首先设置相应的程序,反复调用显示子程序,并在显示过程中反复调用键盘扫描子程序进行延时,判断是否退出相应的方式显示子程序。设计过程中,能很好得提高按键响应速度。如图9所示为软件系统框图。
图9 软件系统框图
字符编码:8×8点阵可以看成是从上至下8个字节,每个字节8位,因为该点阵为共阴型点阵,因此若该灯亮,则该位为“1”;该灯不亮,则该位为“0”。所以“0——9”的编码为,从上至下: DB 00H,00H,3EH,41H,41H,41H,3EH,00H DB 00H,00H,00H,00H,21H,7FH,01H,00H DB 00H,00H,27H,45H,45H,45H,39H,00H DB 00H,00H,22H,49H,49H,49H,36H,00H DB 00H,00H,0CH,14H,24H,7FH,04H,00H DB 00H,00H,72H,51H,51H,51H,4EH,00H DB 00H,00H,3EH,49H,49H,49H,26H,00H DB 00H,00H,40H,40H,40H,4FH,70H,00H DB 00H,00H,36H,49H,49H,49H,36H,00H DB 00H,00H,32H,49H,49H,49H,3EH,00H 2.2.2 主程序流程图主程序首先设置并启动T0中断,然后调用初始化程序,为后面程序要用到的数据调入,并清零一些用到的数据单元,然后载入“0——9”字型,进行扫描。图10为主程序流程图,详细主程序清单及子程序设计见附录B。
图10 主程序流程图
2.2.3 子程序流程图(定时中断服务程序)图11 子程序流程图(定时中断服务程序) 第三章 系统仿真及性能分析3.1 系统仿真本设计是以wave与Proteus.ISIS相结合方式来实现本LED点矩阵显示器的仿真实现过程。电路的核心是单片机ST89C52。单片机的P0口八个引脚通过总线连接到LED矩阵显示器的段选码和位选码(a、b、c、d、e、f、g和1、2、3、4、5、6、7、8)的引脚上,来作为控制信号的来源。如图11、12所示。 3.2 性能分析此次系统设计结果较好,LED显示屏能很好的显示信息。LED显示屏由1块8×8的LED小模块组成,整个显示屏可以动态显示8×8的“0——9”字型。这个方案设计的8x8的点阵LED图文显示屏,电路简单,成本较低,且较易扩展;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰。
总结致谢本次课程设计到现在有一个多星期,回顾这些天我感到学到了很多东西,在写这个心得的时候,我想就这些天的收获,说一说自己内心的想法。 本设计是一个8x8的点阵LED数码显示器,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。 总结本文的研究工作,主要做了下面几点工作: 一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。并且通过对单片机资料的查阅和应用,更进一步增加了对单片机知识的理解和运用能力。并证实了自己的思路:“查资料→思考总结→运用→找出差错,再查资料和向别人询问→再次运用”的正确性。 二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。 三,本文列出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。 四,在这次课程设计的过程中学会了 PROTEUS 的基本使用,感到PROTEUS对电子专业的同学来说是一个很有用的软件。在运用PROTEUS时可以运用一些快捷的标号,总线的方法画图,这样既能使电路图清晰,简单,更能大大提高画图速度 五,通过这次课程设计,重新复习并进一步增强了动手的能力,学以致用,把只是运用到实际生活中才是根本目的。 六,存在问题:没有考虑仿真软件是一个理想的仿真环境,而实际连接的电路板会由于譬如连接不当,相邻器件间的干扰等等的问题导致在仿真软件中能良好运行的程序,出现显示问题,经过排查和合理的器件摆放焊接,问题解决。 总体来说这次的科研实践很成功,达到了预想的目的:学到了知识,提高了能力,完成了任务。有点缺憾是时间有限,不能进一步深入和扩散学习和研究。希望有时间可以对程序和电路图作更进一步的改进,譬如实现点阵的上下移动,对角线移动,多色显示等。 在此感谢指导老师姜静老师和余国卫老师的悉心教导,改正了很多不曾发现的问题,为即将的毕业设计打下了基础。 参考文献[1] 张靖武,周灵彬 《单片机系统的PROTEUS设计与仿真》北京 电子工业出版社 [2] 吴金戌,沈庆阳,郭庭吉 《8051单片机实践与应用》北京 清华大学出版社 [3] 李群芳,肖看 《单片机原理、接口及应用》北京 清华大学出版社 [4] 张毅刚,彭喜元等 《新编MCS-51单片机应用设计 》黑龙江 哈尔滨工业大学出版社 [5] 张义和,陈敌北编著 《例说8051》北京 人民邮电出版社 附 录附录A 硬件结构图 附录B 主程序清单
- TIM EQU 30H ;//定义TIM为30H
- CNTA EQU 31H ;//定义CNTA为31H
- CNTB EQU 32H ;//定义CNTB为33H
- ORG 00H ;//将后面的程序汇编后存入ROA的0000H以后单元
- LJMP START ;//程序入口,转开始START
- ORG 0BH ;//将后面的程序汇编后存入ROA的000BH以后单元
- LJMP T0X ;//中断入口,转中断T0X
- ORG 30H ;//将后面的程序汇编后存入ROA的0030H以后单元
- START: MOV TIM,#00H ;//将数据0000H送入30H单元
- MOV CNTA,#00H ;//清零31H单元
- MOV CNTB,#00H ;//清零32H单元
- MOV TMOD,#01H ;//设置T0方式1工作
- MOV TH0,#(65536-4000)/256
- MOV TL0,#(65536-4000) MOD 256 ;//设置T0的计数初值
- SETB TR0 ;//开启T0中断
- SETB ET0 ; //允许T0中断
- SETB EA ;//开总中断
- SJMP [ DISCUZ_CODE_1 ]nbsp; ;//原地踏步
- ;*****************定时中断服务程序*******************
- T0X: ;//中断程序
- MOV TH0,#(65536-4000)/256
- MOV TL0,#(65536-4000) MOD 256 ;//设置T0的计数初值
- MOV DPTR,#TAB ;//取数据表TAB的首地址
- MOV A,CNTA ;//将31H单元内容送入A
- MOVC A,@A+DPTR ;//读取显示数码管地址
- MOV P3,A ;//输出显示数码管地址
- MOV DPTR,#DIGIT ;//取数据表DIGIT的首地址
- MOV A,CNTB ;//将32H单元内容送入A
- MOV B,#8 ;//将十进制8赋值给B
- MUL AB ;//A乘B
- ADD A,CNTA ;//寄存器直接寻址
- MOVC A,@A+DPTR ;//读取显示数码管地址
- MOV P1,A ;//输出显示数码管地址
- INC CNTA ;//31H单元内容加1
- MOV A,CNTA ;//将31H单元内容送入A
- CJNE A,#8,NEXT ;//8个数码管的显示数据没有都输出则转NEXT
- MOV CNTA,#00H ;//8个数码管的显示数据都输出了则清31H单元
- NEXT: INC TIM ;//32H单元内容加1
- MOV A,TIM ;//将30H单元内容送入A
- CJNE A,#250,NEX ;//比较转移指令
- MOV TIM,#00H ;//清零30H单元
- INC CNTB ;//32H单元内容加1
- MOV A,CNTB ;//将32H单元内容送入A
- CJNE A,#10,NEX ;//比较转移指令
- MOV CNTB,#00H ;//清零32H单元
- NEX: RETI ;//中断返回
- TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
- DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00H
- DB 00H,00H,00H,00H,21H,7FH,01H,00H
- DB 00H,00H,27H,45H,45H,45H,39H,00H
- DB 00H,00H,22H,49H,49H,49H,36H,00H
- DB 00H,00H,0CH,14H,24H,7FH,04H,00H
- DB 00H,00H,72H,51H,51H,51H,4EH,00H
- DB 00H,00H,3EH,49H,49H,49H,26H,00H
- DB 00H,00H,40H,40H,40H,4FH,70H,00H
- DB 00H,00H,36H,49H,49H,49H,36H,00H
- DB 00H,00H,32H,49H,49H,49H,3EH,00H
- END
复制代码
完整的Word格式文档51黑下载地址:
基于单片机的8×8LED字幕显示设计.doc
(521.44 KB, 下载次数: 12)
|