16×16点阵LED显示器字符滚动显示课程设计报告
-基于并行端口驱动
目录 1 选题背景 2 方案论证 2.1 课题要求 2.2 设计方案 3 16×16点阵LED显示器字符滚动显示过程设计论述 3.1 系统硬件框图设计 3.2 单片机AT89C51分析 3.3 系统原理图设计 3.3.1 外界晶振电路原理图设计 3.3.2 复位电路 3.3.3 系统原理总图 3.4 系统软件设计 3.4.1 程序流程图 3.4.2 软件代码 4 结果分析 4.1 程序调试与仿真 4.2 仿真结果 5 总结 参考文献 附录
4 还是先给大家看看我的实验结果分析吧 4.1 程序调试与仿真 通过keil uvison4编写程序,编译后没有警告和错误,然后将其程序文件录入PROTUES软件中仿真图AT89C51单片机中进行仿真,在显示过程中通过程序调节滚动速度,直至出现预料中的显示为止。 4.2 仿真结果 本设计最终在Keil C51与Proteus的联机调试下完成的16×16点阵LED显示器字符滚动显示的仿真结果如图4-1所示。显示效果不错,因此可以得出该设计方案的准确性和合理性,更进一步验证了硬件电路的元器件规格选择完全符合设计要求。同样在显示过程中,0-9数字的滚动没有出现显示错误的地方,不存在有缺或者多的地方,达到自己预期中的效果,成功实现了所需要的显示内容,足以验证该程序的准确性和硬件电路的契合。进而证明这次设计以AT89C51单片机为核心所设计的硬件电路及其软件程序的编写的准确性,以及在器件的规格参数选择中没有失误,完美的使电路和程序契合在一起,使其显示成功。
图4-1 仿真结果图5 总结 本次设计最终仿真结果显示成功主要在于设计的正确性,其硬件部分器件的规格参数课本已有说明,软件设计部分书上已经给了参考源程序,但是书上给的是4个16×16 的点阵LED图文显示屏的源程序,我的课程设计是1个16×16的点阵LED字符显示,因此我们需要在课本上给的源程序上进行改动,这样我们就需要看懂书上的源程序。程序编程时一个最重要的就是字模提取,在字模提取过程中,由于前期没接触过这个软件,在学习过程中耗时很长,延长了一段时间做完方针,在这期间我们需要经历查阅资料、相互交流来使知识为自己所用才是自己最大的收获,此次课设虽以完成,但在此过程中提高了我的学习能力。
1 选题背景 当前的LED显示屏行业,已经发展到了一个异于以往的新高度,呈现出直插屏、表贴屏、COB等多种技术形式的LED显示市场,甚至是隶属于LED显示领域的Microled显示屏也“呼之欲出”,整个LED显示行业表现出极大的生机与潜力。不断发展与壮大的行业规模,以及巨大的发展空间,为这个行业里的每个从业者展示了机遇与挑战,小间距的强势应用渗透,创意显示的如雨后春笋,智能显示来势凶猛,LED显示屏已经迎来了高清以及多元化发展应用的新常态,高品质的LED显示屏即是市场提出新的要求,也是行业适应社会技术发展的重点话题。从主流的应用层面上来讲,当前的LED显示屏正朝着“精细”化的方向发展,以小间距LED显示屏为代表的主流市场,已经为我们呈现了LED显示屏在高清显示领域的一种可能,并不断向各个应用市场渗透,且走向户外,传统的LED直插屏的一部分市场不断被挤压,一部分表贴LED显示屏凭借自身优异的工艺与色彩特点,不断在户外显示领域扩张,并被市场不断看好[1]。 2 方案论证 2.1 课题要求 本次设计采用16×16点阵LED显示器的驱动电路,并编写程序实现在16×16点阵LED显示器上的字符滚动显示。16×16点阵LED显示器由4块8×8点阵LED显示器构成。采用单片机并行端口方式实现对16×16点阵LED显示器的驱动,实现数字(0—9)或英文字符的滚动显示。 电路方面主要包括以下部分: (a)设计单片机的最小系统(包括复位电路和外接的晶振电路),并确定相关元器件参数。 (b)采用动态驱动的方式,设计单片机并行端口与16×16点阵LED显示器的驱动电路,主要包括控制点阵LED行和列的连线。 (c)设计单片机与元器件之间的控制连线。
2.2 设计方案 采用AT89C51单片机采用动态扫描的显示方法轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套驱动器。把所有同行的发光管的阳极连在一起,把所有同列的发光管的阴极连在一起,先送出对应第一行发光管亮灭的数据,然后选通第1行使其燃亮一定次数,然后熄灭;再送出第二行的数据,然后选通第2行使其燃亮相同次数,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,扫描数据依次类推。当次数足够多时,由于人眼的视觉暂留现象,就能够看到显示屏上稳定的数字。硬件电路由单片机复位电路、电源电路、外界晶振电路和16×16点阵LED显示电路组成,其中复位电路、电源电路、外界晶振电路是让单片机工作的正常需求。由于本次设计是16×16点阵LED显示器并行端口驱动,接线过多因而仿真部分采用网络端口进行连接。 3 16×16点阵LED显示器字符滚动显示过程设计论述 3.1 系统硬件框图设计 根据设计要求与设计方案,硬件电路的设计框图如图3-1所示。硬件电路结构由五部分组成:复位电路、电源电路、外界晶振电路、单片机和16×16点阵LED显示器。
3.2 单片机AT89C51分析 单片机AT89C51内部结构如图3-2所示,共有P0~P3四个这样的并行口,特殊功能寄存器是P0~P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。这P0~P3四个并行口,可提供32根I/O线直接驱动16×16点阵LED显示器。
3.3 系统原理图设计
3.3.1 外界晶振电路原理图设计 外界晶振电路是单片机的心脏,它控制着单片机的工作节奏,其典型值为12MHZ。XTAL1、XTAL2引脚外界晶振和电容组成振荡器。振荡器产生的时钟频率主要由晶振频率决定,C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率ƒ起微调作用(C1、C2变大,ƒ变小),其典型值为30pF,振荡器在加电以后月10ms开始起振,XTAL2输出3V左右的正弦波,振荡器产生的时钟送入单片机内部[2],如图3-3所示。 图3-3 外界晶振电路原理图 3.3.2 复位电路 本次设计采用上电复位电路,对于AT89C51的上电复位电路,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。在图3-4的复位电路中,随着Vcc电压由0V增加到5V,电容C3的上极板电位随之增加,电容的内电场增强,使C3能吸引更多的电子通过R1到达下极板,从外面看就电流通过C3和R1入地。按电压在随着电流方向逐惭降低的原则,电流的出现会在R1端形成一大于0的电位。由于电容的充电逐渐饱和,所以电流会逐渐减小,电位也会逐渐减小。该电位的大小和持续的时间将直接影响到我们的系统能否上电复位。 图3-4 复位电路 3.3.3 系统原理总图 根据设计要求和硬件框图设计系统原理图,如图3-5所示。 图3-5 系统原理图 AT89C51采用P0、P1端口纵向驱动16×16点阵LED显示器,P2、P3端口横向驱动16×16点阵LED显示器,其中P0端口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。由于本次设计为16×16点阵LED显示器在这里采用4个8×8点阵LED显示器。硬件系统元器件清单如下表3-1所示。 表3-1 硬件系统元器件清单 3.4 系统软件设计 3.4.1 程序流程图 本次设计利用循环语句,外循环每次确定扫描时数组中该显示的第一个数据且每次移动一位,内循环是在此基础上的后16位,前8位在P2口输出,后8位在P3口输出,随着每次循环次数增加,从而实现了数字的滚动。程序流程图如图3-6所示。 图3-6 程序流程图(见附件) 3.4.2 软件代码 全部程序见附录 参 考 文 献 [1]陈龙.LED显示行业品质管控才是发展主流 [2]何宏.单片机原理及其应用.清华大学出版社.2012:7-8.
附录 16×16点阵LED显示器字符滚动显示完整程序
单片机源程序如下:- #include <reg51.h>
- #define u8 unsigned char
- #define u16 unsigned int
- #define NUM 100
- u8 code table1[]={
- /*-- 文字: --*/
- /*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- …………
- …………限于本文篇幅 字库代码请从51黑下载附件…………
- /*-- 文字: --*/
- /*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=8x16 --*/
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- };
- u8 i=0,j=0,m=0,n=0;
- u16 z;
- void main()
- {
- P0=0x00;
- P3=0x00;
- P1=0x00;
- P2=0x00;
- while(1)
- {
- for(i=0;i<152;i++)
- {
- for(z=NUM;z>0;z--)
- {
- for(j=0;j<16;j++)
- {
- m=i+j;
- n=j-8;
- if(j>7)
- {
- P2=0;
- P3=(0X01<<n);
- }
- else
- {
- P3=0;
- P2=(0x01<<j);
- }
-
-
- P0=table1[m];
- P1=table2[m];
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
http://www.51hei.com/bbs/dpj-105744-1.html
|