A11基于51单片机汇编语言LED循环显示Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-14 05:53:30    阅读:13 次   消耗积分:5 分

image.png

A11基于51单片机汇编语言LED循环显示Proteus设计

用51单片机汇编语言做一个数码管循环显示实验:1位数码管从0到9循环显示,每个数字停留约100毫秒,资料包含Proteus仿真文件和完整汇编源码,适合学汇编语言和IO口实验的同学参考。

一、设计实现功能

本设计功能简介:使用51单片机和汇编语言设计一个数码管循环显示的proteus仿真,要求以下功能:

1、使用汇编语言编写程序。

2、使用1个数码管显示数字。

3、要求数码管循环显示0-9。

二、资源汇总

1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。

2、程序文件:main.asm汇编源码,以及编译好的cx.hex。

3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。

三、设计介绍

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

硬件非常简洁:一个共阴数码管的段码端直接接51单片机的P0口,公共端接地。程序要做的只有一件事——把0到9对应的段码按顺序送到P0口,每送一个停一段时间,人眼就看到数字在循环跳动。

图1 Proteus仿真总览

仿真原理图

程序用的是查表法,段码表放在程序存储器里,用DPTR指向表头,再用MOVC A,@A+DPTR取出:

显示数字段码二进制点亮的段
03FH0011 1111ABCDEF
106H0000 0110BC
25BH0101 1011ABDEG
34FH0100 1111ABCDG
466H0110 0110BCFG
56DH0110 1101ACDFG
67DH0111 1101ACDEFG
707H0000 0111ABC
87FH0111 1111ABCDEFG
96FH0110 1111ABCDFG

表尾放了一个结束符01H。程序每取一个段码先用CJNE A,#01H判断是不是结束符:不是就送P0显示、调延时、DPTR加1继续;是结束符就LJMP START跳回表头重新开始,循环全靠这个判断实现。

图2 汇编程序源码

程序截图

延时子程序是三层循环,圈数固定:

层级寄存器圈数
外层R520
中层R620
内层R7248(DJNZ自减到0)

总周期数约20×20×248≈99200个机器周期,按12MHz晶振(1个机器周期1微秒)算约100毫秒,这就是每个数字停留的时间,想看慢一点改大R5即可。

特别注意: 仿真跑起来数码管全是8或者不亮,先检查数码管是不是共阴极的、段码端和P0口接线是否完整;改了源码要重新编译生成hex再跑仿真;Proteus用7.8或8.6版本。

四、日期修改

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

五、资料下载

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

/

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