51单片机点阵设计_第1页
51单片机点阵设计_第2页
51单片机点阵设计_第3页
51单片机点阵设计_第4页
51单片机点阵设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机课程设计816点阵汉字显示器班 级: 电信3班姓 名: 陈 呈学 号:一实验目的用TOP-23088DH-U 8x8LED点阵块设计制作一个816点阵汉字显示器,通过51单片机作为控制系统,由8255的A口为段数据口向两块点阵提供数据,B口提供扫描信息,通过74LS154译码后进行扫描。同时C口接3个开关,形成控制功能选择。二设计要求1、能显示168的汉字,显示“LOVE”等图形。2、通过按键控制可以改变显示的汉字,图形和符号。3、通过按键控制可以实现汉字静态显示“LOVE”以及左移显示方波右移显示锯齿波。5、实现两点阵从内向外周期显示后又相反显示6、可以实现彩灯游戏贪吃蛇6、增加了驱动电路,提高了现实亮度。三实验元器件需要器件名称 数量 8051单片机(实验箱集成) 1 8255(实验箱集成) 1 TOP-23088DH-U 8x8LED 2 74LS154 1 74LS245 1面包板 3导线 若干开关(实验箱集成) 5四.原理分析(1)TOP-23088DH-U 8x8LED点阵电路原理图及其使用说明 有标记的一侧63121141524正面图,脚线分布 813115167109说明:TOP-23088DH-U 8x8LED点阵属于共阴极点阵其中 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-U 8x8LED点阵组成(2) 流程图开始动态显示“锯齿波”(右移)两点阵从内向外周期显示后又相反显示彩灯贪吃蛇动态显示“方波”(左移)静态显示“LOVE”K5是否按下?K4是否按下?K3是否按下?K1是否按下?K2是否按下?不显示YNYNYNYNYN(3)硬件连接(4)软件部分编程思路为:先对相关变量进行初始化,循环扫描点亮16列LED,一帧图像扫描完毕后,列指针向右移动一位,再扫描下一帧图像。依此类推,列指针共向右移动16位,这样主观上就感觉向左滚动,移动一个汉字(列指针右移16位)后,字指针指向下一个汉字,这样就能在显示屏上看到汉字滚动。(5)实验程序ORG 0000H LJMP START ;程序从start开始执行 ORG 3000H ;程序从3000H单元开始存放START:MOV DPTR,#8003H ;CSO命令地址赋指针 MOV A,#81H ;扩展I/O口,方式0,A口出,B口出,C口入 MOVX DPTR,A ; MOV R6,#2 ;每个状态循环的次数 MOV R7,#10H ;扫描16列 MOV DPTR,#8002H ;C口地址赋指针 MOVX A,DPTR ;检查C口的PC0,PC1,PC2是否有键按下 JNB ACC.0,L1 ;为零跳转 JNB ACC.1,L2 ;为零跳转 JNB ACC.2,L3 ;为零跳转 JNB ACC.3,L11 ;为零跳转 JNB ACC.4,L12 ;为零跳转L11: LJMP L10 ;长跳转L12: LJMP L13 ;长跳转 SJMP START ; ;模式1-显示LOVE两个字,不动L1: MOV R0,#00H ;第一行第一个数据 MOV R1,#00H ;第一列LOOP1: MOV A,R1 ; MOV DPTR,#8001H ;B口地址赋指针 MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB1 ;字模表1首址赋指针 MOV A,R0 ;准备查表 MOVC A,A+DPTR ;获取字码(取字模数码送给A) MOV DPTR,#8000H ;A地址赋指针 MOVX DPTR,A ; 查表,将表中数码传给A口 LCALL DELAY ;调用延时程序 INC R0 ;行字码加1 INC R1 ;列号加1 DJNZ R7,LOOP1 ;16列全部扫描完毕跳出 MOV R7,#10H ;R7重置为16 DJNZ R6,L1 ;状态1循环 LJMP START ;重新检测C口的状态;模式2-左移方波L2: MOV R4,#00H ;行字码指针 MOV A,R4 ; MOV R0,A ;R0为00HLOOP2: MOV R1,#00H ;R1为00HKK2: MOV A,R1 ; MOV DPTR,#8001H ;B口地址赋指针 MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB2 ;字模表2首址赋指针 MOV A,R0 ;准备查表 MOVC A,A+DPTR ;获取字码(取字模数码送给A) MOV DPTR,#8000H ;A地址赋指针 MOVX DPTR,A ;查表,将表中数码传给A口 INC R0 ;行字码加1 INC R1 ;列号加1 LCALL DELAY ;调用延时程序 DJNZ R7,KK2 ;16列全部扫描完毕跳出 MOV A,R4 ; MOV R0,A ; MOV R7,#10H ;R7重置为16 DJNZ R6,LOOP2 ;状态2循环 LCALL DELAY ;调用延时程序 INC R4 ;行字码指针加1 MOV A,R4 ; MOV R0,A ;行字码逐个扫描 MOV R7,#10H ;R7重置为16 MOV R6,#02H ;R6重置为2 CJNE R4, #16,LOOP2 ;行字码为16,一行扫描完毕,跳出 LJMP START ;重新检测C口的状态;模式3-贪吃蛇L3: MOV R4,#00H ;行字码指针 MOV R5,#08H ;8行数码 MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP3: MOV A,R1 ; MOV DPTR,#8001H ;B口地址赋指针 MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB3 ;字模表3首址赋指针 MOV A,R0 ;准备查表 MOVC A,A+DPTR ;获取字码(取字模数码送给A) MOV DPTR,#8000H ;A地址赋指针 MOVX DPTR,A ;查表,将表中数码传给A口LCALL DELAY ;调用延时程序LCALL DELAY ;调用延时程序 INC R0 ; 行字码加1 INC R1 ; 列号加1 DJNZ R7,LOOP3 ; 16列全部扫描完毕跳出 MOV R7,#10H ; R7重置为16 MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP3 ; 状态3循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP3 ; 8行扫描完毕跳出L4: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP4: MOV A,R1 ; MOV DPTR,#8001H ; MOVX DPTR,A ;B口是扫描口MOV DPTR,#TAB4 ;MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ; 查表,将表中数码传给A口LCALL DELAY ;LCALL DELAY ; INC R0 ; INC R1 ; DJNZ R7,LOOP4 ;16列全部扫描完毕跳出 MOV R7,#10H ; MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP4 ;状态4循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP4 ; L5: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP5: MOV A,R1 ; MOV DPTR,#8001H ; MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB5 ; MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ; 查表,将表中数码传给A口LCALL DELAY ;LCALL DELAY ; INC R0 ; INC R1 ; DJNZ R7,LOOP5 ;16列全部扫描完毕跳出 MOV R7,#10H ; MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP5 ; 状态3循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP5 ;L6: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP6: MOV A,R1 ; MOV DPTR,#8001H MOVX DPTR,A ;B口是扫描口MOV DPTR,#TAB6 ;MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ; 查表,将表中数码传给A口LCALL DELAY ;LCALL DELAY ; INC R0 ; INC R1 ; DJNZ R7,LOOP6 ;16列全部扫描完毕跳出 MOV R7,#10H ; MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP6 ; 状态3循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP6 ; ; 重新检测C口的状态L7: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP7: MOV A,R1 ; MOV DPTR,#8001H ; MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB7 ; MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ;查表,将表中数码传给A口LCALL DELAY ;LCALL DELAY ; INC R0 ; INC R1 DJNZ R7,LOOP7 ;16列全部扫描完毕跳出 MOV R7,#10H ; MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP7 ; 状态3循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP7 ; ; 重新检测C口的状态L8: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP8: MOV A,R1 ; MOV DPTR,#8001H ; MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB8 ; MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ; 查表,将表中数码传给A口LCALL DELAY ;LCALL DELAY ; INC R0 ; INC R1 ; DJNZ R7,LOOP8 ;16列全部扫描完毕跳出 MOV R7,#10H ; MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP8 ; 状态3循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP8 L9: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP9: MOV A,R1 ; MOV DPTR,#8001H ; MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB9 ; MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ; 查表,将表中数码传给A口LCALL DELAY ;LCALL DELAY ; INC R0 ; INC R1 ; DJNZ R7,LOOP9 ;16列全部扫描完毕跳出 MOV R7,#10H ; MOV A,R4 ; MOV R0,A ; DJNZ R6,LOOP9 ;状态9循环 MOV R6,#2 ; MOV A,#16 ; ADD A,R4 ; MOV R4,A ; MOV R0,A ; DJNZ R5,LOOP9 ; LJMP START ;重新检测C口的状态 ;模式4-右移锯齿波 L10: MOV R4,#20H ;行字码指针 MOV A,R4 ; MOV R0,A ;R0为20HLOOP10: MOV R1,#10H ;KK4: MOV A,R1 ; MOV DPTR,#8001H ;B口地址赋指针 MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB10 ; 字模表10首址赋指针 MOV A,R0 ;准备查表 MOVC A,A+DPTR ;获取字码(将字模数据送给A) MOV DPTR,#8000H ;A口地址赋指针 MOVX DPTR,A ;查表,将表中数码传给A口 DEC R0 ;行字码减1 DEC R1 ;列号减1 LCALL DELAY ;调用延时程序 DJNZ R7,KK4 ;16列全部扫描完毕跳出 MOV A,R4 ; MOV R0,A ; MOV R7,#10H ;R7重置为16 DJNZ R6,LOOP10 ;状态10循环 LCALL DELAY ;调用延时程序 DEC R4 ;行字码指针减1 MOV A,R4 ; MOV R0,A ;行字码逐个扫描 MOV R7,#10H ;R7重置为16 MOV R6,#02H ;R6重置为2 CJNE R4, #10H,LOOP10 ;行字码为10H,一行扫描完毕,跳出 LJMP START ;重新检测C口的状态;模式5-左边的点阵从外向内周期显示,右边的点阵随后从内向外周期显示 L13: MOV R4,#00H ; MOV R5,#08H ; MOV A,R4 ; MOV R0,A ; MOV R1,#00H ;LOOP13: MOV A,R1 ; MOV DPTR,#8001H ; MOVX DPTR,A ;B口是扫描口 MOV DPTR,#TAB13 ; MOV A,R0 ; MOVC A,A+DPTR ; MOV DPTR,#8000H ; MOVX DPTR,A ;查表,将表中数码传给A口LCALL DELAY ; LCALL DELAY ; INC R0 ; INC R1 ; DJNZ R7,LOOP13 ;16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论