《51单片机应用开发从入门到精通》——2.10 变频报警实例

简介:

本节书摘来异步社区《51单片机应用开发从入门到精通》一书中的第2章,第2.10节,作者:张华杰 ,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.10 变频报警实例

51单片机应用开发从入门到精通
本实例是用软件延时方法实现变频振荡报警,即用P3.4端口输出1kHz和2kHz的变频信号以示报警,每隔1s交替变换1次。本节硬件设计与上节相同。

2.10.1 程序设计

本程序利用软件延时方法,使P3.4端口输出1kHz和2kHz的变频信号,每隔1s交替变换1次。

1.流程图
程序设计流程如图2-16所示。

2494248ccbf00831e3fed04d61961af1b567d9ee

2.程序
汇编语言编写的变频报警源程序FS02.ASM代码如下:

01:   MAIN:    MOV        R1,#8             ;1kHz持续时间
02:   LOOP1:   MOV        R2,#250  
03:   LOOP2:   CPL        P3.4               ;输出1kHz方波 
04:            ACALL      DELAY2             ;调用延时500s子程序
05:            DJNZ       R2,LOOP2           ;持续1s
06:            DJNZ       R1,LOOP1                       
07:            MOV        R3,#16              ;2kHz持续时间
08:   LOOP3:   MOV        R4,#250
09:   LOOP4:   CPL        P3.4                ;输出2kHz方波
10:            ACALL      DELAY1              ;调用延时250s子程序
11:            DJNZ       R4,LOOP4            ;持续1s
12:            DJNZ       R3,LOOP3                        
13:            JMP        MAIN                            
14:   DELAY1:  MOV        R5,#125             ;延时250s子程序
15:            DJNZ       R5,$                            
16:            RET                             ;子程序返回
17:   DELAY2:  MOV        R6,#250              ;延时500s子程序
18:            DJNZ       R6,$                          
19:            RET                               ;子程序返回
20:            END                               ;程序结束```

####2.10.2 代码详解
1.标号说明
START:程序开始的进入点。

LOOP1和LOOP2:输出1kHz方波,持续1s时间是采用双重循环来实现的。LOOP2是内循环的进入点,LOOP1是外循环的进入点。

LOOP3和LOOP4:输出2kHz方波,持续1s时间也是采用双重循环来实现的。LOOP4是内循环的进入点,LOOP3是外循环的进入点。

DELAY1:延时250s子程序的进入点。

DELAY2:延时500s子程序的进入点。

2.寄存器使用分配情况
在程序中,P3与R1~R6都是寄存器。P3是特殊寄存器,对外是输出端口;R1~R6是普通寄存器,用作计数器。

P3.4对内是寄存器P3的一个位,对外是P3端口的第5个引脚。

R1和R2:输出1kHz方波时,采用双重循环来实现持续1s所使用的两个计数器。

R3和R4:输出2kHz方波时,采用双重循环来实现持续1s所使用的两个计数器。

R5:延时250s子程序中所用的计数器。

R6:延时500s子程序中所用的计数器。

3.程序分析解释
本程序使P3.4端口输出1kHz和2kHz的变频信号,每隔1s交替变换1次。

01~06:完成1kHz的输出,并持续1s。

07~12:完成2kHz的输出,并持续1s。

14~16:输出1kHz时的延时子程序;17~19行语句为输出2kHz时的延时子程序。

第01~06行语句中,03行语句使P3.4端口作反相输出,每次反相输出后,都要调用延时子程序延时500s,该延时的时间决定着P3.4端口输出的频率为1kHz。

02和05行语句组成内循环,01和06行语句组成外循环。双重循环使输出1kHz方波时间持续为1s,如图2-17所示。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/ce27296492ca7582c2fb62f72ecce46284dc217b.png" width="" height="">
</div>

第07~12行语句的结构与第01~06行语句完全相同,只是调用的延时子程序的延时时间缩短了,输出2kHz方波,并持续1s。

第14~16行语句与第17~19行语句组成两个延时子程序,延时的时间不一样,但是程序结构一样,都属于单重循环结构的延时程序。

####2.10.3 模拟仿真
该程序语句行数不多,但循环较多。因此,在模拟仿真时,主要是观察程序的运行路线,弄清每次循环的意图,以便更好地理解程序。

为了节省时间,在模拟仿真之前,可以先将寄存器R2、R4、R5和R6的数值减小。

####2.10.4 实例测试
将写入变频报警程序的单片机插入实验板插座内,并检查实验板上的峰鸣器是否接在P3.4端口上,当检查无误后接通电源,会听到变频报警声。

实例测试时注意听声音的频率变化及频率变化的时间。该程序开始时先发出1kHz的声音,持续1s,接着发出2kHz的声音,也持续1s。不断循环,便产生变频报警声。

可以改变程序中延时子程序DELAY1或DELAY2的延时时间,观察声音的变化;再改变一下程序中的R1或R3的数值,观察发声长度的变化,从而加深对变频报警声产生原理的理解。

####2.10.5 经验总结
相关文章
|
物联网
MQTT常见问题之用单片机接入阿里MQTT实例失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
传感器
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计
551 0
【单片机】按键声光报警实验(蜂鸣器)
【单片机】按键声光报警实验(蜂鸣器)
1352 0
|
传感器
基于51单片机的车辆倒车雷达报警系统
该文描述了一个基于51单片机的超声波倒车雷达系统设计,要求包括:2cm至4m的测量范围,3mm精度,集成DS18B20温度传感器以校准声速,使用LCD1602显示距离和温度,具备按键设置预警距离及蜂鸣器报警功能。系统由AT89C51单片机、HC-SR04超声波模块、DS18B20温度模块、报警电路和LCD显示电路组成。文中还展示了Proteus仿真电路图和部分仿真结果分析,包括LCD显示示例和预警距离设置操作。
608 4
|
传感器 数据采集 监控
毕业设计|基于51单片机的配电室远程监控系统设计环境检测GSM环境报警设计
毕业设计|基于51单片机的配电室远程监控系统设计环境检测GSM环境报警设计
430 0
|
传感器
毕业设计 基于STM32的单片机智能门禁热释人体感应报警设计
毕业设计 基于STM32的单片机智能门禁热释人体感应报警设计
754 0
|
容器
基于51单片机的电话拨号报警器(2)
基于51单片机的电话拨号报警器(2)
375 0
|
算法 编译器 网络性能优化
基于51单片机的电话拨号报警器(1)
基于51单片机的电话拨号报警器(1)
498 0
|
传感器 编解码 监控
毕业设计 基于51单片机老人防跌倒GSM短信报警系统
毕业设计 基于51单片机老人防跌倒GSM短信报警系统
781 0
毕业设计 基于51单片机老人防跌倒GSM短信报警系统
|
传感器 监控 安全
基于单片机的家庭防盗报警系统的设计与实现_kaic
摘要:本论文研究的是将AT89C52单片机芯片作为核心元器件的防盗报警系统,该系统除了具有直接报警的功能外,还额外增加了布防和红外感应的功能。和市场上的其他各类防盗报警器相比,该设计的不同之处在于它所具有的布防功能和红外检测功能。在到达指定布防时间的时候,红外检测电路与之相配合来达到防盗的目的。此外,不论何时只要有人经过,红外检测电路的热释电红外传感器都会感应到相应的人体红外信号,并将其转化为电平信号传送给单片机,从而驱动显示灯亮。这种报警器相对比较隐蔽,能够很好的掩人耳目,不至于被盗贼发现实行破坏行为。另外,增加的布防功能可以让住户有足够的开门关门时间,减小了误报率。 整体的设计运用了模块化