其特点:
8位串行输入/8位串行或并行输出存储状态寄存器,三种状态。
输出寄存器可以直接清除100MHz的移位频率。
输出能力:
并行输出,总线驱动;串行输出;标准中等规模集成电路。
74LS595的管脚图及其说明如图四。
对3个输入信号进行译码。
得到8个输出状态。
G1,G2A,G2B,为数据允许输出端,G2A,G2B低电平有效。
G1高电平有效。
A,B,C为译码信号输出端,Y0~Y7为译码输出端,低电平有效
图三74LS154管脚图
管脚及其说明:
QA--QH:
八位并行输出端。
QH':
级联输出端。
SI:
串行数据输入端。
74595的控制端说明:
/SCLR(10脚>:
低点平时将移位寄存器的数据清零。
SCK(11脚>:
上升沿时数据寄存器的数据移位。
QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。
<脉冲宽度:
5V时,大于几十纳秒就行了)
RCK(12脚>:
上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
<5V时,大于几十纳秒就行了),更新显示数据。
/G(13脚>:
高电平时禁止输出<高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。
比通过数据端移位控制要省时省力。
图四:
74LS595管脚图
图五点阵及其驱动
4软件设计
本软件要求实现如下要求:
汉字要稳定、明亮并且文字要以一定速度上升滚动显示。
显示屏软件模块:
初始化程序、主程序、多字滚动、显示程序、扫描程序。
显示程序的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
软件设计中,显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。
显示驱动器程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置<初始化)、显示效果处理等工作,由主程序来实现。
4.1显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率<帧频)计算公式如下:
刷频率<帧频)=1/16×T0溢=1/16×f/12<65536-t)
其中f位晶振频率,t为定时器T0初值<工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。
图六为显示驱动程序<显示屏扫描函数)流程图
图六
4.2系统主程序
本设计的系统软件能使系统LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
图形或文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约几秒;接着向上滚动显示“--------”这几个汉字及一个图形,然后以“卷帘入”效果隐去图形。
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器<主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
如果想改变些事内容,先用字模产生字代码,将用这段代码覆盖原来的代码,即可显示你想要的内容。
图七是系统主程序流程图。
图七
5系统调试
◆调试主要分为硬件调试和软件调试:
硬件调试:
在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。
在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。
当然,在设计的过程中也存在着失误和不足,在调试中进行修改了。
焊接完成后,检验点阵、及线路的好坏:
烧进检验程序,点阵将自第一排向下<上)点亮。
检验无异常,下载主程序
◆软件调试:
软件为老师所提供提供,其原理在上一模块以作说明,在这里
再作说明,软件经调试无误,直接将其下再到单片机中,看是否达到所要的效果
软件部分是先参考书上的例子,然后自己根据硬件电路写程序,
由于以前所学是单片机汇编语言,所以这个系统在编写程序过程中都采用汇编语言编写。
刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。
但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行
6设计总结
本文设计的6x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示的图形和文字较稳定、清晰。
图形或文字向上滚动显示。
本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
在此次设计中,我们得到以下体会:
一、在这次点阵设计的过程让我进一步熟悉KEIL及Proteus的使用。
二、本次设计结果仍有缺陷,有一行总是全亮,干扰显示。
三、通过这次点阵设计,重新复习并进一步学习了MCS-52优点,明确了研究目标。
四、本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
图形或文字以移入移出方式显示。
五、在后的设计中,既要想到电路器件的联合使用,又要灵活变通,举一反三。
在焊接方面,我们了解到焊接某些器件时,要先消去电烙铁上的静电,防止静电对芯片特别是放大器件造成伤害,焊接二极管、三极管等芯片时要快,防止持续高温损坏芯片。
7.附录A;源程序
***************************************
;**
;*单个16x16的点阵电子屏字符显示器*
;*ATA89C5212MHz晶振*
;*2004.2.11LRM*
;***************************************
;显示字用查表法,不占用内存,字符用16x16共阳LED点阵,
;效果:
向上滚动显示5个字,再重复循环。
;R1:
查表偏址寄存器,B:
查表首址,R2:
扫描地址<从00~0FH)。
;R3:
滚动显示时控制移动速度,单字显示可控制静止显示的时间。
;*************;
;中断入口程序;
;*************;
;
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
LJMPINTTO
ORG0013H
ERTI
ORG001BH
ERTI
ORG0023H
RETI
ORG002BH
RETI
;
;***********;
;初始化程序;
;***********;
;
;
;***********;
;主程序;
;***********;
;
START:
MOV20H,#00H;清零标志,00H为第16行开始扫描标志,01为1帧
;扫描结束标志
MOVA,#0FFH;端口初始化
MOVP1,A
MOVP1,A
MOVP3,A
MOVP0,A
CLRP1.6;串行寄存器输入打入输出控制位
MOVTMOD,#01H;使用T0做16位定时器,行扫描用。
MOVTH0,#0FCH;1ms初值<12MHz)
MOVTL0,#18H
MOVSCON,#00H;串口0方式传送显示字节
MOVIE,#82H;T0中断允许,总中断允许
MOVSP,#70H
MAIN:
LCALLDISI;显示准备,黑屏,1.5s
MOVDPTR,#TAB
LCALLMOVDISP;向上滚动显示一页<8个字)
INCDPH
LCALLMOVDISP;向上滚动显示一页<8个字)
INCDPH
LACLLMOVDISP;向上滚动显示一页<8个字)
AJMPMAIN
;
;
;***********************;
;多字滚动显示程序;
;***********************;
;每次8个字,入口时定义好DPTR值
;
MOVDISP:
MOVB,#00H;向上移动显示,查表偏值暂存<从00开始)
DISLOOP:
MOVR3,#07H;移动速度
DISMOV:
MOVR2,00H;第0行开始
MOVR1,B
SETBTR0;开扫描(每次一帧>
WAITMOV:
JBC01H,DISMOV1;标志为1扫描一帧结束<16ms为1帧,每行1ms)
AJMPWAITMOV
DISMOV1:
DJNZR3,DISMOV;1帧重复显示(控制移动速度>
INCB;显示字的下一行<每行2字节)
INCB
MOVA,R1;R1为0,8个字显示完
JZMOVOUT
AJMPDISLOOP
MOVOUT:
RET;移动先是结束
;
;
;****************;
;单字显示程序;
;****************;
;显示表中某个字;
;****************;
DIS1:
MOVR3,#5AH;静止显示时间控制<16ms*#=1.6s)
DIS11:
MOVR2,#00H;一帧扫描初始值(行地址从00~0FH>
MOVDPTR,#TAB;取表首址
MOVR1,#00H;查表偏址(显示第一个字>
SETBTR0;开扫描<每次一帧)
WAIT11:
JBC01H,DIS111;为1,扫描一帧结束
AJMPWAIT11
DIS111:
DJNZR3,DIS11
RET
;
;
;************;
;扫描程序;
;************;
;1ms刷新一次,每行显示1s
INTT0:
PUSHACC
MOVTH0,#0FCH;1ms初值重装
MOVTL0,#18H
JBC00H,GOEND;16行扫描标志为1,结束
INCR1;取行右边字节偏址
MOVA,R1
MOVCA,@A+DPTR;查表
MOVSBUF,A;串口0方式发送
WAIT:
JBCTI,GO;等待发送完毕
AJMPWAIT1
GO:
DECR1;取行左边字节偏址
MOVA,R1
MOVCA,@A+DPTR
MOVSBUF,A
WAIT1:
JBCT1,GO1
AJMPWAIT1
GO1:
SETBP1.7;关行显示,准备刷新
NOP;串口寄存器数据稳定
SETBP1.6;产生上升沿,行数据打入输出端
NOP
NOP
CLRP1.6;恢复低电平
MOVA,R2;修改显示行地址
ORLA,#0F0H;修改显示行地址
MOVR2,A;修改显示行地址
MOVA,P1;修改显示行地址
ORLA,#0FH;修改显示行地址
ANLA,R2;修改显示行地址
MOVP1,A;修改完成
CLRP1.7;开行显示
INCR2;下一行扫描地址值
INCR1
INCR1;下一行数据地址
MOVA,R2
ANLA,#0FH
JNZGO2
SETB00H;R2为01H,现为末行扫描,置标志
GO2:
POPACC
RETI
GOEND:
CLRTR0;一帧扫描完毕,关扫描
SETB01H;一帧扫描完毕,置结束标志
POPACC
RETI;退出
;
;
;***************;
;扫描文字表;
;***************;
;
TAB:
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,00FFH,0FFH,0FFH;黑屏
DB
0F9H,0BFH,0C7H,0AFH,0F7H,0B7H,0F7H,0B7H,0F7H,0BFH,000H,001H,0F7H,0BFH,0F7H,0B7H;我
DB
0F1H,0D7H,0C7H,0CFH,037H,0DFH,0F7H,0AFH,0F6H,06DH,0F7H,0F5H,0D7H,0F9H,0EFH,0FDH;
DB
0FFH,007H,0C0H,06FH,0EDH,0EFH,0F6H,0DFH,0C0H,001H,0DDH,0FDH,0BDH,0FFH,0C0H,003H;爱
DB
0FBH,0FFH,0F8H,00FH,0F3H,0DFH,0F4H,0BFH,0EFH,03FH,09CH,0CFH,073H,0F1H,0CFH,0FBH;
DB
0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H;单
DB
0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
DB
0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH;片
DB
0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0FFH
DB
0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H;机
DB
0ABH,077H,0AFH,077H,06EH,0F7H,0EEH,0F5H,0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH;
DB
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;黑屏
DB
0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
END
8.附录B;作品实物图片
实物图如下图
下图为总体电路图
8.参考文献
[1]刘欣铭,张广斌.LED显示屏技术综述[J].黑龙江电力,2003,25(4>:
294-296.
[2]阳进.基于单片机的LED显示屏的汉字显示[J].中国科技信息,2005,<12):
112.
[3]MarkNelson著.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002.
[4]王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.
[5]韩润萍,陈小萍.点阵LED显示屏控制系统[J].微计算机信息,2003,19<10):
50-51.