点阵屏JZPWord格式文档下载.docx
《点阵屏JZPWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《点阵屏JZPWord格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
资
料
[1]彭伟.单片机C语言程序设计实训100例.电子工业出版社.
[2]周景润张丽娜.Proteus入门实用教程
报告摘要
本文的设计是基于单片机系统的基本模块的一部分。
本文研究了基于89C51单片机LED8×
8点阵显示屏的设计并运用Proteus软件进行原理图绘制,运用Keil软件进行仿真和调试。
主要介绍了LED8×
8点显示屏的硬件电路设计、汇编程序设计与调试、Proteus软件绘制原理图和实物制作等方面的内容,显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。
LED点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
这次单片机设计采用STC89C51为主体来设计。
由于是8*8点阵屏设计,需要端口16个,可采用静态显示模式,用P0口控制行,P1口控制列,通过软件编程,即可实现汉字的显示,并可上移下移,左移,右移,动态流动显示。
如果是16*16点阵屏占用端口较多,则需采用动态扫描的方式实现。
关键词:
单片机led显示89C51
目录
1.引言5
2.方案设计5
2.1.设计目的5
2.2.设计原理5
3.硬件设计6
3.1.单片机最小系统6
3.2.显示部分8
3.3.驱动部分10
4.软件设计11
4.1.软件流程............................................................................................11
4.2.子程序模块............................................................................................11
5.实验结果与讨论13
5.1.实验仿真13
5.2.结果讨论.................................................................................................15
6.心得体会15
7.附录;
源程序16
8.参考文献19
点阵屏的文字滚动显示
引言
LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。
LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。
而实际上经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。
这时一般的显示系统就很难达到要求。
方案设计
设计目的
(3)能做出4个屏组合的16*16LED点阵屏,滚动显示“单片机”三个汉字。
。
设计原理
一般的点阵都是8*8的,即横竖都有8个发光二极管,观察二极管正负极,我们可以很容易发现,如果赋予端口为低电平则对应二极管则被点亮,类似的,如果需要实现某一列或者某一行全亮,也可以进行类似的赋值。
比如,我们要实现第一列全亮,第一列全亮就要求P20=0;
其他为1,则代码为P0=0xff;
P2=0xfe但是如果需要让点阵显示一个字符的话,上述赋值则不能达到目的,这里,我们需要先知道扫描的概念。
所谓扫描,就是每隔一个时间段,发送一组代码,当然,这个时间段要足够小。
由于人眼有视觉暂留效应,人的肉眼无法分辨,因此,经过多次扫描,点阵上就能稳定的显示一个字符。
那么所有的P0和P2的数值就构成了两个长度为8的数组,我们可以在程序中每个一段时间按顺序发送一组代码,只要时间段足够短,那么我们就可以在点阵上看到稳定的字符了。
以上就是单个点阵显示的基本原理。
硬件设计
3.1.单片机最小系统
单片机最小系统包括复位电路、晶振电路和电源电路。
显示部分即点阵显示电路,驱动部分即74ls138驱动电路,所谓单片机,就是将CPU,RAM,ROM,定时/计数器和多种I/O接口电路都集成在一块集成芯片上的微型计算机。
基本模块的制作是基于单片机的16*16点阵滚动显示的基本思路,也是我们研究的基于单片机的16*16点阵滚动显示的重要依据。
如图1所示基于单片机系统基本模块图。
单片机系统
LED部分
单片机最小系统
驱动部分
接口扩展部分
图1单片机系统基本模块图
其中,单片机最小系统包括复位电路、晶振电路和电源电路。
显示部分即点阵显示电路,驱动部分即74ls138驱动电路,接口扩展在本次设计中暂未使用。
本系统选用ATMEL89C51系列单片机,由于它的模块化设计为适应具体的应用提供了极大的灵活性,便于扩展功能,有效的提高了系统的经济性。
AT89S51是一种低工耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的八位CMOS微控制器,使用高密度、非易失存储编程器对程序存储器重复编程。
89c51单片机结构如图所示:
图3-189S51单片机结构框图
图3-2按钮
3.2.显示部分
图为8×
8点阵LED外观及引脚图,其等效电路如图
(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
图3-48×
8点阵LED外观及引脚图
其等效电路图如下:
图3-58×
8点阵LED等效电路
16*16显示屏
图3-674hc138
3.3.驱动部分
74LS138为3线-8线译码器,共有54LS138和74LS138两种线路结构型式。
部分①当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
比如:
A2A1A0=110时,则Y6输出端输出低电平信号。
②利用E1、E2和E3可级联扩展成24线译码器;
若外接一个反相器还可级联扩展成32线译码器。
③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
④可用在8086的译码电路中,扩展内存。
图3-774ls138驱动电路
软件设计软件设计
软件流程
根据点阵屏的功能设计要求给出如下的软件设计流程
图4-1软件流程图
子程序模块
在设计16*16滚动显示的软件部分时,我们必须要明白其中的原理。
本次设计中我们需要注意以下几个问题:
第一,怎么样让点阵显示我们需要的字符,即我们如何获得字符显示的代码。
第二,如何实现字符的滚动显示。
第三,如何使画面保持稳定。
第一,如何取得代码。
现在针对点阵的取字模软件很多,我们只需要打开软件,写入需要取字模的字,然后注意取字模的顺序,是横向还是纵向就行了。
我们这里采用纵向取模,设置字模为C51格式。
这样当写入的字确定后,我们就可以直接复制字模到程序中来实现相应功能。
第二,如何实现滚动显示。
为了实现字符的滚动显示,我们加入了定时中断函数,如下:
voidtimer0()interrupt1using3
{
TF0=0;
TH0=0xb1;
TL0=0xe0;
//这里实现10ms定时,10ms时间到后就产生中断
if(n<
10)//这里可以控制n的大小来改变字符滚动显示的速度
{
n++;
}
else
if(a==0){
m+=2;
if(m>
225)
m=0;
n=0;
}
在主函数中,我们通过:
P0=*(p+m+2*i);
这句话来实现字符的滚动显示,每中断10次后m加2,即字符整体往左移动2个点,移动时间间隔为10*10ms=100ms,由于人眼的视觉暂留效应,我们看到的字符是在流畅的往左移动。
第三,如何使画面保持稳定。
画面的稳定有两个条件:
一,中断的时间应控制在合理的范围之内,时间小了会看不清画面,时间大了画面不连续。
二,选中各个点阵中间的延时,也应当控制在合理范围之内,延时函数如下:
voiddelay(void)
{inti;
for(i=0;
i<
50;
i++);
这两个条件控制好了,我们就可以看到显示的画面很稳定,很流畅。
图4-2子程序流程图
5.实验结果与讨论
5.1.实验仿真
依据各功能模块的功能要求和工作过程画出程序的流程图,然后根据流程图和系统的硬件连接写出详细的程序,接着对各个子程序进行编译,调试,运行,看看是否能达到其功能,然后再将整个程序糅合在一起进行整体软件调试。
实验仿真如图所示。
图5-1实验仿真结果“单”字
图5-2实验仿真结果“片”字
图5-3实验仿真结果“机”字
图5-48*8实验仿真结果
5.2.结果讨论
本设计以AT89C51单片机为系统的控制核心,采用proteus仿真软件进行测试。
Proteus是一款比较常用的单片机仿真软件,用proteus和keil配合进行仿真提高系统运行效率与稳定性。
由于采用了动态扫描的方式实现对点阵式LED电子显示屏的控制,使系统能够稳定、清晰地显示文字。
这个方案设计的16×
16点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;
显示屏各点亮度均匀、充足;
显示图形或文字稳定清晰无串扰;
可用静止、移入移出等多种显示方式显示图形或文字。
6.心得体会
通过这次的设计,我明白了点阵的工作原理,对单片机以及其他外部器件有了更深的理解,在这次课程设计的整个过程中,我们做了一次全面、较规范的设计练习,全面地温习了以前所学过的知识,用理论联系实际并结合单片机原理课程和解决实际问题,巩固、加深和扩展了有关单片机设计方面的知识。
尤其重要的是让我们养成了科学的习惯,在设计过程中一定要注意掌握设计进度,按预定计划完成阶段性的目标。
尤其是通过对AT89C51单片机机常用元器件的设计,掌握了一般单片机设计的程序和方法,让我们对整个单片机程序的设计,C51语言有了一个比较深的理解。
这一次课程设计我学到了许多知识。
使自己的动手能力和独立设计能力真正得到锻炼,对于以后我们的发展与学习来说,都可以看作一笔不小的财富,前面还有很多需要我们去尝试。
通过对通用89C51单片机机常用元器件的设计,掌握了一般单片机设计的程序和方法,让我们对整个单片机程序的设计,C51语言有了一个比较深的理解。
7.附录A;
源程序
#include<
reg51.h>
voiddelay();
intflag;
intn;
intm;
chara;
int
code
table2[][32]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"
0"
0*/
{0x08,0x00,0x08,0x00,0xC8,0x1F,0x48,0x92,0x48,0x52,0x48,0x32,0x48,0x12,0xFF,0x1F,0x48,0x12,0x48,0x32,0x48,0x52,0x48,0x92,0xC8,0x1F,0x08,0x00,0x08,0x00,0x00,0x00},/*"
"
/*
(16X16,单)*/
{0x00,0x00,0x00,0x00,0x01,0x00,0x06,0x00,0xF8,0x7F,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0xFC,0x7F,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00},/*"
1*/
/*(16X16,片)*/
{0x00,0x00,0x20,0x08,0xC0,0x08,0x00,0x0B,0xFF,0xFF,0x00,0x09,0xC1,0x08,0x06,0x00,0xF8,0x7F,0x00,0x40,0x00,0x40,0x00,0x40,0xFC,0x7F,0x02,0x00,0x02,0x00,0x1E,0x00},/*"
2*/
/*(16
X
16,机)
*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
};
/*"
"
voidmain(){
inti;
int*p;
flag=0x10;
n=0;
TMOD=0x01;
TH0=0xb1;
TL0=0xe0;
ET0=1;
IT0=1;
EX0=1;
EA=1;
TR0=1;
p=&
table2[0][0];
while
(1)
for(i=0;
8;
i++)
P0=*(p+m+2*i);
P2=i|0x08;
delay();
P0=*(p+m+2*i+1);
P2=i|0x10;
delay();
}
for(i=8;
16;
P2=(i-8)|0x20;
P2=(i-8)|0x40;
}
}
voiddelay(void){
for(i=0;
i++);
voidZhongDuan()interrupt0{
delay();
a=!
a;
voidtimer0()interrupt1using3
10)
n++;
8.参考文献
[3]陶国正单片机与接口应用技术.苏州:
苏州大学出版社
[4]莫少莹.单片机原理及接口技术课程实验教学改革大众科技出版社
[5]李华.MCS-51系列单片机实用接口技术北京:
北京航空航天大学出版社,1993
[6]王幸之.单片机应用系统抗干扰技术北京:
北京航空航天大学出版社,1999