产品概述
Z-MQ-01模组采用MQ-2气体传感器配合8位高性价比单片机, 内部已做 AD 采集, 用户只需串口读数据即可,方便使用。该模组对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。
单片机源程序如下:
- #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)
|