|
#include <reg52.h>
#define MQ_PIN P1_0
#define THRESHOLD 300
void main() {
unsigned int sensor_value;
while (1) {
// 讀取傳感器數(shù)據(jù)
sensor_value = ADC(MQ_PIN);
// 處理傳感器數(shù)據(jù)
if (sensor_value > THRESHOLD) {
// 煙霧濃度高于閾值,觸發(fā)警報
// TODO: Add your alarm code here
}
// 延遲一段時間,等待傳感器穩(wěn)定
delay(1000);
}
}
// 初始化ADC
void ADC_Init() {
P1ASF = 0x01; // 將P1_0設(shè)置為模擬輸入
ADC_RES = 0; // ADC結(jié)果寄存器
ADC_CONTR = 0xE0; // ADC控制寄存器
}
// 讀取ADC值
unsigned int ADC(unsigned char ch) {
ADC_CONTR = ADC_CONTR & 0xF0 | ch; // 選擇模擬通道
delay(2); // 等待采樣
ADC_CONTR |= 0x08; // 開始轉(zhuǎn)換
while (!(ADC_CONTR & 0x10)); // 等待轉(zhuǎn)換完成
ADC_CONTR &= 0xEF; // 清除完成標志位
// 獲取ADC值 return ADC_RES * 256 + ADC_RESL; }
// 簡單的延遲函數(shù) void delay(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) { for (j = 0; j < 125; j++); } }
|
|