A05基于51单片机汇编流水灯Proteus设计,asm
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-13 10:52:51    阅读:20 次   消耗积分:5 分

image.png

A05基于51单片机汇编流水灯Proteus设计,asm

用51单片机汇编语言做一个LED流水灯仿真:经74LS373锁存器驱动8个LED从上到下流水。资料包含Proteus仿真文件和完整汇编源码,适合汇编语言入门和端口实验的同学参考。

一、设计实现功能

使用51单片机设计一个简易的LED流水灯:

1、使用汇编语言设计。
2、要求使用74LS373控制8个LED从上到下流水。

二、资源汇总

1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。
2、程序文件:main.asm汇编源码,以及编译好的cx.hex。
3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。

三、设计介绍

拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。

硬件链路:P1口接74LS373锁存器的数据输入端,373的输出驱动8个LED。373在这里起隔离和驱动的作用,避免单片机的P1口直接带负载,同时把数据锁存住,让流水效果稳定。

图1 Proteus仿真总览

仿真原理图

程序逻辑非常紧凑,主循环就三步:送数、移位、延时。初值送0FEH(二进制11111110,只有最低位是0),8个LED低电平点亮,所以一开始是最下面那个灯亮;每轮用RL指令把累加器A左移一位,高位补0,亮点就往上走一位;R2寄存器计数8次,8步走完一轮,LJMP跳回主循环重新开始,如此循环往复就是流水。

RL A左移的轨迹:

步数A的值点亮的LED
10FEH第1个(最低位)
20FDH第2个
30FBH第3个
40F7H第4个
50EFH第5个
60DFH第6个
70BFH第7个
807FH第8个(最高位)

图2 汇编程序源码

程序截图

延时子程序用R6、R7双层循环:R6、R7初值都取0,DJNZ指令每执行一次减1,从0减到0要绕255+1次,内层256次、外层也256次,合计256×256次循环。按12MHz晶振(每个机器周期1µs、DJNZ占2个机器周期)估算:

参数值说明
R6 内层圈数256初值0,绕满一周
R7 外层圈数256初值0,绕满一周
每步时长约131ms12MHz晶振估算
一轮时长约1s8步合计

换晶振延时等比例变化:6MHz下每步约262ms。想改流水速度,直接改R6、R7的初值即可。

特别注意: 仿真跑起来灯不亮,先检查压缩包是否解压完整;Proteus用7.8或8.6版本;改了汇编源码要重新编译生成hex再跑仿真。

四、日期修改

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

五、资料下载

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

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A04基于8086六位数码管秒表Proteus设计,asm
下一篇:A06基于51单片机汇编流LED闪烁Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}