1、邱佳奇单片机点阵设计 班级:电信4班 姓名:邱佳奇 学号:2220081156 一.实验目的 用TOP-23088DH-U 8x8LED点阵块设计制作一个8×16点阵汉字显示器,通过51单片机作为控制系统,由8255的A口为段数据口向两块点阵提供数据,B口提供扫描信息,通过74LS154译码后进行扫描。同时C口接3个开关,形成控制功能选择。 二.设计要求 1、能显示16×8的汉字,显示“JAY.”; 2、通过按键控制可以改变显示的汉字,图形和符号; 3、通过按键控制可以实现汉字动态显示“大连”; 4、可以实现简单的图形的从外向内周期显
2、示; 5、增加了驱动电路,提高了现实亮度。 三.实验元器件 需要器件名称 数量 8051单片机 1 74LS154 1 8255(实验箱集成) 1 74LS244 1 面包板 3 导线 若干 开关(实验箱集成) 3 TOP-23088DH-U 8x8LED 2 四.原理分析 TOP-23088DH-U 8x8LED点阵电路原
3、理图及其使用说明 有标记的一侧 6 3 12 1 14 15 2 4 正面图,脚线分布 8 13 11 5 16 7 10 9 说明: TOP-23088DH-U 8x8LED点阵属于共阴极点阵 其中 1至8 控制行 行为阳极 低电平1有效 9至16 控制列 列为阴极 高电平0有效 要点亮某盏小灯时,应先把小灯所位置的行置于低电平。然后控制列的高电平 编程时按“高位往低位”的顺序编写代码 如果,当你所选购的8x8LED点阵
4、型号是别的型号,而你又没有得到相关电路图时,可以自己用数字万用表去检测。 方法如下: 1.以有标记的那一端在上,建立坐标系。 2.将数字万用表调到测试二极管的那端,如后将红笔固定在某一引脚上,然后将黑笔分别及其他引脚相接。观察哪一行或者那一列的小灯是否被点亮,然后记下坐标。如果小灯没亮,则将黑笔及红笔换位,再重复测量。 3.然后重复上述步骤2。之后整理所得的数据,即可得到该8x8LED点阵的电路图了。 点阵模块图如下: 如上图所示,本实验通过列扫描方式,扫描同时给行线送显示数据。当扫描到某列,则该列选通,其他列截止,选通瞬间送显示数据,则所对应的二极管亮。 显示的基本
5、原理: 点阵依靠循环点亮每一列(或行),快速循环形成一屏图像,而每一屏快速交替,可进一步形成动画的效果。 五.实验方案 (1)方案论证 控制模块 整个系统由8051、74LS154,8255组成,其中,8051,8255,以及开关都集成在实验箱上。并且集成了时钟等必须器件。 74LS154 是4线转16线译码器,4线端接8255的PB.0-PB.3口接收列扫描信息,16线端低电平有效,控制点阵的16列 74LS244 是对列的驱动,8255的PA.0-PA.7用于将行扫描数据进行高速串-并转换,实验箱内部便可提供较大电流总够控制点阵的8行,这样,点阵的128个点中被
6、选通的就亮。 显示模块 由2块TOP-23088DH-U 8x8LED点阵组成 (2)硬件连接 (3)流程图 ( (4)软件部分 编程思路为:先对相关变量进行初始化,循环扫描点亮16列LED,一帧图像扫描完毕后,列指针向右移动一位,再扫描下一帧图像。依此类推,列指针共向右移动16位,这样主观上就感觉向左滚动,移动一个汉字(列指针右移16位)后,字指针指向下一个汉字,这样就能在显示屏上看到汉字滚动。 (5)实验程序 ORG 0000H LJMP START ORG 3000H START:MOV DPTR,#8003H MOV A,#81H
7、 MOVX @DPTR,A MOV R6,#2 MOV R7,#10H MOV DPTR,#8002H MOVX A,@DPTR JNB ACC.0,L1 JNB ACC.1,L2 JNB ACC.2,L3 SJMP START L1: MOV R0,#00H MOV R1,#00H LOOP1: MOV A,R1 MOV DPTR,#8001H MOVX @DPTR,A
8、 MOV DPTR,#TAB1 MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H MOVX @DPTR,A LCALL DELAY INC R0 INC R1 DJNZ R7,LOOP1 MOV R7,#10H DJNZ R6,L1 LJMP START L2: MOV R4,#00H
9、 MOV A,R4 MOV R0,A LOOP2: MOV R1,#00H KK2: MOV A,R1 MOV DPTR,#8001H MOVX @DPTR,A MOV DPTR,#TAB2 MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H MOVX @DPTR,A INC R0 INC R1 LCALL DELAY DJNZ R7,KK2 MOV A,R4
10、 MOV R0,A MOV R7,#10H DJNZ R6,LOOP2 LCALL DELAY INC R4 MOV A,R4 MOV R0,A ; MOV R7,#10H MOV R6,#02H CJNE R4, #16,LOOP2 LJMP START L3: MOV R4,#00H MOV R5,#08H MOV A,R4 MOV R0,A
11、 MOV R1,#00H LOOP3: MOV A,R1 MOV DPTR,#8001H MOVX @DPTR,A MOV DPTR,#TAB3 MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H MOVX @DPTR,A LCALL DELAY INC R0 INC R1 DJNZ R7,LOOP3 MOV R7,#10H MOV A,R4
12、 MOV R0,A DJNZ R6,LOOP3 MOV R6,#2 MOV A,#16 ADD A,R4 MOV R4,A MOV R0,A DJNZ R5,LOOP3 LJMP START DELAY:MOV R2,#0FH PP:MOV R3,#1FH DJNZ R3,$ DJNZ R2,PP RET TAB1: DB 60H,80H,8
13、0H,80H,3FH,0FCH,12H,11H,12H,0FCH,01H,02H,0FCH,02H,01H,80H TAB2: DB 04H,7FH,84H,0FCH,00H,78H,48H,78H,00H,04H,8AH,79H,08H,89H,0FAH,04H DB 04H,7FH,84H,0FCH,00H,78H,48H,78H,00H,04H,8AH,79H,08H,89H,0FAH,04H TAB3: DB 0FFH,81H,81H,81H,81H,81H,81H,0FFH,00H,00H,00H,00H,00H,00H,00H,00H DB 00H,7EH,4
14、2H,42H,42H,42H,7EH,00H, 00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,3CH,24H,24H,3CH,00H,00H, 00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,18H,18H,00H,00H,00H, 00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,00H,00H,00H,00H,00H, 00H,00H,00H,18H,18H,00H,00H,00H DB 00H,00H,00H,00H,00H,00H,00H,00H,
15、00H,00H,3CH,24H,24H,3CH,00H,00H DB 00H,00H,00H,00H,00H,00H,00H,00H, 00H,7EH,42H,42H,42H,42H,7EH,00H DB 00H,00H,00H,00H,00H,00H,00H,00H, 0FFH,81H,81H,81H,81H,81H,81H,0FFH END 六.实际制作及调试 (1)实际制作 使用keil先对软件程序进行编译测试并进行proteus仿真,调试成功后开始硬件部分。 再编一段小程序用来测试硬件,发现LED有显示,即可向下进行,在这个环节上,所编程序应将字型表先全设为0FF
16、H,因为只有让LED全点亮才能测试出所有线路,LED,8051和8255能否正常工作、点阵的极性及是否有坏点。 在制作过程中,由于LED管脚并不是及每一行每一列一一对应的,所以上网站找到了关于该点阵的资料。之后在用仪器测试74LS154,74LS244是否正常,然后按照之前设计好的线路连接硬件线路,电路连接需要仔细。 (2)调试过程 先通过韦弗的软件将程序下载到实验箱中,初始为黑屏,因为没有按键被按下。之后通过按键进行控制,看显示是否正确,若点阵全都不亮,则首先要仔细检查程序,很可能是程序出了问题,因为之前已经对硬件进行测试了,若确定程序没有问题,则很可能是连线出现了断线,或者是连线连错
17、了,点阵实验的线较多,所以需要在实验之前对每根线路进行检测,检测的方法是使用万用表检测是否出现短路现象。由于线较多,所以很容易接连错了,也有可能是前面对LED的能否正常工作没有测试到位导致部分电路问题被遗漏。若测试时就只有几个点不亮,这时就能确定点阵极性及那些点是坏点。 (3) 实物图 七.实验总结 1.实验过程中的问题及分析: (1) 这次实验管教连线比较多,而且比较密集,一定要细心。 (2)点阵的每个管脚行及列要先通过测试后才能确定,或者是在网上寻找资料确定管脚,由于管脚并不是按顺序的,所以不能随便连接 (3)最好事先写一个测试程序,加一个延时判断一下。 (4)程序
18、关键之处在于串口发送列数据的延时控制,否则很难观测到扫描图像。同时,行数据的延时控制也很重要,这决定整个画面是否闪烁。 (5)为了控制汉字滚动速度,有时需对一帧图像扫描数次后才将列指针移位。 (6)为了是提高显示图形的亮度,加了两块74LS244对列进行驱动 2.实验心得: 通过本次单片机课设,更加加深了对单片机硬件系统的理解,同时通过设计过程中的查询资料,初步掌握了keil uvision3以及wave等软件的应用。同时实际接触了各个功能芯片以及点阵实物。了解了点阵的每个管脚的查询方法。同时了解了实现点阵循环移动显示的程序设计思路。收获很大。 八. 参考资料 [1]陈堂敏.刘焕平主编.单片机原理及应用.北京:北京理工大学出版社,2007. [2]沈美明.温动蝉编著.IBM-PC汇编语言程序设计.北京:清华大学出版社,1994. [3]张仰森等编.微型计算机常用软硬件技术速查手册.北京:北京希望电脑公司,1994. [4]江修汗等编.计算机控制原理及应用.西安:西安电子科技大学出版社,1999.