点阵实现汉字显示系统的设计.docx
《点阵实现汉字显示系统的设计.docx》由会员分享,可在线阅读,更多相关《点阵实现汉字显示系统的设计.docx(21页珍藏版)》请在冰豆网上搜索。
点阵实现汉字显示系统的设计
摘要
LED点阵显示屏在银行、车站、医院、街头、公交车等到处可见。
LED点阵模块以发光二极管为像素单元,将发光二极管芯阵列组合后封装而成。
本设计中采纳的LED点阵是由2个8×8矩阵LED模块组成的8×16双色共阴极LED点阵,其内部利用74HC595芯片,使串行输出转换成并行输出,驱动矩阵LED。
设计中利用AT89C51和双色共阴极LED点阵最终完成点阵显示汉字(包括移动、跳变)的功能。
由于点阵为双色点阵,因此该程序实现了第一个矩阵模块显示红色,而另一模块显示绿色。
该设计不仅利用KEIL软件在实验台上测试成功,而且还利用PORTEUS仿真软件画出了仿真图。
关键词:
LED点阵(矩阵LED)、汉字、74HC59五、双色
Abstract
LEDdotmatrixdisplayinthebank,railwaystations,hospitals,streets,buses,etc.dotmatrixmodulewithLEDasapixelunit,thecombinedlight-emittingdiodearraypackagefromthedesignofLEDdotmatrixisusedintwo8×8matrixLEDmoduleconsistingofatotalof8×16colorcathodeLEDdotmatrix,anditsinternaluse74HC595chip,theserialoutputintoaparalleloutput,drivenmatrix89CusedinthedesignandcolorcommoncathodeLEDdotmatrixdisplayChinesecharactersfinallycompleted(includingmobile,transition)forthetwo-colordotmatrix,sotheprogramachievedthefirstmatrixmoduledisplaysred,whiletheothermoduleshowsdesignisnotonlyusedintheexperimentalstage,KEILsoftwaretestedsuccessfully,butalsodrawnbyPORTEUSsimulationsoftwaresimulationcharts.
Keywords:
LEDdot-matrix(matrixLED),Chinesecharacters,74HC595,color
1硬件介绍
AT89C51单片机介绍
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,可提供以下标准功能:
4K字节闪存,128字节内部RAM,32个I/O口线,两个16位按时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但许诺RAM,按时/计数器,串行通信口及中断系统继续工作。
掉电方式保留RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
图1AT89C51引脚图
引脚功能说明
Vcc:
电源电压GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,即地址/数据总线复位口。
作为输出口历时,每位能吸收电流的方式驱动8个逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,现在P0激活内部的上拉电阻。
P1口:
P1是一个带有内部上拉电阻的8位双向I/O口。
P1的输出缓冲级可驱动(输入或输出)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,现在可做输入口。
因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(输入或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,现在可作为输入口。
因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器获16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄放器(SFR)区中R2寄放器的内容),在整个访问期间不改变。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(输入或输出)4个TTL逻辑门电路。
对P3口写入“1”时,他们被内部上拉电阻拉高并可作为输入口。
现在,被外部拉低的P3口将用上拉电阻输出电流。
RST:
复位输入。
当振荡器工作时,RST引脚显现两个机械周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存许诺)输出脉冲用于锁存地址的低8位字节。
即便不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对输出时钟信号或用于按时。
要注意的是:
当访问外部数据存储器时将跳过一个ALE脉冲。
闪存编程期时,该引脚还用于输入编程脉冲。
PSEN:
程序存储许诺输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每一个机械周期两个PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的PSEN信号不显现。
EA/VPP:
外部访问许诺。
要使CPU仅访问外部程序存储器(地址为0000H---FFFFH),EA端必需维持低电平(接地)。
需注意的是;若是加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU那么执行内部程序存储器中的指令。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
74HC595介绍
图274HC595引脚图
74HC59574HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
74HC595是具有8位移位寄放器和一个存储器,三态输出功能。
移位寄放器和存储器是别离的时钟。
数据在SCK的上升沿输入,在RCK的上升沿进入的存储寄放器中去。
若是两个时钟连在一路,那么移位寄放器老是比存储寄放器早一个脉冲。
移位寄放器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄放器有一个并行8位的,具有三态的总线输出,当使能OE时(为低电平),存储寄放器的数据输出到总线。
8位串行输入/输出或并行输出移位寄放器,具有高阻关断状态。
三态。
符号引脚如图2描述:
QA…QH15,1,7并行数据输出;GND8地;Q’H9串行数据输出;MR10主复位(低电平;SCK11移位寄放器时钟输入RCK12存储寄放器时钟输入G13输出有效(低电平)SER14串行数据输入Vcc16电源
LED点阵介绍
8×8单色点阵共需要64个发光二极管组成,且每一个二极管是放置在行线与列线的叉点上。
关于点阵型LED显示能够采纳共阴极或共阳极,本系统采纳共阳极,其硬件电路如图3所示。
当行上有一正选通信号时,列选端八位数据为0的发光二极管便导通点亮。
如此只需要将图形或文字的显示编码作为列信号跟对应的行信号进行逐次扫描,就能够够逐行点亮点阵。
只要扫描速度大于24Hz,由于扫描时刻专门快,人眼的视觉有暂留效应,就能够够看到显示的是完整的图形或文字。
8×8点阵LED结构以下图4所示。
图38×8点阵外观及引脚图
图48×8LED点阵结构
双色点阵介绍
利用双色共阴极LED点阵,其内部结构如图5所示。
系统利用74HC595芯片,使串行输出转换成并行输出,驱动矩阵LED。
图5LED点阵内部结构
图6 双色点阵显示接口电路
本实验需要用到实验台上的CPU模块(F3区)、LED双色点阵显示模块(B2区)。
双色点阵显示电路原理图参见图6。
2理论分析
系统功能
该系统实现了汉字显示的功能,由于数字、字母等的显示原理与汉字相同,因此为了程序的简便本系统只是实现了汉字的显示。
汉字的显示成效为:
中国、加油别离显示和中国加油转动显示两种情形交替往复显现。
LED显示方式
下面是简单的汉字显示屏的制作,由单片机操纵汉字的显示内容。
利用了两块8×8的LED点阵发光管的模块,组成了一个8×16的LED点阵显示屏。
在那个地址仅做了四个汉字的显示,在实际的利用中能够依照那个原理自行的扩展显示的内容,下面是介绍汉字显示的原理。
LED驱动显示采纳动态扫描方式,动态扫描方式是逐行连番点亮,描驱动以8×16点阵为例,把所有同一行的发光管的阳极连在一路,把所有同一列的发光管的阴极连在一路,先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮必然的时刻,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时刻,然后熄灭;….第8行以后,又从头燃亮第1行,反复轮回。
当如此轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳固的图形。
该方式能驱动较多的LED,操纵方式较灵活,而且节省单片机的资源。
显示数据传输采纳串行传输的方式,操纵电路能够只用一根信号线,将行列数据一名一名传往行列驱动器,在硬件方面无疑是十分经济的。
LED点阵显示模块进行的方式有两种:
(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):
现在用一个P口输出列码决定哪一列能亮(相当于位码),输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。
能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。
(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):
现在用一个P口输出决定哪一行能亮(相当于位码),输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。
能亮的行从上向下扫描完8行(相当于位码循环移位8次)即显示一帧完整的图像。
本设计应用的是第二种的扫描方式,即竖直方向(Y方向)扫描。
每一个字由8行8列的点阵形成显示,即每一个字均由64个点阵来表示,咱们能够把每一个点明白得为一个像素。
一样咱们利用的8×8的点阵宋体字库,即所谓的8×8,是每一个汉字在纵横各8点的区域内显示的。
事实上那个汉字屏不仅能够显示汉字,也能够显示在64像素范围内的任何图形。
程序流程图
主程序流程图中断程序流程图
N
Y
N
Y
N
N
Y
N
Y
Y
N
Y
N
Y
颜色变换
由以下图7可知点阵的行和列由5个595芯片驱动,通过列码选通是红色LED点亮仍是绿色LED点亮。
第一个595操纵第一个8*8中红色LED,第二个595操纵第一个8*8中绿色LED第三个595操纵第二个8*8中红色LED,第四个595操纵第二个8*8中绿色LED,第五个595操纵两个点阵的行。
本系统可通过挪用不同的送码子程序操纵点阵的颜色。
图7行列操纵电路图
3电路与程序设计
源程序
DinEQU
CLKEQU
R_CLKEQU
ORG0000H
JMPMAIN
ORG000BH
LJMPINTS_TO;按时中断
ORG0100H
MAIN:
MOVR2,#0
MOV90H,#00H
MOVR1,#64;64个字符
MOVR0,#20H
MOVDPTR,#TAB
MOVEDATA:
;把全数字符复制到20H
MOVA,R2
MOVCA,@A+DPTR
MOV@R0,A
INCR2
INCR0
DJNZR1,MOVEDATA
MOVTMOD,#01H
;按时器0工作方式为1
MOVTL0,#0AFH;置计数初值
MOVTH0,#3CH
;0FFFFH-3CAFH=50000,50ms
MOVR7,#3
;软件计数器,循环5次,即每隔3*50ms=150ms移一列
SETBET0
;开中断,但未启动按时器
SETBEA
CLRR_CLK;高电平显示
MOVR3,#01H
;R3操纵行,进行行扫描,高电平有效
MOVR4,#0FFH
;R4、R5操纵中国、加油别离显示的时刻
MOVR5,#03H
A0:
MOVR2,#08H
MOVR0,#20H
MOVA,90H
;90H中寄存移动的列数,假设为0那么中国、加油别离显示,不然移列显示
CJNEA,#00H,LOOP
CJNER5,#02H,LOP0
LOP0:
JNCLOOP
MOVR0,#40H
;实现’加油’的显示
CJNER5,#01H,LOP1
LOP1:
JNCLOOP
MOVR0,#20H
LOOP:
MOVR1,#4
MOVA,R3
RRA;行码右移一名转下一行
MOVR3,A
LCALLOUTDATA
A1:
MOVA,@R0
LCALLOUTDATA
INCR0
DJNZR1,A1
SETBR_CLK;显示一行
CLRR_CLK
DJNZR2,LOOP;下一行
DJNZR4,LOP3
MOVR4,#0FFH
LOP2:
DJNZR5,LOP3
SETBTR0
LOP3:
MOVA,90H
CJNEA,#30H,LOP4
LOP4:
JCLOP5
CLRTR0
MOV90H,#00H
MOVR5,#03H
LOP5:
LJMPA0
OUTDATA:
MOVR6,#8
OUT1:
RRCA
MOVDIN,C
CLRCLK
SETBCLK
NOP
NOP
DJNZR6,OUT1
RET
INTS_TO:
PUSHACC;保留ACC
PUSH00H;保留R0
PUSH01H;保留R1
PUSH02H;保留R2
CLRTR0
DJNZR7,BACK
;计数,次数不到返回
MOVR7,#3
INC90H
LOOP1:
MOVR0,#23H
MOVR1,#40H
MOVR2,#8
LP1:
CLRC;将23h的最高位给cy
MOVA,@R0
RLCA
LP2:
MOVA,@R1
;将40h的最高位左移实现中在油后
RLCA
MOV@R1,A
LP3:
INCR1
;将43h的最高位给cy实现油在加后
INCR1
INCR1
MOVA,@R1
RLCA
MOV@R1,A
LP4:
DECR0;加在国后
DECR0
DECR0
MOVA,@R0
RLCA
MOV@R0,A
LP5:
INCR0;国在中后
INCR0
INCR0
MOVA,@R0
RLCA
MOV@R0,A
INCR1
INCR0
INCR0
INCR0
INCR0
DJNZR2,LP1
BACK:
POP02H
POP01H
POP00H
POPACC
MOVTL0,#0AFH
MOVTH0,#3CH
;0FFFFH-3CAFH=50000,50ms
SETBTR0
RETI
TAB:
;右绿/右红/左绿/左红;低电平点亮;显示中国加油
DB80H,0FFH,0FFH,0F7H
;显示中国
DB0BEH,0FFH,0FFH,0F7H
DB0A2H,0FFH,0FFH,80H
DB0B6H,0FFH,0FFH,0B6H
DB0A2H,0FFH,0FFH,80H
DB0B2H,0FFH,0FFH,0F7H
DB80H,0FFH,0FFH,0F7H
DB80H,0FFH,0FFH,0F7H
DB0FBH,0FFH,0FFH,0DFH
;操纵第1行显示加油
DB0FBH,0FFH,0FFH,80H
;操纵第2行
DB0A0H,0FFH,0FFH,0D2H
;操纵第3行
DB0EAH,0FFH,0FFH,0D2H
;操纵第4行
DB0A0H,0FFH,0FFH,0D2H
;操纵第5行
DB0CAH,0FFH,0FFH,0D2H
;操纵第6行
DB0A0H,0FFH,0FFH,0C0H
;操纵第7行
DB0FFH,0FFH,0FFH,0B7H
;操纵第8行
END
;程序的大体原理:
口送行列扫描码
;显示完一行,行操纵码左移,显示第2行。
一直到8行显示完,即显示了一屏。
;从头从1~8行,反复显示255次(由R4、R5操纵),以避免字符一闪而过(显示‘中国’)。
;接着显示下屏,下一屏的取字寄放器的地址加20H,同第一屏原理一样(显示‘加油’)。
;如此别离两字显示3次后(由R5操纵),启动按时器中断,开始转动显示‘中国加油’,
;转动显示中,左移48列后(由RAM中的90H单元操纵),又开始重复别离两字显示。
PROTEUS仿真
由于Proteus元件库中没有双色点阵块,Proteus仿真时由红绿两块点阵块代替双色点阵,Proteus仿真时单片机需要加载程序,加载程序为.HEX文件。
本设计利用KeilμVision4,在新建Keil项目时选择AT89C52单片机作为CPU,将源程序导入,在“OptionsForTarget”对话窗口中,选中“Output”选项中的“CreateHEXFile”,编译链接后就能够够生成.HEX文件。
在ProteusISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,依照正确的文件途径加载.HEX文件。
对单片机设置完毕后就能够够开始仿真了。
仿真进程中如有硬件问题可在ProteusISIS中直接修改,如有软件问题可在KeilμVision2中直接修改,通过Keil与Proteus的联合调试就能够够取得中意的结果。
利用Proteus实现了对点阵式LED转动汉字显示屏的仿真,说明程序和电路图都没有问题。
图8PROTEUS仿真电路图
4结果分析
仿真结果
图9别离两字显示时的成效
图10转动显示时的显示成效
实验台测试结果
图11别离两字显示时的成效
图12转动显示时的显示成效
5总结(体会教训)
通过本次的课程设计,使我对单片机有了进一步的了解。
咱们做的是LED点阵显示汉字,开始的时候听同窗说那个很简单,可是等我看到题目以后,大脑一片空白,不明白该如何下手,复杂的电路图,难懂的标号,看得我云里雾里,不明因此。
第二天的时候我问教师,教师也没给咱们说明白。
然后我就想看他人的程序,只要明白那三个管脚的作用也能写出程序来,然后我的同伴给我讲了下三个引脚的作用,咱们就开始写程序了。
我此刻Proteus上仿真,希望能做出正确的结果。
但我写好程序仿真的时候,本来想让点阵只亮一列或只亮一行,但一仿真以后,点阵全亮了,我有修改送进去的数据,结果对角线上的数据不亮,对角线周围的数据是橙色。
然后我继续修改程序,结果仍是一样,后来我又仿真了两次,两次结果都不一样。
我那时专门愁闷,也专门沮丧,我感觉可能是仿真结果错了,也有可能是因为电脑中毒的缘故。
后来,我就舍弃了,我对自己专门的失望。
我开始看同伴改写的他人的程序,不是自己写的程序,看起来也是似懂非懂。
内心有一种空洞的感觉,感觉自己学了一学期的单片机,一学期的数电,连电路图都看不明白,我在内心默默的谴责自己。
只是这也让我更清楚的熟悉了自己,学习不单单是会就行的,更要熟,熟才能生巧,不然只会是看着明白做着糊涂,什么也不行。
值得一说的还有这次的晨会,尽管我做的不是太好,可是我挺喜爱的,喜爱自己能够有机遇演讲,也喜爱听他人演讲。
周一的时候我没想到我会在今天演讲,预备的也不是很充分,当听到班长叫我名字的时候,我深呼吸了一下,然后走到前面,开始了我的演讲,因为是自己写的稿子,碰到忘了的地址自己也就替换了,我写的稿子很短,演讲的还算流畅,流畅的有点仓促。
最后一天的时候听到他人的演讲,感觉她们专门厉害,不但发音标准,演讲的也很流畅,而且还向别的同窗提了问题。
我想在以后的学习中,我想我应该对自己严格要求。
不能太心急,欲速那么不达,碰到可不能的东西,更应该淡定,不能急躁,沉住气,相信自己总能做出来。
参考文献
[1]刘玉宾朱焕立等《单片机原理及接口技术实践教程》机械工业出版社,2004
[2]张靖武周灵彬《单片机原理、应用与PROTEUS仿真》电子工业出版社,2020
[3]赵全利肖兴达《单片机原理及应用教程》机械工业出版社,2007
[4]姜威《有效电子系统设计基础》2020年1月
[5]实验台原理图
[6]实验台实验指导书
[7]网络