1、LED 点阵电子显示屏的设计简述:LED 点阵显示系统,以 AT89S52 单片机为核心,由键盘控制模块、串口通信模块、LED 屏幕显示模块等组成,实现了对星期、年月日、时分秒的显示、本系统不仅可以实现题目要求的基本功能,同时发挥部分也能得到完全的实现,最主要是通过对 PC 机的实时修改和键盘控制,都能实现 LED显示屏内容的改变,并且有一定的创新功能。 关键词:LED 点阵电子显示屏 单片机 键盘控制一、选用器材Led8*8 点阵屏绿色 5 个,74LS373 三态输出的八 D 透明锁存器型号,tPd PD5 个,带公共端的 8 电阻排( 排阻)1 个,AT89C52 单片机 1 个,74L
2、S138 型号 3 线8 线译码器 1 个,石英晶振 1MHz1 个,电容 30pF3 个,电阻 10K 欧 1 个,按钮 6 个,+5V 电源 1 个二、设计方案1、实验功能从实验功能的实现上我们考虑的是:首先要满足基本的要求,例如显示时分秒,年月日,可修改,除此之外我们还考虑到一些比较美观的而且使用的功能,例如信息的左右滚屏循环显示等。以下便是我们的实验功能部分的内容。(1)实验部分实验功能 1:自制一台简易 8 行*32 列点阵显示的 LED 电子显示屏,能显示数字。实验功能 2:自制显示屏控制器,扩展键盘和相应的接口实现多功能显示控制实验功能 3:实现实时时间的显示,显示屏数字显示,时
3、:分:秒,例如(12:24 :30);星期的显示,例如(SUN.);年月日的显示,例如(20110504)。装订线 实验功能 4:显示屏通过按键切换显示星期,年月日,时间。(2)发挥部分发挥功能 1:实现信息的左右滚屏显示,预存信息的定时循环显示。发挥功能 2:信息具有掉电保护。发挥功能 3:实现和 PC 机通讯,通过 PC 机串口直接对显示信息进行更新。发挥功能 4:其他发挥功能。2、总体方案(1)工作原理利用单片机 AT89S52 作为本系统的中控模块,通过其自身的程序,把数据传输到显示模块,实现日历的显示。点阵 LED 电子显示屏显示器为显示模块,把单片机传来的数据显示出来,并实现滚动显
4、示。同时,按键模块可以用来实现各种模式的切换以及操作。(2)总体设计以下为该电路的整体电路图设计方案:图 1 系统总电路图该电路以 LED 为核心,配合 52 单片机以实现时间显示功能。点阵 LED电子显示屏显示器为主要的显示模块,把单片机传来的数据显示出来,并且可以实现滚动显示。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。主要分成显示模块,复位模块,晶振模块等模块。3、方案论证(1)显示部分:显示部分是本次设计最核心的部分,对于 LED8*8 点阵显示有以下两种方案:方案一:静态显示,即将每个二极管的状态分别用 1 和 0 表示,0 则无电流,为暗,1 则有电流,为亮。若给每个二
5、极管一个驱动电路,一个图像输入后,所有 LED 的状态保持到下一个图像。对于静态显示方式,所需的译码驱动装置很多,引线多而负责,成本高,可靠性也低。方案二:动态显示,即对每一个 LED 屏进行分割,对组成图像的各个部分分别显示,这样利用人眼的暂留效应和发光二极管发光时间的长短,也同样可以实现显示功能,这样就可以避免静态显示出现的问题。但是,设计上如果处理不当,容易造成图像闪烁的问题,因此合理的涉及要保证驱动电路容易实现而且保证图像稳定补闪烁。动态显示采用多路复用技术的动态扫描显示方式,我们发现,当扫描刷新频率(发光二极管的停闪频率)为 50Hz,发光二极管导通时间大于等于 1ms 时,显示亮度
6、好,无闪烁。鉴于以上原因,我们采用方案二。(2)数字时钟本实验采用软件实现数字时钟。原理为:在单片机内部存储器分别存放时钟的年、月、日、时、分、秒、星期的信息。利用定时器与软件结合实现1 秒定时中断,每产生一次中断,存储器内相应的秒值加 1;若秒值达到60,则清零且相应的分值加 1;若分值达到 60,则清零且相应的时值加 1;若相应的时值达到 24,则清零且相应的日值加 1;若相应的日值分别达到29,30,31 时,根据判断来增加月值;若相应的月值达到 12 时,清零且年值加 1。此方案硬件电路简单,但单片机不上电则程序不执行,而且时钟精度不是很高。(3)显示接口芯片的选择方案一:采用并口输入
7、,占用大量 I/O 口。方案二:采用串口输入,使用少量 I/O 口,但传输速度稍微慢了一些,但是不影响显示质量。于是我们采用 TI 公司的 DMOS 器件 TPIC6B595,其最大特点是驱动功率大,可直接做 LED 的驱动。鉴于以上原因,我们采用方案二。(4)串口通信芯片的选择方案一:采用 1488 或 1489 芯片实现电平转换,但在使用中发现可靠性补高,使用麻烦。方案二:采用单电源电平转换芯片 MAX232A 可以使电路变得简单,可靠。鉴于以上原因,我们采用方案二。(5)键盘控制模块:本实验讲单片机 PA 口接按键,PC 口则用于控制状态显示所用 LED 点阵。每个按键都通过一个 10K
8、 的上拉电阻接电源+Vcc,按键的另一端接地。当有键按下时,与该键相连的 PA 口的相应位变为低电平,单片机检测到该变化后即转到相应的键处理程序,同时在程序中点亮 LED 点阵。以下便是其电路:图 2 键盘控制模块电路(6)电源模块:方案一:采用干电池作为 LED 点阵系统的电源,由于点阵系统用电量大,使用干电池需要经常更换电池,不符合节俭,环保型社会的要求。方案二:采用 200W/5V 直流稳压电源作为系统电源,不仅功率上可以满足系统需要,不需要更换电源,并且比较轻便,使用更加安全可靠。鉴于以上原因,我们采用方案二。4、元件介绍(1)LED8*8 点阵屏双基色8*8 点阵严格有共阴型和共阳型
9、之分的,一个双基色LED(一个发亮点)阴极接在一起就是共阴、否则反之为共阳。我们使用的就是共阳型的LED双基色8 *8点阵屏。我们所看到的这种8*8 点阵屏准确地说不叫双色,而是叫双基色,那是因为显示的颜色是根据电流不同有几种,主要显示红、绿、橙。点阵屏是现代做广告产品的最佳发亮器件。图3 LED 共阳型8*8点阵屏(2)AT89S52 单片机AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适
10、于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 引脚图如图 4 所示。图 4 AT89S52 单片机引脚图AT89S52 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器
11、、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。(3)74LS373373 为三态输出的八 D 透明锁存器,共有 54S373 和 74LS373 两种线路。它 的 输 出 端 O0O7 可 直 接 与 总 线 相 连 。当 三 态 允 许 控 制 端 OE 为 低 电 平 时 , O0O7 为 正 常 逻 辑 状 态 , 可 用 来驱 动 负 载 或 总 线 。 当 OE 为 高 电 平 时 , O0O7 呈 高 阻 态 , 即 不 驱 动 总 线 ,也 不 为 总 线 的 负 载 , 但 锁 存 器 内 部 的 逻
12、辑 操 作 不 受 影 响 。当 锁 存 允 许 端 LE 为 高 电 平 时 , O 随 数 据 D 而 变 。 当 LE 为 低 电 平 时 ,O 被 锁 存 在 已 建 立 的 数 据 电 平 。 当 LE 端 施 密 特 触 发 器 的 输 入 滞 后 作 用 ,使 交 流 和 直 流 噪 声 抗 扰 度 被 改 善 400mV。一 下 为 74LS373 引 脚 图 :图 5 74LS373 引 脚 图( 4) 74LS13874LS138 为 3 线8 线译码器,共有 54/74S138 和 54/74LS138 两种线路结构型式。其工作原理如下:当一个选通端(E1)为高电平,另外
13、两个选通端 (E2)和(E3)为低电平时,可将地址端(A0 、A1、A2)的二进制编码在 Y0 至 Y7 对应的输出端以低电平译出。比如:A0A1A2=110 时,则 Y6 输出端输出低电平信号。利用 E1、E2 和 E3 可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。若将选通端中的一个作为数据输入端时,74LS138 还可作数据分配器。74LS138 还可用在 8086 的译码电路中,扩展内存。以下便是 74LS138 的引脚图:图 6 74LS138 引脚图4、程序流程图我们的程序流程图分为主程序流程图,显示子程序流程图,显示时间子程序流程图。主程序流程图主
14、要说明从系统初始化开始到按键给系统带来的变化;显示子程序流程图主要说明显示程序是怎么显示数字和字母的;显示时间子程序流程图表明如何调用显示时间子程序来实现时间的显示。以下便是我们的各个程序流程图:图 7 主程序流程图图 8 显示子程序流程图图 9 显示时间子程序流程图三、结论与总结LED 点阵电子显示屏的设计模拟电路非常成功,完全可以按照要求输出数据。电路图相对别的实验设计复杂了很多,导线多出三倍有余,焊接相当麻烦。但通过这次课程设计,是我们加深了对单片机的认识;知道了显示屏的制作原理,和上次设计相比有了新的突破。LED 点阵显示已经广泛应用与各行各业,在新的研究下,将会有更广泛的应用。四、参
15、考文献1 李朝青. 单片机原理及接口技术 M. 北京航空航天大学出版社,2005.2 蒋立平. 数字逻辑电路与系统设计 M. 电子工业出版社,2008.3 任涛等. 闪速存储器数据及应用简明速查手册 M. 电子工业出版社,1997.4 何立民. 单片机应用技术选编 M. 北京航空航天大学出版社,2000.附件 1:电路设计实物图附件 2:实验程序#include “reg51.h“#define uchar unsigned char#define uint unsigned int#define true 1#define faluse 1sbit set_key = P30;sbit up
16、_key = P31;sbit down_key = P32;sbit sign = P33;sbit select_key= P34;sbit set_ring_key = P35;uint sec;uint min=23;uint hour=12;uint day=10;uint month=10;uint yearl=7;uint yearh=20;uint tcnt;uint cnt=0;uint cursor=0;uint sjsz=0;uchar a=0xff;uchar code Seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0
17、x6f;void delay(uint t)uint i;while(t-)for (i=0;i0;i-) for(j=248;j0;j-);void display(uchar L1,uchar L2,uchar L3,uchar L4,uchar L5,uchar L6,uchar L7,uchar L8,uchar L9,uchar L10,uchar L11,uchar L12,uchar L13,uchar L14)if(cnt=1) if(cursor=6)P2=0x7F|a;P0=L1;delay(1);elseP2=0x7F;P0=L1;delay(1); /yearhif(c
18、ursor=6)P2=0xBF|a;P0=L2;delay(1);elseP2=0xBF;P0=L2;delay(1); /yearhif(cursor=6)P2=0xDF|a;P0=L3;delay(1);elseP2=0xDF;P0=L3;delay(1); /yearlif(cursor=6)P2=0xEF|a;P0=L4;delay(1);elseP2=0xEF;P0=L4;delay(1); /yearlif(cursor=5)P2=0xF7|a;P0=L5;delay(1);elseP2=0xF7;P0=L5;delay(1); /monthif(cursor=5)P2=0xFB|
19、a;P0=L6;delay(1);elseP2=0xFB;P0=L6;delay(1); /monthif(cursor=4)P2=0xFD|a;P0=L7;delay(1);elseP2=0xFD;P0=L7;delay(1); /dayif(cursor=4)P2=0xFE|a;P0=L8;delay(1);elseP2=0xFE;P0=L8;delay(1); /dayP2=0xFF;elseif(cursor=3)P2=0x7F|a;P0=L9;delay(1);elseP2=0x7F;P0=L9;delay(1); /hourif(cursor=3)P2=0xBF|a;P0=L10;
20、delay(1);elseP2=0xBF;P0=L10;delay(1); /hourif(cnt!=1)P2=0xDF;P0=0X40;delay(1);if(cursor=2)P2=0xEF|a;P0=L11;delay(1);elseP2=0xEF;P0=L11;delay(1); /minif(cursor=2)P2=0xF7|a;P0=L12;delay(1);elseP2=0xF7;P0=L12;delay(1); /minif(cnt!=1)P2=0xFB;P0=0X40;delay(1);if(cursor=1)P2=0xFD|a;P0=L13;delay(1);elseP2=
21、0xFD;P0=L13;delay(1); /secif(cursor=1)P2=0xFE|a;P0=L14;delay(1);elseP2=0xFE;P0=L14;delay(1); /secP1=0xFF;main() TMOD=0x02; /设置模式为定时器 T0的模式 2 断的产生中断去执行中断函数本次定时时间为 64ms TH0=0x06; /设置计数器初值,靠 TH0存储重装的计数值 X0=256-250=6TL0=0x06;TR0=1; /启动 T0ET0=1; /开启定时器 T0中断允许EA=1; /开启中断总控制while(1)if(set_key=0)Kdelay();if
22、(set_key=0)cursor+;if(cursor=7)cursor=0; /在选择到调整年时又返回秒设置,当 CURSOR=7时不选中if(up_key=0)Kdelay();if(up_key=0) /加部分if(cursor=1)sec+;if(sec=60)sec=0;if(cursor=2)min+;if(min=60)min=0;if(cursor=3)hour+;if(hour=24)hour=0;if(cursor=4)day+;if(day=31)day=1;if(cursor=5)month+;if(month=13)month=1;if(cursor=6)yearl
23、+;if(yearl=100)yearl=0;if(cursor=7)yearh+;if(yearh=30)yearh=20;if(down_key=0)Kdelay();if(down_key=0) /减部分if(cursor=1)sec-;if(sec=00)sec=59;if(cursor=2)min-;if(min=0)min=59;if(cursor=3)hour-;if(hour=0)hour=23;if(cursor=4)day-;if(day=0)day=31;if(cursor=5)month-;if(month=0)month=12;if(cursor=6)yearl-;i
24、f(yearl=0)yearl=99;if(cursor=7)yearh-;if(yearh=20)yearh=30;if(select_key=0)Kdelay();if(select_key=0)cnt+;if(cnt=2)cnt=0;display(Segyearh/10,Segyearh%10,Segyearl/10,Segyearl%10,Segmonth/10,Segmonth%10,Segday/10,Segday%10,Seghour/10,Seghour%10,Segmin/10,Segmin%10,Segsec/10,Segsec%10); void t0(void)int
25、errupt 1 using 0 /t0的中断程序tcnt+;if(tcnt=4000)/定时器的定时计数,4000 次 250us为 1秒,中断4000次后才执行刷新,期间照上面的语句显示tcnt=0;sign=sign;a=a;sec+;if(sec=60) sec=0;min+;if(min=60)min=0;hour+;if(hour=24)hour=0;day+;if(month=2 else if(month=2else if(month=4|month=6|month=9|month=11)else if(day=32)day=1;if(day=1)month+;if(month=13)month=1;yearl+;if(yearl=100)yearl=0;yearh+;if(yearh=100)yearh=20;