#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++); } }
|