A29基于51单片机汇编语言按键门铃Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-22 10:36:28    阅读:17 次   消耗积分:5 分

image.png

A29基于51单片机汇编语言按键门铃Proteus设计

按键一按,蜂鸣器"叮——咚——"两声,然后自动停,不用松手也不用再按。高音约714Hz响0.35秒,低音500Hz响0.5秒,靠定时器0中断翻转引脚出声,再用两级软件计数器(100×5=500次)控制每一档的时长。资料包含Proteus仿真文件和完整汇编源码,是51门铃/提示音最经典的写法。

一、设计实现功能

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

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

2、按键接P3.7,按一次触发一次门铃。

3、P1.0驱动蜂鸣器,先发高频"叮"声,再发低频"咚"声,两声响完自动停止。

二、资源汇总

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

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

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

三、设计介绍

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

蜂鸣器接P1.0,按键接P3.7。和A21、A28都不同,这里的声音是一次性的:响完两档自己关定时器,不会循环。

图1 Proteus仿真总览

仿真原理图

音调由定时器初值决定,时长由软件计数器决定,两者分工很清楚:

`asm
START: MOV TMOD,#01H ;T0方式1
MOV TH0,#(65536-700)/256 ;700μs,高音"叮"
MOV TL0,#(65536-700)MOD 256
S1: JB KEY,$ ;等按键
LCALL DELAY ;消抖
JB KEY,$
MOV IE,#82H ;开T0中断
SETB TR0 ;开始发声
SJMP S1
`

中断里同时管"翻转"和"计时"两件事:

`asm
INT_T0: INC LCNT
MOV A,LCNT
CJNE A,#100,I1 ;100次中断
MOV LCNT,#00H
INC HCNT
MOV A,HCNT
CJNE A,#05H,I1 ;5×100=500次,一档结束
MOV HCNT,#00H
INC FLAG ;换下一档
I1: CPL P1.0 ;每次中断翻转引脚
MOV A,FLAG
CJNE A,#00H,I2
LJMP K1 ;FLAG=0:装高音初值
I2: MOV A,FLAG
CJNE A,#01H,I3
LJMP K2 ;FLAG=1:装低音初值
I3: MOV A,FLAG
CJNE A,#02H,I1
MOV FLAG,#00H
CLR TR0 ;FLAG=2:两档响完,关定时器
LJMP RETUNE
K1: MOV TH0,#(65536-700)/256 ;高音重装
MOV TL0,#(65536-700)MOD 256
LJMP RETUNE
K2: MOV TH0,#(65536-1000)/256 ;低音重装
MOV TL0,#(65536-1000)MOD 256
RETUNE: RETI
`

档位半周期频率中断次数持续时间
叮(高)700μs约714Hz5000.35秒
咚(低)1000μs500Hz5000.5秒

注意这里"中断次数"不是周期数:每次中断翻转一次引脚,两次中断才是一个完整方波。所以500次中断 = 250个完整周期 = 0.35秒(500×700μs)。这一点很多人第一次算会算错一倍。

为什么两级计数器(LCNT数到100、HCNT数到5)?因为51的8位寄存器最多装255,一档要500次中断,一个字节装不下。拆成100×5,两个字节都够用,改时长也方便:想"叮"短一点,把HCNT的5改成3。

按键那段有个细节:SETB TR0 之后又跳回 S1: JB KEY,$,看上去像会重复触发,其实不会——声音响的这0.85秒里如果松手了,JB KEY,$ 会一直等到下一次按下才重新开门铃;如果一直按着不放,则要等松手再按才响第二次。这正好符合门铃"按一次响一次"的使用习惯。

特别注意: 只响一声就没声了,检查FLAG是不是停在2,CLR TR0之后要MOV FLAG,#00H清回去;音调不像"叮咚"而是两个音差不多,把700和1000的差距拉大(比如600和1200);按住按键只响一次是设计如此,不是坏了;第二次按键没反应,确认第一次的声音已经结束(0.85秒内再按不响应);实物驱动要用三极管,P1.0直推蜂鸣器电流不够。

四、日期修改

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

五、资料下载

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

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A28基于51单片机汇编语言蜂鸣器警报声Proteus设计
下一篇:A30基于51单片机汇编语言点阵箭头Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}