51单片机的16X16LED点阵式汉字电子显示屏的设计.docx
《51单片机的16X16LED点阵式汉字电子显示屏的设计.docx》由会员分享,可在线阅读,更多相关《51单片机的16X16LED点阵式汉字电子显示屏的设计.docx(40页珍藏版)》请在冰豆网上搜索。
51单片机的16X16LED点阵式汉字电子显示屏的设计
学号:
0121018700318
课程设计
题目
4个8x8点阵LED电子显示屏的设计
学院
物流学院
专业
物流工程
班级
物流ZY1001
姓名
宋金龙
指导教师
朱宏辉
2013
年
6
月
25
日
摘要
本设计是基于MCS-51的16x16点阵LED电子显示屏的设计,16x16的点阵共有256个发光二极管,我们采用动态扫描的显示方法,更节省锁存器也就节省了成本。
扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(即我们采用共阳极的接法)。
采用扫描方式进行显示时,每一行和每一列都有一个行驱动器和列驱动器,各行的同名列和各列的同名行共用一个驱动器。
我们采用四个74LS273锁存器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
编写点阵显示程序,利用proteus画出电路原理图并装入程序仿真调试,仿真成功后完成电路焊接并装入程序完成实物设计。
整个设计过程让我们学到许多实践知识!
LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息,由点阵LED组成的汉字显示屏在工工程所应用非常广泛。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。
本文设计的是一个室内用16x16的点阵LED图文显示屏,图形或文字显示有静止、移入移出等显示方式。
本设计是基于MCS-51单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外、该设计只需简单的级联就能实现显示屏的扩展,但级联时要注意不要超过驱动负载范围。
关键字:
LED,点阵式,显示屏,AT89C51
第一章:
绪论
1.1掌握单片机应用系统的一般过程和方法
综合运用单片机原理与接口技术课程和其它有关先修课程的理论及方法,分析和解决单片机应用系统的设计、分析和实验开发等相关问题,进一步巩固和加深对所学知识的理解。
通过课程设计实践,掌握单片机应用系统的一般过程和方法,培养分析和解决实际问题的能力。
培养设计的基本技能
通过课程设计,学会运用相关技术资料和电子技术常用设备和工具,掌握有关的设计流程、硬件及软件技术平台的基本操作使用方法,培养分析和设计的基本技能。
1.2:
设计要求
1、以MCS-51系列的单片机为核心器件,组成一个点阵式汉字显示屏。
2、显示屏由一块16x16LED点阵显示器组成,可以依次显示10个汉字。
3、通过编程能够随时对汉字进行修改、调整。
第二章:
硬件电路的设计
2.1设计思路
根据设计要求,初步确定设计方案如下:
1.选择4片74LS273作为16*16点阵LED显示器的数据锁存器;
2.1#、2#锁存器分别控制上八行和下八行,3#、4#锁存器分别控制左八列和右八列;
3.P0口作为I/O口,输出行数据和控制信号;
4.P2口作为I/O口,与“写”控制信号相配合,输出列控制信号;
5.通过编程依次显示汉字“欢迎光临武汉理工大学”等十个汉字。
2.2实验器材
AT89C51芯片,锁存器74LS273,4片8x8的LED显示器组合而成的16x16LED显示屏,电阻、电容、晶振片、电源、门电路等。
2.2.1锁存器74LS273介绍
74LS273是一种带清除功能的8D触发器,D0~D7为数据输入端,Q0~Q7为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
引脚介绍:
1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;当1脚为高电平时,11脚CP(CLK)触发端,锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上。
2.3硬件电路设计框图
根据设计要求与设计思路,硬件电路框图如图2.2.1所示。
硬件电路结构有六个部分组成:
时钟电路、复位电路、点阵显示器阳极驱动电路、阴极驱动电路和16*16点阵显示器电路。
图2.2.1
图2.2.2为各部分硬件电路的原理图
(a)振荡电路
(b)复位电路
2.416*16点阵LED显示器汉字显示的工作原理
我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素。
我们以显示汉字“大”为例,来说明其扫描原理:
在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。
方向为p00到p07,显示汉字“大”时,p05点亮,由上往下排列,为p0.0灭,p0.1灭,p0.2灭p0.3灭,p0.4灭,p0.5亮,p0.6灭,p0.7灭。
即二进制00000100,转换为16进制为04h。
依照这个方法,继续进行下面的扫描,一共扫描32个8位,即可以得出汉字“大”的扫描代码。
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
16*16点阵LED显示器有两种接线形式,即共阴极接法和共阳极接法。
共阳极接法的原理图如图2.2.3(a)所示,途中只画出了4*4点阵的二极管。
每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。
当给发光二极管阳极引出端r1高电平时,阴极引出端c1加低电平时,左上角的二极管点亮。
因此,对行和列的电平进行扫描控制时,可以实现显示不同汉字的目的。
图2.2.316*16点阵LED显示器原理图及引脚排列
(a)16*16点阵LED原理图
(b)4个8*8点阵LED引脚排列
2.5如何将4片8x8的LED拼接成一片16x16的LED显示屏(显示屏的扩展)
1、首先选定4片MATRIX-8X8RED(颜色自选)并将它们左转90度以实现对应的行线和列线连接;
2、将显示器分成上下两部分,左右两部分,将对应的行线和列线连接起来,如图;
3、拖动左右两边的显示器拼接在一起,然后拖动上下的显示器拼接在一起,结果如图;
4、对于4片8x8的显示屏也可以通过总线的方法连接;
2.6点阵LED显示器与单片机的接口
16*16点阵LED显示器引脚排列如图2.2.3(b)所示。
当采用单片机进行控制时,连接16*16点阵LED显示器需要接入四片74LS273锁存器,。
在编程控制时,将16*16点阵LED显示器分成上下两部分,上半部分8行16列和下半部分8行16列。
1#、2#锁存器分别控制上八行和下八行,3#、4#锁存器分别控制左八列和右八列。
每一列由两个字节组成,数据分成两次送入扫描一列,显示一个字需要扫描16次。
“欢迎光临”显示如图2.2.4,可以按照从左到右,先下后上的顺序以此写出“欢迎光临武汉理工大学”等字的编码。
“欢迎”显示字样
图2.2.4“光临”显示字样
图2.2.5整体电路图
第三章:
系统软件设计
“欢迎光临武汉理工大学”10个字的编码表如下:
TAB1:
DB00H,00H,10H,00H,34H,08H,44H,04H;“欢”字编码数据
DB04H,03H,7CH,04H,06H,28H,38H,10H
DB0FH,0CH,89H,03H,0F8H,03H,08H,0CH
DB28H,18H,1CH,30H,08H,20H,00H,00H
TAB2:
DB00H,00H,40H,10H,40H,30H,06EH,1FH;“迎”字编码数据
DB06CH,18H,00H,10H,00H,24H,0FEH,23H
DB02H,21H,82H,20H,0FFH,3FH,02H,21H
DB02H,23H,0FFH,21H,02H,20H,00H,00H
TAB3:
DB00H,00H,40H,00H,44H,20H,48H,20H;“光”字编码数据
DB50H,10H,0E0H,0FH,40H,00H,0FFH,1FH
DB60H,20H,50H,20H,48H,20H,46H,20H
DB60H,20H,40H,10H,00H,00H,00H,00H
TAB4:
DB0F0H,03H,00H,40H,00H,20H,0FFH,1FH;“临”字编码数据
DB00H,00H,00H,00H,40H,3FH,31H,21H
DB1FH,21H,14H,21H,24H,3FH,64H,21H
DB44H,21H,46H,21H,04H,3FH,00H,00H
TAB5:
DB10H,00H,10H,08H,10H,18H,90H,1FH;“武”字点阵数据
DB14H,08H,0F4H,07H,94H,04H,94H,04H
DB14H,04H,10H,00H,0FEH,00H,10H,03H
DB12H,0CH,14H,10H,10H,20H,00H,30H
TAB6:
DB00H,00H,00H,70H,22H,78H,44H,0C4H;“汉”字点阵数据
DB0CCH,06H,00H,40H,04H,20H,34H,10H
DB0C4H,08H,04H,05H,04H,02H,04H,05H
DB0C4H,08H,3EH,10H,04H,20H,00H,30H
TAB7:
DB08H,21H,08H,61H,0F8H,1FH,08H,09H;“理”字点阵数据
DB08H,05H,00H,00H,00H,80H,0FCH,0A1H
DB24H,0A1H,24H,0A1H,0FCH,0FFH,24H,0A1H
DB24H,0B1H,0FEH,0A1H,04H,80H,00H,80H
TAB8:
DB00H,00H,00H,10H,08H,10H,08H,10H;“工”字点阵数据
DB08H,10H,08H,10H,08H,10H,0F8H,1FH
DB08H,10H,08H,10H,08H,10H,08H,10H
DB08H,10H,00H,10H,00H,00H,00H,00H
TAB9:
DB00H,00H,40H,40H,40H,40H,40H,20H;“大”字点阵数据
DB40H,10H,40H,0CH,40H,03H,0FCH,00H
DB40H,03H,40H,0CH,40H,10H,40H,20H
DB40H,60H,40H,40H,40H,40H,00H,00H
TAB10:
DB00H,00H,40H,00H,30H,00H,14H,04H;“学”字点阵数据
DB18H,04H,50H,04H,50H,24H,54H,44H
DB58H,3FH,50H,05H,0D4H,04H,16H,04H
DB10H,04H,50H,04H,30H,00H,00H,00H
第四章:
系统程序设计
一.主程序
ORG0000H
MAIN:
MOVR6,#10H;设置“欢”字显示的延时时间常数
HUANZ:
LCALLHSUB;调“欢”字的子程序
DJNZR6,HUANZ;判断显示延时时间到否
MOVR7,#10H;设置“迎”字显示的延时时间常数
YINGZ:
LCALLYSUB;调“迎”字的子程序
DJNZR7,YINGZ;判断显示延时时间到否
MOVR6,#10H;设置“光”字显示的延时时间常数
GUANG:
LCALLGSUB;调“光”字的子程序
DJNZR6,GUANG;判断显示延时时间到否
MOVR7,#10H;设置“临”字显示的延时时间常数
LIN:
LCALLLSUB;调“临”字的子程序
DJNZR7,LIN;判断显示延时时间到否
MOVR6,#10H;设置“武”字显示的延时时间常数
WU:
LCALLWSUB;调“武”字的子程序
DJNZR6,WU;判断显示延时时间到否
MOVR7,#10H;设置“汉”字显示的延时时间常数
HAN:
LCALLASUB;调“汉”字的子程序
DJNZR7,HAN;判断显示延时时间到否
MOVR6,#10H;设置“理”字显示的延时时间常数
LI:
LCALLLLSUB;调“理”字的子程序
DJNZR6,LI;判断显示延时时间到否
MOVR7,#10H;设置“工”字显示的延时时间常数
GONG:
LCALLGGSUB;调“工”字的子程序
DJNZR7,GONG;判断显示延时时间到否
MOVR6,#10H;设置“大”字显示的延时时间常数
DAZ:
LCALLDSUB;调“大”字的子程序
DJNZR6,DAZ;判断显示延时时间到否
MOVR7,#10H;设置“学”字显示的延时时间常数
XUE:
LCALLXSUB;调“学”字的子程序
DJNZR7,XUE;判断显示延时时间到否
AJMPMAIN;程序循环执行
二.“欢”字显示子程序
HSUB:
MOVR5,#00H;“欢”字显示子程序开始,显示数据计数器置初值
MOVR1,#0FEH;前八列数据显示,选中第一列
HSUB0:
MOVDPTR,#0DFFFH;DFFFH为3#锁存器的地址
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0EFFFH;EFFFH为4#锁存器的地址
MOVA,#0FFH
MOVX@DPTR,A;将第一列的点阵数据的上半部分送入LED
MOVDPTR,#TAB1
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH;7FFFH为1#锁存器的地址
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB1;将第一列的点阵数据的下半部分送入LED
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH;BFFFH为2#锁存器的地址
MOVX@DPTR,A
LCALLDY1MS;调延时一秒子程序
MOVA,R1;准备选中下一列
RLA
MOVR1,A
INCR5
CJNER5,#10H,HSUB0;判断前8列显示完否,如果没有完继续显示
MOVR1,#0FEH;后八列数据显示
HSUB1:
MOVDPTR,#0EFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0DFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB1
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS
MOVA,R1
RLA
MOVR1,A
INCR5
CJNER5,#20H,HSUB1
RET
三.“迎”字显示子程序
YSUB:
MOVR5,#00H;“迎”字显示子程序
MOVR1,#0FEH
YSUB0:
MOVDPTR,#0DFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0EFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB2
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB2
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS
MOVA,R1
RLA
MOVR1,A
INCR5
CJNER5,#10H,YSUB0
MOVR1,#0FEH
YSUB1:
MOVDPTR,#0EFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0DFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB2
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB2
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS
MOVA,R1
RLA
MOVR1,A
INCR5
CJNER5,#20H,YSUB1
RET
四.“光”字显示子程序
GSUB:
MOVR5,#00H;“光”字显示子程序开始,显示数据计数器置初值
MOVR1,#0FEH;前八列数据显示,选中第一列
GSUB0:
MOVDPTR,#0DFFFH;DFFFH为3#锁存器的地址
MOVA,R1
MOVX@DPTR,A;EFFFH为4#锁存器的地址
MOVDPTR,#0EFFFH
MOVA,#0FFH
MOVX@DPTR,A;将第一列的点阵数据的上半部分送入LED
MOVDPTR,#TAB3
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH;7FFFH为1#锁存器的地址
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB3;将第一列的点阵数据的下半部分送入LED
MOVCA,@A+DPTR;BFFFH为2#锁存器的地址
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS;调延时1ms子程序
MOVA,R1;准备选中下一列
RLA
MOVR1,A
INCR5
CJNER5,#10H,GSUB0;判断前八列显示完否,如果没完继续显示
MOVR1,#0FEH;后八列数据显示
GSUB1:
MOVDPTR,#0EFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0DFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB3
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB3
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS
MOVA,R1
RLA
MOVR1,A
INCR5
CJNER5,#20H,GSUB1
RET
五.“临”字显示子程序
LSUB:
MOVR5,#00H
MOVR1,#0FEH
LSUB0:
MOVDPTR,#0DFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0EFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB4
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS
MOVA,R1
RLA
MOVR1,A
INCR5
CJNER5,#10H,LSUB0
MOVR1,#0FEH
LSUB1:
MOVDPTR,#0EFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0DFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB4
MOVA,R5
MOVCA,@A+DPTR
MOVDPTR,#7FFFH
MOVX@DPTR,A
INCR5
MOVA,R5
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH
MOVX@DPTR,A
LCALLDY1MS
MOVA,R1
RLA
MOVR1,A
INCR5
CJNER5,#20H,LSUB1
RET
六、“武”字显示子程序
WSUB:
MOVR5,#00H;“武”字显示子程序
MOVR1,#0FEH
WSUB0:
MOVDPTR,#0DFFFH
MOVA,R1
MOVX@DPTR,A
MOVDPTR,#0EFFFH
MOVA,#0FFH
MOVX@DPTR,A
MOVDPTR,#TAB5
MOVA,R5
MOVCA,@A+DPTR