#include <reg52.h>
#define MQ_PIN P1_0
#define THRESHOLD 300
void main() {
unsigned int sensor_value;
while (1) {
// 读取传感器数据
sensor_value = ADC(MQ_PIN);
// 处理传感器数据
if (sensor_value > THRESHOLD) {
// 烟雾浓度高于阈值,触发警报
// TODO: Add your alarm code here
}
// 延迟一段时间,等待传感器稳定
delay(1000);
}
}
// 初始化ADC
void ADC_Init() {
P1ASF = 0x01; // 将P1_0设置为模拟输入
ADC_RES = 0; // ADC结果寄存器
ADC_CONTR = 0xE0; // ADC控制寄存器
}
// 读取ADC值
unsigned int ADC(unsigned char ch) {
ADC_CONTR = ADC_CONTR & 0xF0 | ch; // 选择模拟通道
delay(2); // 等待采样
ADC_CONTR |= 0x08; // 开始转换
while (!(ADC_CONTR & 0x10)); // 等待转换完成
ADC_CONTR &= 0xEF; // 清除完成标志位
// 获取ADC值 return ADC_RES * 256 + ADC_RESL; }
// 简单的延迟函数 void delay(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) { for (j = 0; j < 125; j++); } }
|