51单片机点阵设计江海东.docx
《51单片机点阵设计江海东.docx》由会员分享,可在线阅读,更多相关《51单片机点阵设计江海东.docx(25页珍藏版)》请在冰豆网上搜索。
51单片机点阵设计江海东
班级:
电信3班
姓名:
江海东
学号:
2220083421
一.实验目的
用TOP-23088DH-U8x8LED点阵块设计制作一个8×16点阵汉字显示器,通过51单片机作为控制系统,由8255的A口为段数据口向两块点阵提供数据,B口提供扫描信息,通过74LS154译码后进行扫描。
同时C口接3个开关,形成控制功能选择。
二.设计要求
1、能显示16×8的汉字,显示“老师”,“大连”等。
2、通过按键控制可以改变显示的汉字,图形和符号。
3、通过按键控制可以实现汉字静态显示“老师”以及左移显示“大连”。
4、可以实现简单的图形的从外向内周期显示以及从内向外周期显示。
5、增加了驱动电路,提高了现实亮度。
6、增加了现实图形:
点阵从内向外周期显示后又相反显示,显示正弦波形(左移),显示正弦波形(右移)。
三.实验元器件
需要器件名称
数量
8051单片机(实验箱集成)
1
8255(实验箱集成)
1
TOP-23088DH-U8x8LED
2
74LS154
1
74LS245
1
面包板
3
导线
若干
开关(实验箱集成)
5
四.原理分析
(1)TOP-23088DH-U8x8LED点阵电路原理图及其使用说明
有标记的一侧
6
3
12
1
14
15
2
4
正面图,脚线分布
8
13
11
5
16
7
10
9
说明:
TOP-23088DH-U8x8LED点阵属于共阴极点阵
其中
1至8
控制行
行为阳极
低电平0有效
9至16
控制列
列为阴极
高电平1有效
要点亮某盏小灯时,应先把小灯所位置的行置于低电平。
然后控制列的高电平
编程时按“高位往低位”的顺序编写代码
如果,当你所选购的8x8LED点阵型号是别的型号,而你又没有得到相关电路图时,可以自己用数字万用表去检测。
方法如下:
1.以有标记的那一端在上,建立坐标系。
2.将数字万用表调到测试二极管的那端,如后将红笔固定在某一引脚上,然后将黑笔分别与其他引脚相接。
观察哪一行或者那一列的小灯是否被点亮,然后记下坐标。
如果小灯没亮,则将黑笔与红笔换位,再重复测量。
3.然后重复上述步骤2。
之后整理所得的数据,即可得到该8x8LED点阵的电路图了。
点阵模块图如下:
如上图所示,本实验通过列扫描方式,扫描同时给行线送显示数据。
当扫描到某列,则该列选通,其他列截止,选通瞬间送显示数据,则所对应的二极管亮。
显示的基本原理:
点阵依靠循环点亮每一列(或行),快速循环形成一屏图像,而每一屏快速交替,可进一步形成动画的效果。
(2)同时,74LS245的管脚图如下图
(3)74LS154管脚图如下图:
五.实验方案
(1)方案论证
控制模块
整个系统由8051、74LS154,8255组成,其中,8051,8255,以及开关都集成在实验箱上。
并且集成了时钟等必须器件。
74LS154
是4线转16线译码器,4线端接8255的PB.0-PB.3口接收列扫描信息,16线端低电平有效,控制点阵的16列
74LS245
是对列的驱动,8255的PA.0-PA.7用于将行扫描数据进行高速串-并转换,实验箱内部便可提供较大电流总够控制点阵的8行,这样,点阵的128个点中被选通的就亮。
显示模块
由2块TOP-23088DH-U8x8LED点阵组成
(2)流程图
Y
N
Y
N
Y
N
Y
N
Y
N
(3)硬件连接
(4)软件部分
编程思路为:
先对相关变量进行初始化,循环扫描点亮16列LED,一帧图像扫描完毕后,列指针向右移动一位,再扫描下一帧图像。
依此类推,列指针共向右移动16位,这样主观上就感觉向左滚动,移动一个汉字(列指针右移16位)后,字指针指向下一个汉字,这样就能在显示屏上看到汉字滚动。
(5)实验程序
ORG0000H
LJMPSTART
ORG3000H
START:
MOVDPTR,#8003H
MOVA,#81H
MOVX@DPTR,A
MOVR6,#2
MOVR7,#10H
MOVDPTR,#8002H
MOVXA,@DPTR
JNBACC.0,L1
JNBACC.1,L2
JNBACC.2,L3
JNBACC.3,L41
JNBACC.4,L51
L41:
LJMPL4
L51:
LJMPL5
SJMPSTART
L1:
MOVR0,#00H
MOVR1,#00H
LOOP1:
MOVA,R1
MOVDPTR,#8001H
MOVX@DPTR,A
MOVDPTR,#TAB1
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
LCALLDELAY
INCR0
INCR1
DJNZR7,LOOP1
MOVR7,#10H
LJMPSTART
L2:
MOVR4,#00H
MOVA,R4
MOVR0,A
LOOP2:
MOVR1,#00H
KK2:
MOVA,R1
MOVDPTR,#8001H
MOVX@DPTR,A
MOVDPTR,#TAB2
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
INCR0
INCR1
LCALLDELAY
LCALLDELAY
DJNZR7,KK2
MOVA,R4
MOVR0,A
MOVR7,#10H
DJNZR6,LOOP2
LCALLDELAY
LCALLDELAY
INCR4
MOVA,R4
MOVR0,A;
MOVR7,#10H
MOVR6,#02H
CJNER4,#16,LOOP2
LJMPSTART
L3:
MOVR4,#00H
MOVR5,#08H
MOVA,R4
MOVR0,A
MOVR1,#00H
LOOP3:
MOVA,R1
MOVDPTR,#8001H
MOVX@DPTR,A
MOVDPTR,#TAB3
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
LCALLDELAY
LCALLDELAY
INCR0
INCR1
DJNZR7,LOOP3
MOVR7,#10H
MOVA,R4
MOVR0,A
DJNZR6,LOOP3
MOVR6,#2
MOVA,#16
ADDA,R4
MOVR4,A
MOVR0,A
DJNZR5,LOOP3
LJMPSTART
L4:
MOVR4,#00H
MOVR5,#08H
MOVA,R4
MOVR0,A
MOVR1,#00H
LOOP4:
MOVA,R1
MOVDPTR,#8001H
MOVX@DPTR,A
MOVDPTR,#TAB4
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
LCALLDELAY
LCALLDELAY
INCR0
INCR1
DJNZR7,LOOP4
MOVR7,#10H
MOVA,R4
MOVR0,A
DJNZR6,LOOP4
MOVR6,#2
MOVA,#16
ADDA,R4
MOVR4,A
MOVR0,A
DJNZR5,LOOP4
L6:
MOVR4,#00H
MOVR5,#08H
MOVA,R4
MOVR0,A
MOVR1,#00H
LOOP6:
MOVA,R1
MOVDPTR,#8001H
MOVX@DPTR,A
MOVDPTR,#TAB6
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
LCALLDELAY
LCALLDELAY
INCR0
INCR1
DJNZR7,LOOP6
MOVR7,#10H
MOVA,R4
MOVR0,A
DJNZR6,LOOP6
MOVR6,#2
MOVA,#16
ADDA,R4
MOVR4,A
MOVR0,A
DJNZR5,LOOP6
LJMPSTART
L5:
MOVR4,#00H
MOVA,R4
MOVR0,A
LOOP5:
MOVR1,#00H
KK5:
MOVA,R1
MOVDPTR,#8001H
MOVX@DPTR,A
MOVDPTR,#TAB5
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
INCR0
INCR1
LCALLDELAY
DJNZR7,KK5
MOVA,R4
MOVR0,A
MOVR7,#10H
DJNZR6,LOOP5
LCALLDELAY
INCR4
MOVA,R4
MOVR0,A;
MOVR7,#10H
MOVR6,#02H
CJNER4,#16,LOOP5
LJMPSTART
DELAY:
MOVR2,#0FH
PP:
MOVR3,#0FH
DJNZR3,$
DJNZR2,PP
RET
TAB1:
DB88H,4AH,2AH,0FFH,0CAH,0AEH,88H,0C0H,18H,0FFH,00H,3CH,05H,0FFH,05H,3CH
TAB2:
DB44H,24H,14H,0FH,14H,24H,44H,00H,8BH,0F6H,0AAH,0AEH,0ABH,0FEH,0AAH,0AAH
DB44H,24H,14H,0FH,14H,24H,44H,00H,8BH,0F6H,0AAH,0AEH,0ABH,0FEH,0AAH,0AAH
TAB3:
DB0FFH,81H,81H,81H,81H,81H,81H,0FFH,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,7EH,42H,42H,42H,42H,7EH,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,3CH,24H,24H,3CH,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,18H,18H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,18H,18H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,3CH,24H,24H,3CH,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,7EH,42H,42H,42H,42H,7EH,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,0FFH,81H,81H,81H,81H,81H,81H,0FFH
TAB4:
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,18H,18H,00H,00H,00H,00H,00H,00H,18H,18H,00H,00H,00H
DB00H,00H,3CH,24H,24H,3CH,00H,00H,00H,00H,3CH,24H,24H,3CH,00H,00H
DB00H,7EH,42H,42H,42H,42H,7EH,00H,00H,7EH,42H,42H,42H,42H,7EH,00H
DB0FFH,81H,81H,81H,81H,81H,81H,0FFH,0FFH,81H,81H,81H,81H,81H,81H,0FFH
TAB6:
DB0FFH,81H,81H,81H,81H,81H,81H,0FFH,0FFH,81H,81H,81H,81H,81H,81H,0FFH
DB00H,7EH,42H,42H,42H,42H,7EH,00H,00H,7EH,42H,42H,42H,42H,7EH,00H
DB00H,00H,3CH,24H,24H,3CH,00H,00H,00H,00H,3CH,24H,24H,3CH,00H,00H
DB00H,00H,00H,18H,18H,00H,00H,00H,00H,00H,00H,18H,18H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
TAB5:
DB01H,02H,04H,08H,10H,20H,40H,80H,80H,40H,20H,10H,08H,04H,02H,01H
DB01H,02H,04H,08H,10H,20H,40H,80H,80H,40H,20H,10H,08H,04H,02H,01H
END
六.实际制作与调试
(1)实际制作
使用keil先对软件程序进行编译测试并进行proteus仿真,调试成功后开始硬件部分。
再编一段小程序用来测试硬件,发现LED有显示,即可向下进行,在这个环节上,所编程序应将字型表先全设为0FFH,因为只有让LED全点亮才能测试出所有线路,LED,8051和8255能否正常工作、点阵的极性及是否有坏点。
在制作过程中,由于LED管脚并不是与每一行每一列一一对应的,所以上网站找到了关于该点阵的资料。
之后在用仪器测试74LS154,74LS245是否正常,然后按照之前设计好的线路连接硬件线路,电路连接需要仔细。
(2)调试过程
先通过韦弗的软件将程序下载到实验箱中,初始为黑屏,因为没有按键被按下。
之后通过按键进行控制,看显示是否正确,若点阵全都不亮,则首先要仔细检查程序,很可能是程序出了问题,因为之前已经对硬件进行测试了,若确定程序没有问题,则很可能是连线出现了断线,或者是连线连错了,点阵实验的线较多,所以需要在实验之前对每根线路进行检测,检测的方法是使用万用表检测是否出现短路现象。
由于线较多,所以很容易接连错了,也有可能是前面对LED的能否正常工作没有测试到位导致部分电路问题被遗漏。
若测试时就只有几个点不亮,这时就能确定点阵极性及那些点是坏点。
(3)实物图
七.实验总结
1.实验过程中的问题与分析:
(1)这次实验管教连线比较多,而且比较密集,一定要细心。
(2)点阵的每个管脚行与列要先通过测试后才能确定,或者是在网上寻找资料确定管脚,由于管脚并不是按顺序的,所以不能随便连接
(3)最好事先写一个测试程序,加一个延时判断一下。
(4)程序关键之处在于串口发送列数据的延时控制,否则很难观测到扫描图像。
同时,行数据的延时控制也很重要,这决定整个画面是否闪烁。
(5)为了控制汉字滚动速度,有时需对一帧图像扫描数次后才将列指针移位。
(6)为了是提高显示图形的亮度,加了一块74LS245芯片对行进行驱动。
(7)连接好硬件后,通过对各元件的测试,加深了对实验原理以及各元件的工作原理的理解。
(8)通过对实验程序的修改增加显示图形的变化,进一步加深了对试验程序的理解。
2.实验心得:
通过本次单片机课设,更加加深了对单片机硬件系统和8X8点阵、74LS245和74LS154等元件工作原理的理解;同时通过设计过程中的查询资料,初步掌握了keiluvision3和proteu以及8X8字模提取等软件的应用,进一步熟练掌握了伟福单片机仿真软件的应用;同时实际接触了各个功能芯片以及点阵实物,对各元器件有了比较形象的认识,了解了点阵的每个管脚的查询方法;同时学会了实现点阵静态显示、循环移动显示、周期显示以及各种变化图形的程序设计思路;此外,通过实验过程中出现的问题和解决问题的过程,提高了分析问题,了解问题本质,进而解决问题的能力。
总而言之,通过本次单片机课设,收获很大。
8.参考资料
[1]陈堂敏.刘焕平主编.单片机原理与应用.北京:
北京理工大学出版社,2007.
[2]沈美明.温动蝉编著.IBM-PC汇编语言程序设计.北京:
清华大学出版社,1994.
[3]张仰森等编.微型计算机常用软硬件技术速查手册.北京:
北京希望电脑公司,1994.
[4]江修汗等编.计算机控制原理与应用.西安:
西安电子科技大学出版社,1999.