LED点阵显示屏实验报告.docx
《LED点阵显示屏实验报告.docx》由会员分享,可在线阅读,更多相关《LED点阵显示屏实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
LED点阵显示屏实验报告
16
16点阵LED电子显示屏的设计
摘要:
文章介绍了基于单片机AT89C51的16
16点阵LED电子显示屏的设计。
分别阐述了显示屏显示的基本原理,硬件设计、控制方法及其程序的实现。
经过调试和分析,设计的结果能够实现对汉字的静态和动态显示,动态显示的内容有多种方式,同时又可通过上位机更新显示的内容。
关键字:
AT89C51;16
16点阵;LED;显示屏
一绪论
LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。
它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。
并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。
LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。
1LED点阵显示屏概述
LED点阵显示屏的构成型式有多种,其中典型的有两种。
一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。
目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。
一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。
国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。
随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。
因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。
而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。
2LED显示屏控制技术状况
显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。
二系统总体设计方案
1硬件框图
汉字点阵的控制电路采用C51系列单片机,硬件电路可分为单片机控制器、LED显示屏行列驱动电路、LED点阵显示屏三部分,如下图所示。
单片机
AT89C51
列驱动
74HC595
行驱动
译码器74HC154
3个16X16点阵
振荡电路
复位电路
系统设计硬件框图
2基本原理
点阵LED扫描法介绍
点阵LED一般采用扫描式显示,实际运用分为三种方式:
(1)点扫描
(2)行扫描
(3)列扫描
若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。
若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于即可符合视觉暂留要求。
此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
汉字的存储
用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。
第一步是获得数据并保存,即在存贮器中建立汉字数据库。
第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。
获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图所示的被分成16×16共256个小方格的矩形框中,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。
以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。
然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个待显示数据序列。
将这个序列存到ROM中进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在LED发光二极管点阵上显示多汉字信息的目的。
第二步工作的步骤是:
先在扫描模块的控制下,由地址线确定每次由ROM送出某一列的16个LED所要显示的汉字的控制字节数据,同时由扫描模块输出的5位扫描码经两个4-16译码器解码后决定相应的某一列可以被点亮,而另外31列都不能被点亮。
该状态持续约毫秒后,就接着进行下一行的扫描。
当完成了一次32行的扫描后,也就完成了一帧画面的显示。
重复上述过程不断修改ROM的地址区间的起始地址,转向下一幅画面的数据传送和显示。
如此进行,就可以在LED点阵模块上显示ROM中存储的汉字。
三硬件系统设计
1硬件原理图
利用Proteus仿真软件制作出详细的硬件原理图如下:
硬件原理图
2元器件的选择
元件编号
规格参数
LED
16x16点阵
PCB板
10cm*10cm环氧板
U1~U6
74HC595
U7
AT89C51
U8
74HC154
R1
2K欧姆
C1、C2
33pF
C3
10uF
3芯片简介
(1)AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
时钟电路由AT89C51的18,19脚的时钟端(XTAL1及XTAL2)以及12 MHz晶振X1、电容C2,C3组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51的RST复位输入端。
外形及引脚排列如图所示
AT89C51外形及引脚排列
(2)74HC154
74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。
74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。
该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。
任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。
当其余的使能输入端置低时,地址输出将会跟随应用的状态。
(3)74HC595
74HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
74HC595是具有8位移位存储器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SHCP(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在STCP(存储器时钟输入)的上升沿输入到存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
其特点:
1.是8位串行输入/8位串行或并行输出存储状态寄存器,三种状态。
2.输出寄存器(三态输出:
就是具有高电平、低电平和高阻抗三种输出状态的门电路。
)可以直接清除100MHz的移位频率
四系统软件设计
1编程思路
根据以上硬件电路和单片机控制原理,编程思路为:
a先对相关变量进行初始化。
b调用显示程序
c装载三个汉字的第一行数据,并显示出来。
d依次显示三个汉字的第二行至第十六行。
e结束
2流程图:
3系统的仿真调试
1)将上述程序原代码用Keil软件编译产生一个“.hex”为后缀的用于烧写芯片的文件。
2)把生成的hex文件添加到硬件电路图中的单片机驱动程序中。
3)在ISIS电路图中点击左下角的运行按钮,则可在LED显示点阵中看到图结果。
五设计总结
本次课程设计的制作使我对Proteus、Keiluvision2等软件的认识有了进一步的加深,对它们的使用能力也得到了进一步的加强。
同时也加深对单片机课程的全面掌握和认识,对单片机课程的应用得到了更深的了解。
虽然本设计只使用了一块16×16LED点阵,电路简单,但是已经包涵了LED汉字滚动显示屏的电路基本原理、基本程序和Proteus软件仿真,只要扩展单片机的10接口,并增加一些LED点阵和相关芯片,就能设计出更大面积、更多花样的LED显示屏。
在一开始做课程设计的时候由于缺乏经验和资料,没有找准目标,思路和设计都缺乏针对性,在一些小细节上浪费了很多时间。
通过和同学的交流,找准了此次课程设计的重点,在网上有目的的找到了相关的资料,在同学的帮助和自己的努力下完成了最后的课程设计。
虽然还有很多地方需要完善,但通过本次课程设计使我对自己的动手能力更加的有自信,同时也了解到人多力量大的道理,和同学的交流以及上网搜索资料能更快更好的完成任务。
参考文献:
1)谢龙汉,莫衍,Protues电子电路设计及仿真.电子工业出版社
2)楼然苗,李光飞.单片机课程设计指导[M].北京:
北京航空航天大学出版社,.
3)周兴华.单片机智能化产品C语言设计实例详解北京航空航天大学出版社,2005.
4)戴俊峰.嵌入式系统大屏幕LED点阵显示器[J].现代电子技术,2004,27(19).
5)冯寿鹏.基于嵌入式系统的LED信息显示技术研究[J].现代电子技术,2005
(1).
6)金炯泰,金奎焕.如何使用KEIL8051C编译器[M]北京航空航天大学出版社,2002.
7)杨世品.基于Proteus的单片机出租车计价器的设计.微计算机信息,2007.
附录:
#include<>
#include<>
unsignedcharcodeFONT16x16[3][32]={
{0x12,0x48,0x12,0x48,0x13,0xC8,0x12,0x48,0x10,0x08,0x10,0x08,0x10,0x28,0x10,0x10,0x08,0x00,0x08,0x04,0x0F,0xFE,0x10,0x08,0x10,0x48,0x33,0xE8,0x52,0x48,0x92,0x48},//何
{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x00,0x00,0xFF,0xFE,0x01,0x00},//宁
{0x14,0x08,0x25,0x10,0xE4,0xA0,0x24,0x40,0x28,0xA0,0x29,0x10,0x32,0x0E,0x24,0x04,0x00,0x40,0x40,0x40,0x30,0x40,0x17,0xFC,0x04,0x44,0x84,0x48,0x44,0x40,0x0F,0xF8,
}};//波
sbitSDI=P2^1;
sbitSRCLK=P2^0;
sbitRCLK=P2^2;
#defineLineCtrlP1
voiddelay(unsignedintus)
{
while(us--);
}
voidSendByte(unsignedchardat)
{
unsignedchari;
for(i=0;i<8;i++)
{
SRCLK=0;
if(dat&0x80)
SDI=1;
else
SDI=0;
SRCLK=1;
dat=dat<<1;
}
}
voidDisplay(unsignedchar*dat1,unsignedchar*dat2,unsignedchar*dat3)
{
unsignedchari;
for(i=0;i<16;i++)
{
SendByte(dat3[2*i+1]);SendByte(dat3[2*i]);
SendByte(dat2[2*i+1]);SendByte(dat2[2*i]);
SendByte(dat1[2*i+1]);SendByte(dat1[2*i]);
RCLK=0;
_nop_();
_nop_();
_nop_();
_nop_();
LineCtrl=i;
RCLK=1;
delay(100);
}
}
voidmain(void)
{while
(1)
Display(FONT16x16[0],FONT16x16[1],FONT16x16[2]);
}