
A13基于51单片机汇编语言8X8点阵流水灯Proteus设计
用51单片机汇编语言做一个8×8点阵流水灯:左侧8位LED全部点亮向右滚动3次,再从右向左滚动3次,然后改成从上向下滚动3次、从下向上滚动3次,一直循环。资料包含Proteus仿真文件和完整汇编源码,适合学点阵扫描和跳转表汇编技巧的同学参考。
一、设计实现功能
本设计功能简介:使用51单片机和汇编语言设计一个8X8点阵显示器的proteus仿真,要求以下功能:
1、使用汇编语言编写程序。
2、要求开始的时候点阵左侧8位LED全部点亮并向右侧滚动3次,然后从右向左滚动显示3次。
3、改变方向,从上方向下滚动3次,再从下到上侧滚动3次,一直循环。
二、资源汇总
1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。
2、程序文件:main.asm汇编源码,以及编译好的cx.hex。
3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。
三、设计介绍
拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。
8×8点阵可以理解成8根行线加8根列线,某一根行线和某一根列线同时有效,交叉点那颗LED就亮。P0口接行线,P3口接列线,同一时刻只点亮一列,高速在8列之间轮换,整体看起来就是一行图案在流动。
图1 Proteus仿真总览

程序用4个显示模式顺序执行,靠一张跳转表切换:
| 模式 | 方向 | 扫描线 | 初值 | 移位 | 圈数 |
| 0 | 左→右 | 列(P3) | 01H | RL | 24次(3圈×8列) |
| 1 | 右→左 | 列(P3) | 80H | RR | 24次 |
| 2 | 上→下 | 行(P0) | 7FH | RR | 24次 |
| 3 | 下→上 | 行(P0) | 0FEH | RL | 24次 |
24次=滚动3次:8个位置滚完是1次,RS_CNT数到24(CJNE R0,#24判断)切下一个模式。模式3做完DSP_CNT清零回到模式0,四种方向一直循环。
跳转表这段是汇编里很经典的技巧:
`asm
MOV A,DSP_CNT
ADD A,DSP_CNT ;SJMP是双字节指令,偏移量要乘2
JMP @A+DPTR ;根据模式值散转
SWITCH: SJMP DSP_0 ;跳转表
SJMP DSP_1
SJMP DSP_2
SJMP DSP_3`
图2 汇编程序源码

水平滚动(模式0/1)时行线全灭只留一列点亮,垂直滚动(模式2/3)时列线全亮只留一行点亮,每步之间调延时子程序控制流速。延时子程序R5=10、R6=20、R7=248三层循环,约50毫秒一步,点阵滚动节奏适中。
特别注意: 仿真跑起来点阵图案缺行缺列或者方向反了,检查行线列线接线顺序是否和仿真图一致;R7用248而不是255,是为了凑整50毫秒左右的整数圈;改了源码要重新编译生成hex再跑仿真;Proteus用7.8或8.6版本。
四、日期修改
资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。
五、资料下载
付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。
/

