51单片机烟雾报警器程序及验证

16 下载量 196 浏览量 更新于2024-09-01 3 收藏 157KB PDF 举报
该资源是关于使用51单片机制作烟雾报警器的程序,包含实际制作的实物图和经过验证的程序代码。程序主要涉及51单片机、ADC0809模拟数字转换器以及显示和按键控制部分。 在51单片机烟雾报警器的制作过程中,程序的编写是核心环节。以下是对程序关键部分的详细解释: 1. **程序头函数**:首先包含了`<reg52.h>`头文件,这是51系列单片机的标准寄存器定义,使得我们可以直接使用P0到P3等端口定义。 2. **宏定义**:定义了一些通用的无符号整型(`uint`)和无符号字符型(`uchar`)别名,以及ADC0809的接口管脚。 3. **管脚声明**:定义了用于连接ADC0809、蜂鸣器(Feng)和按键(Key1, Key2, Key3)的P3口的各个位,以及用于显示的P2口的位(Wei1, Wei2, Wei3, Wei4)。 4. **显示数组**:定义了一个数组`Data_[]`,存储了0-9和字母'F'的7段数码管显示码,用于在数码管上显示数值或状态。 5. **函数声明**:`uchar ADC0809()`是用于读取ADC0809转换结果的函数;`void Display(uchar X, uchar Data)`用于在数码管上显示数据;`void delay(uint t)`是延时函数,用于控制程序执行速度。 6. **主函数**:`void main()`是程序的入口点,包含两个主要的循环,分别对应正常模式和调整模式。在正常模式下,程序会读取ADC0809的AD值(模拟量转换为数字量),并判断是否超过预设阈值(`FF`),若超过则启动蜂鸣器报警。在调整模式下,用户可以通过按键改变阈值`FF`。 7. **ADC0809的使用**:通过`ADC0809()`函数读取烟雾传感器的模拟信号,并将其转换为数字值。ADC0809是8通道8位模拟到数字转换器,这里可能只用到了一个通道。 8. **按键处理**:程序监听Key3键,用于在正常模式和调整模式之间切换;Key2键在调整模式下用于增加阈值`FF`。 9. **显示控制**:`Display()`函数用于在数码管上显示读取的AD值或阈值`FF`,通过控制P2口的位来点亮数码管的相应段。 10. **延时函数**:`delay(uint t)`使用了一个循环来实现一定时间的延迟,确保按键操作稳定可靠。 这个程序实现了基本的烟雾报警功能,当检测到的烟雾浓度超过预设值时,会通过蜂鸣器发出报警。同时,用户还可以通过按键自定义报警阈值,增强了系统的灵活性。