简介
详细介绍如何使用51汇编的Proteus仿真去实现蜂鸣器的控制。此教程只做操作过程,不具体解释每一步具体含义,以极简的方式,通过操作让你实现相关功能。
前提条件:
①新建好相关的仿真工程,绘制好相关原理图
②学会了IO口的基本控制
如果不具备以上条件,可以往回看相关教程,往期内容有较详细的讲解!
1、原理图如下,通过程序控制P1.0口,让蜂鸣器间隔一定时间响一下。
2、蜂鸣器原理图
这里使用的是有源蜂鸣器,直接给高低电平就能响。这里源是指振荡源,无源蜂鸣器需要输入一定频率的信号才响,有源蜂鸣器比无源蜂鸣器控制简单。由于蜂鸣器所需电流较大,为了保证蜂鸣器响声大,通过一个三极管做开关和驱动作用。
3、效果展示
4、蜂鸣器子程序
;=========================
; 蜂鸣器开启子程序
; 名称:BEEP0N
; 输入:空
; 输出:空
; 功能: 开启蜂鸣器
;=========================
BEEPON:
CLR FM
RET
;=========================
;=========================
; 蜂鸣器关闭子程序
; 名称:BEEP0FF
; 输入:空
; 输出:空
; 功能: 开启蜂鸣器
;=========================
BEEPOFF:
SETB FM
RET
;=========================
5、完整程序
;=========================
; 文件名称:main.asm
; 文件描述:汇编基本程序教程:蜂鸣器
; 创建人:lsh
; 创建日期: 2023.8.21
; 程序版本:1.0
; 完成日期:2023.8.21
;=修改记录====
; 修改人:
; 修改内容:
; 修改时间:
;=========================
$NOMOD51
$INCLUDE (80C52.MCU)
; IO引脚定义
;=========================
LED EQU P0 ; 定义P0口为LED
FM EQU P1.0 ; 定义P1.0为蜂鸣器控制端FM
;========================
;=========================
org 0000h
jmp Start ; 跳转到程序开始入口
;=========================
; 主程序
;=========================
org 0100h
Start:
;=========================
; 主程序的主循环
;=========================
Loop: ; 程序主循环
LCALL BEEPON ; 调用蜂鸣器开启子程序,开启蜂鸣器
LCALL DELAY ; 调用延时子程序
LCALL BEEPOFF ; 调用蜂鸣器关闭子程序,关闭蜂鸣器
LCALL DELAY ; 调用延时子程序
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
AJMP Loop ; 跳转到程序主循环开头
;=========================
;子程序
;=========================
; 延时子程序
; 名称:DELAY
; 输入:空
; 输出:空
; 功能:占用cpu,实现延时一段时间
;=========================
DELAY:
MOV R0,#228
DELAY1:
MOV R1,#20
DELAY2:
MOV R2,#20
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
;=========================
; 蜂鸣器开启子程序
; 名称:BEEP0N
; 输入:空
; 输出:空
; 功能: 开启蜂鸣器
;=========================
BEEPON:
CLR FM
RET
;=========================
;=========================
; 蜂鸣器关闭子程序
; 名称:BEEP0FF
; 输入:空
; 输出:空
; 功能: 开启蜂鸣器
;=========================
BEEPOFF:
SETB FM
RET
;=========================
;=========================
END ; 程序结束
;=========================