產品概述
Z-MQ-01模組采用MQ-2氣體傳感器配合8位高性價比單片機, 內部已做 AD 采集, 用戶只需串口讀數據即可,方便使用。該模組對液化氣、丙烷、氫氣的靈敏度高,對天然氣和其它可燃蒸汽的檢測也很理想。
0.png (113.94 KB, 下載次數: 45)
下載附件
2017-12-19 20:58 上傳
單片機源程序如下:
- #include<reg52.h>
- #define buf_len 9
- unsigned char temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- unsigned char write_buf[buf_len] = {0xff,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
- char read_buf[buf_len] = {0};
- unsigned char uart_len = 0;
- unsigned char uart_RX_num = 0;
- void delay_ms(int ntime)
- {
- int i;
- while(ntime--)
- for(i = 0; i<120; i++);
- }
- void uart_init(void)
- {
- TMOD=0x20; //用來定時器設置
- TH1=0xfd; //設置初值 9600=(2的SMOD次方/32)*(TI溢出率)=(1/32)*(11059200/12)/(256-X)
- TL1=0xfd;
- TR1=1; //開啟定時器1
- SM0=0; //設置串行口工作方式
- SM1=1;
- REN=1; //允許串行接收位
- EA=1; //開啟總中斷
- ES=1; //開啟串口中斷
- //ES = 1;
- }
- void main(void)
- {
- unsigned int i =0;
- unsigned int oldcount = 0;
- unsigned char flag = 1;
- unsigned char g,s,b;
- uart_init();
- P1 = 0x00;
- P0 = 0x00;
-
-
- while(1)
- {
- if(flag)
- {
- flag = 0;
- ES=0; //關閉串口中斷
- for(i=0; i<9; i++)
- {
- SBUF = write_buf[i]; //發送數據a到SBUF,即將單片機的數據發送到計算機
- while(!TI); //發送數據后,TI自動置1
- TI=0; //TI置0,才能進行下次發送
- }
- ES=1; //打開中斷
- }
- i = 100;
- while(i--)
- {
- P1 = 0x01;
- P0 = temp[g];
- delay_ms(5) ;
- P1 = 0x02;
- P0 = temp[s];
- delay_ms(5);
- P1 = 0x04;
- P0 = temp[b];
- delay_ms(5);
- }
- if(uart_RX_num)
- {
- if(uart_RX_num == oldcount)
- {
- ES=0; //關閉串口中斷
- for(i=0; i<buf_len; i++)
- {
- SBUF = read_buf[i]; //發送數據a到SBUF,即將單片機的數據發送到計算機
- while(!TI); //發送數據后,TI自動置1
- TI=0; //TI置0,才能進行下次發送
- }
-
- g = (read_buf[3]%16);
- s = (read_buf[3]/16);
- b = (read_buf[2]%16);
- ES=1; //打開中斷
- flag = 1;
- }
- else
- oldcount = uart_RX_num;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
煙霧傳感器.zip
(230.68 KB, 下載次數: 111)
2017-12-19 18:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|