A13基于51单片机汇编语言8X8点阵流水灯Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-14 05:57:47    阅读:13 次   消耗积分:10 分

image.png

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)01HRL24次(3圈×8列)
1右→左列(P3)80HRR24次
2上→下行(P0)7FHRR24次
3下→上行(P0)0FEHRL24次

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版本。

四、日期修改

资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。

五、资料下载

付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A12基于51单片机汇编语言按键控制数码管显示Proteus设计
下一篇:A14基于51单片机汇编语言按键加计数LED显示Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}