A14基于51单片机汇编语言按键加计数LED显示Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-14 05:59:45    阅读:14 次   消耗积分:5 分

image.png

A14基于51单片机汇编语言按键加计数LED显示Proteus设计

用51单片机汇编语言做一个按键加法计数器:每按一次按键数据加1,4个LED指示灯实时显示当前数值,加到15自动归零重新开始。资料包含Proteus仿真文件和完整汇编源码,适合学按键消抖和IO口输出的同学参考。

一、设计实现功能

本设计功能简介:使用51单片机和汇编语言设计一个按键控制4个LED显示的proteus仿真,要求以下功能:

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

2、要求使用一个独立按键控制4个LED指示灯,4个指示灯代表4个字节数据,每按一次按键数据加1最大15然后从0开始计数,并把数值通过LED显示出来。

二、资源汇总

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

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

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

三、设计介绍

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

4个LED接在P1口的低4位,每个灯代表二进制的一位,灯亮代表1、灯灭代表0,4个灯组合起来正好表示0到15。按键接P3.7,一端接地,按下为低电平。

图1 Proteus仿真总览

仿真原理图

程序主循环就三步:等按键、消抖、计数显示。计数存放在R0里,每次有效按键INC R0加1;CJNE R0,#10H判断是否到16,到16就LJMP START把R0清零重新开始。

显示前有一句关键的CPL A取反:LED是低电平点亮,而计数值高电平代表1,所以先把A取反再送P1口,数值和亮灯状态才对得上。

计数值P1输出(取反后)亮灯状态
00FFH全灭
10FEH最低位亮
70F8H低3位亮
150F0H低4位全亮
再按一次回0全灭,重新开始

图2 汇编程序源码

程序截图

按键消抖是这段代码的重点,连续判断两次:

`asm
K1: JB P3.7,$ ;等待按键按下
LCALL DELAY ;延时10毫秒消抖
JB P3.7,K1 ;再看还是低电平才算真按下,否则当干扰
INC R0 ;有效按键,次数加1
CJNE R0,#10H,K4 ;到16回初始
JNB P3.7,$ ;等待按键抬起
LJMP START
K4: MOV A,R0
CPL A ;取反,适配低电平点亮的LED
MOV P1,A ;输出显示
JNB P3.7,$ ;等待按键抬起
LJMP K1
`

等按键抬起(JNB P3.7,$)必须做,否则按住不放会被当成连续按很多次。延时子程序R5=20、R6=250两层循环,约10毫秒,是常用的机械按键消抖时长。

特别注意: 仿真跑起来按一次跳好几个数,就是消抖或等抬起没生效,检查DELAY圈数;LED亮度不均是限流电阻阻值不一致;改了源码要重新编译生成hex再跑仿真;Proteus用7.8或8.6版本。

四、日期修改

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

五、资料下载

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

/

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