LED点阵显示系统设计Word格式文档下载.docx
- 文档编号:18980127
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:37
- 大小:440.03KB
LED点阵显示系统设计Word格式文档下载.docx
《LED点阵显示系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LED点阵显示系统设计Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
红和绿双基色,256级灰度、可以显示65536种颜色。
全彩色显示屏:
红、绿、蓝三基色,256级灰度的全彩色显示屏可以显示一千六百多万种颜色。
按显示器件分类
LED数码显示屏:
显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。
LED点阵图文显示屏:
显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适于播放文字、图像信息。
按使用场合分类
室内显示屏:
发光点较小,一般Φ3mm--Φ8mm,显示面积一般零点几至十几平方米。
室外显示屏:
面积一般几十平方米至几百平方米,亮度高,可在阳光下工作,具有防风、防雨、防水功能。
按发光点直径分类
室内屏:
Φ3mm、Φ3.75mm、Φ5mm、
室外屏:
Φ10mm、Φ12mm、Φ16mm、Φ19mm、Φ21mm、Φ26mm
室外屏发光的基本单元为发光筒,发光筒的原理是将一组红、绿、蓝发光二极管封在一个塑料筒内共同发光增强亮度。
1.3设计功能
本设计的任务就是完成一个可以随意扩展显示单元数目的单色动态条幅屏。
任务要求:
能同时显示六个简体汉字
能实现汉字在屏幕上的移动
第二章系统硬件设计与制作
本系统由AT89S51、1个74HC154、4个74HC595及LED显示屏为核心组成的点阵式LED汉字显示屏,主要由24MHZ晶振电路、复位电路、51单片机、点阵阳极驱动电路、点阵阴极驱动电路、16×
32显示屏6部分组成。
采用的AT89S51单片机最小化应用设计,P1口作为I/O口,输出行数据和控制信号,P2口作为I/O口,与“写”控制信号配合,输出列控制信号。
LED显示采用动态扫描方式实现,控制电路部分由1片74HC154和4片74HC595传输信号,传输出来的信号通过74HC595输出。
再通过编译最终达到依次显示汉字的目的。
其系统设计框图如图1所示
图1系统设计框
2.1单片机的最小系统
AT89S51是一个低功耗,高性能8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条I/O口,这样会造成I/O资源的耗尽,系统也再无扩充的余地,因此,我们在实际应用中只是将LED点阵的4-16线译码器74HC154来选择控制,至于列选扫描信号则是由74HC595译码器来选择,这样一来列选择控制只使用了单片机的4个I/O口,节约了很多I/O口资源,为单片机系统扩充使用功能提供了条件。
该电路总共用到12个I/O口,采用P1口作为输出行数据和控制信号。
P2口的4个口与“写”控制信号配合,输出列控制信号。
P2口的另外4个I/O口是用作按键开关。
单片机模块电路如图2所示。
图二:
图2单片机模块电路
v
2.2系统总电路
本系统采用AT89S51单片机最小应用系统作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。
总电路原理图如图3所示。
图3总电路原理图
2.316×
32点阵屏
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
驱动器采用74HC154。
对于列数据准备来说,它应能实现串入并处的移位功能;
对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
故在此我们采用74HC595作为列驱动。
当74HC154扫描到某一行时,74HC595决定哪一列该亮,就这样快速扫描,就形成了图像。
2.4行驱动电路
此电路采用4/16译码器74HC154作为点阵的行驱动。
将从RAM输出四个信号分别输入到74HC154译码器,然后输出16位行信号,经过16个1K的电阻,再输入16个PNP8550三极管的B极来进行对行信号的放大,其中所有的三极管的E极相连接+5V的电源,所有的C极接16个1K欧姆的电阻,得到的信号作为点阵LED的行输入信号,通过对154的四个输入信号进行控制,改变行信号。
由154和595的信号,控制二极管的亮、灭来显示出所要求的字符、汉字。
每个LED管亮需要7mA的电流,那么32个同时亮就需要224mA的电流,所以我们要对行进行驱动,我们采用晶体管8550对行信号进行放大,使LED点阵能够正常显示。
其行驱动电路如图4所示:
图4行驱动电路
2.5列驱动电路
16行×
32列为一个基本单元,则列驱动需用4片74HC595,其工作原理为:
将八片74HC595级连,共用一个串行时钟CLK及数据锁存信号STR。
当第一行需要显示的数据经过8×
4=32个CLK时钟后将全部移入74HC595中,此时产生一个数据锁存信号STR,使数据锁存在74HC595的后级锁存器中,同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行LED的正端都接高平,显然第一行LED管子的亮、灭取决于74HC595中所锁存的信号;
在第一行LED管子点亮的同时,在74HC595中移入第二行需要显示的数据,随后将其锁存,并同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行LED管子点亮……以此类推,当第十六行扫描过后再回到第一行,只要扫描速度足够高,就可形成一幅完整的文字或图像,其列驱动电路如图5所示:
图5列驱动电路
2.6电源模块
设计采用5V电源电压为其供电。
直流稳压电源一般由电源变压器、整流滤波器电路以及稳压电路所组成。
电源变压器是将交流电网220V的电压变为所需要的值,然后经过整流电路将交流电压变成脉动的直流电压。
由于此脉动的直流电压还含有较大的纹波,必须经过滤波电路加以滤波(一般有10%左右的波动)负载和温度的变化而变化。
因而在整流、滤波电路之后,还需接稳压电路。
稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。
选用输出电压固定为+5V的三端集成稳压器7805.变压器将电网220V电压变为+6V电
其电源电路图如图6所示:
图6电源电路图
压,经桥式整流后,送入7805的输入端,电容C1和C2用来实现频率补偿防止稳压器7805产生高频自激和抑制电路引入的高频干扰,C3是点解电容,以减少稳压电源输出端由输入电源引入的低频干扰。
2.7系统PCB模块
本作品采用通用的Protel99SE版软件完成PCB图的设计。
本设计用的元件数量不算多,用到2块集成块、一片单片机与多个电阻和三极管及16*32的点阵屏,但是他们的连接却是相当复杂的,因此我们设计两块PCB图,即主控制电路图和点阵屏电路图。
我们采用的是单面布线策略,多处还使用到跳线、排针与排线来连接。
已设计好的PCB图如图7所示。
图7系统PCB图
第三章程序流程图
程序在初始化后将存储在ROM内部的站点信息读出,送至单片机的RAM,初步的进行汉字点阵转换,转换后的数据处理送至行驱动和列驱动,一般行的用74LS154,列用74HC595控制,工作原理是当154扫描到某一行时,595决定哪一列该亮,就这样快速扫描,形成了图像了。
它是用动态显示的原理工作的,即每个时刻只有一个LED被点亮,因为它的工作频率很高,所以人的眼睛看不出来它是动态的,LED点阵输入端有行和列,在不同的行和列之间接入信号相应的LED就会被点亮,但同时只能有一个行和列被接入信号,否则会乱码.为让人眼能看清楚字的显示,对它进行延时以控制显示效果,使其循环处理。
当按下不同的按键时,即可让字不同的滚动,当显示完毕就可结束。
其流程图如图8所示:
图8系统流程图
第四章结果调试与讨论
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬联调。
由于在系统设计中采用模块设计法,所以方便对个电路模块功能进行逐级测试,LED驱动模块的调试,程序模块的调试等,最后将各模块组合后进行整体测试。
点阵屏测试:
用2节1.5V直流干电池串联的到3V电压,连接点阵屏测试各行各列点阵工作是否正常,显示顺序是否正确。
测试结果无误。
主电路测试:
将主电路连接到显示正常的点阵屏上,接上电源,结果点阵屏无法正常显示,点阵屏出现零散几个亮点。
估计原因:
(1)电路是否有出现断路现象。
经万用表测试,各导线连接全部正常。
(2)行驱动74HC154行驱动是否正常。
我们换用另一块同样型号的74HC154,结果点阵屏还是无法正常显示。
(3)晶振电路不起振。
我们将原电路的12M晶振换为16M晶振。
结果点阵屏能正常显示预期的字样,但闪烁感强烈。
这时,我们估计是晶振频率不够,后相继换上24M个27M晶振,结果采用27M晶振点阵屏同样出现闪烁感,而采用24M晶振,点阵屏显示正常而且稳定,无闪烁感现象。
最后测试:
最后测试左、右、上、下移动,移动正常。
最后毕业设计实物调试成功。
总结
虽然本设计只是一块16*32汉字点阵电路的这几,但是通过这两个月的毕业设计,我受益匪浅,它是我大学三年所学知识很好的总结。
它的制作过程使我认识到应用电子的重要性,让我知道时态的变化是多么的快,也让我知道应用电子在社会是处于一个什么样的地位。
这些更让我坚定不移的继续学习应用电子技术,选择它是一个明确答案。
以下是我在制作过程中,主要做了下面几点较突出的工作:
一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。
二、本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示文字,显示文字应稳定、清晰无串扰。
文字显示有静止、左移、右移、上移、下移等显示方式。
三、文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。
四、在这次毕业设计的过程中学会了Protel99se的基本使用,感到Protel99se对电子专业的同学来说是一门非常重要且很有用的课程。
五、通过这次毕业设计,重新复习并进一步学习了MCS-51;
熟练掌握了PCB版的制作过程。
参考文献
[1]谭浩强.C程序设计(第二版)[M].北京:
清华大学出版社,1999.12.
[9]阎石.数字电子技术基础(第四版)[M].北京:
高等教育出版社,1998.11.
[10]中国集成电路大全编委会编.《中国集成电路大全——CMOS集成电路》[M].北京:
国防工业出版社,1985.
附录
附录1单片机程序
#include<
reg51.h>
intrins.h>
font.h>
//字库
ds1302.h>
//DS1302
ds18b20.h>
//DS18B20
#defineucharunsignedchar
#defineuintunsignedint
#definelight120//点阵亮度调节;
视情况而定,实际电路中请设为120(效果好些)
voiddelayms(uintn);
//(n)ms延时子程序
voiddelay();
//显示扫描延时
voidDS1302_Initial(void);
//初始化ds1302
voidinitTimer(void);
//初始化定时器
voidlie();
//列控制函数
voidsend8bit(unsignedintn);
//发送字函数
voidmod_key(void);
//显示模式选择函数
voidset_key(void);
//显示调整函数
voidread_clockS(void);
//时钟数据读取函数
voidSet_hanzi(unsignedcharse);
//调节汉字函数
voidSet_time(unsignedcharsel);
//设置时间函数
voidSet_naozhong(unsignedcharsel);
//闹钟设置函数
voiddeal_naozhong(void);
//闹钟处理函数
voidcheck_shijian(void);
//读取时间
voidload_shijian(void);
//将待显示时间内容存至缓冲区
voidcheck_wendu(void);
//读取温度
voidload_wendu(void);
//将待显示温度内容存至缓冲区
voidload_hanzi1(void);
//将待显示汉字1存至缓冲区
voidload_hanzi2(void);
//将待显示汉字2存至缓冲区
//voidload_tupian1(void);
//将待显示图片1存至缓冲区
voidload_tupian2(void);
//将待显示图片2存至缓冲区
voiddisplay(void);
//显示子程序
sbitMOD=P3^2;
//模式选择键
sbitSET=P3^3;
//状态调节键
sbitADD=P0^6;
//加键
sbitDEC=P0^7;
//减键
sbitspeak=P0^3;
//蜂鸣器
sbitdat=P3^7;
//595数据
sbitclock=P3^5;
//595时钟信号
sbitso=P3^6;
//595锁存信号
sbitgate=P3^4;
//154门控信号
ucharcount,q=0;
//标志位
uchardisbuf[64];
//显示缓冲区
ucharm,n,p,t;
//缓冲区中间量
ucharmin,hour,sec,hour1,nh,nm;
//定义时间映射全局变量
uchardian1,dian2,dian3,dian4;
//用于时间闪烁的冒号
ucharmod_st=0;
//调整选择标志0:
正常走时;
1:
温度;
2:
字幕;
3:
动画
ucharset_st=0;
//显示调整标志0:
ucharmod_key_st=0;
//模式标志,为1则调用一次MOD键处理函数
ucharset_key_st=0;
//设置标志,为1则调用一次SET键处理函数
ucharnz;
//闹钟开启关闭标志nz=0开;
nz=1关
uchark=1,s=1,ss=1;
//秒闪烁标志,调时闪烁标志,调闹钟秒不闪烁标志
ucharx,y;
//时基便于从某种状态中自动还原
uintz,b,f,c,g;
//调时自动恢复标志;
字幕显示速度;
报警时间;
字幕显示速度标志;
图片显示速度标志
ucharspeed=7;
//字幕显示速度
/**主函数**/
voidmain()
{
nh=8;
nm=0;
//闹钟初始时间设定
speak=1;
//关蜂鸣器
gate=1;
//关闭显示,防止花屏
delayms(500);
//等待芯片复位,目的是稳定检测是否需要初始化
while(SET==0)//通电前按下SET键不放,接通电源时便初始化时间信息
{
DS1302_Initial();
}
initTimer();
//初始化定时器
TR0=1;
//开启定时器0
ET0=1;
//允许T0中断
EA=1;
//开中断总开关
IT0=1;
//开启外部中断0
EX0=1;
IT1=1;
//开启外部中断1
EX1=1;
y=0;
//系统时基清零
hour=DS1302_r(0x85);
//读取小时数据
check_wendu();
//读取温度信息
while
(1)
{
while(mod_key_st)
{
mod_key();
EX0=1;
//模式选择
}
if((mod_st!
=1)&
&
set_st==3){set_st=0;
}
/**时间显示模式**/
if(mod_st==0)
ss=1;
//开秒闪
if(set_key_st){set_key();
EX1=1;
if(!
set_st){if(z>
=1000){set_st=0;
z=0;
}}//进入调时选中状态后如果长时间无调整则自动退出
if(set_st==1||set_st==2){while((!
ADD||!
DEC)&
set_st>
0)Set_time(set_st);
}//调节键按下
check_shijian();
//读取时间信息
deal_naozhong();
//闹钟处理函数
display();
//显示
load_shijian();
//将待显示时间内容存至缓冲区准备显示
display();
/**闹钟调节模式**/
if(mod_st==1)
ss=0;
//关秒闪
if(set_st){if(z>
=800){set_st=0;
if(set_st==3)nz=~nz;
//开关闹钟
if(set_st>
0){while((!
0)Set_naozhong(set_st);
m=nh/10;
//计算得到小时十位数字
n=nh%10;
//计算得到小时个位数字
p=nm/10;
//计算得到分钟十位数字
t=nm%10;
//计算得到分钟个位数字
display
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 点阵 显示 系统 设计