这是我做的甲醛检测的源码
单片机源程序如下:
- #ifndef _GLOBAL_H
- #define _GLOBAL_H
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #endif
- #include <stdio.h>
- #include <math.h>
- #include <d:\\danpianji\\include\\lcd1602.h>
- sbit add_a=P3^4;
- sbit add_b=P3^5;
- sbit add_c=P3^6;
- sbit ST=P3^0; //A/D启动转换信号
- sbit EOC=P3^1; //A/D转换结束信号
- sbit OE=P3^2; //数据输出允许信号
- sbit CLK=P3^3; //时钟脉冲
- uchar fvalue[8],tvalue[8];//保存数值
- uint temp,ieoc;
- float lg,volt,ppm,mass;
- /******************************************************************
- 延时函数
- ******************************************************************/
- void delay(uchar t)
- {
- uchar i,j;
- for(i=0;i<t;i++)
- for(j=t;j>0;j--);
- }
- /******************************************************************
- 初始化甲醛传感器函数
- ******************************************************************/
- void inithcho(){
- add_a=0;
- add_b=0;
- add_c=0;
- P1=0xff;
- EOC=1;
- }
- /******************************************************************
- 获取甲醛传感器数据函数
- 功能:获取甲醛、甲苯数据并使用lcd函数输出
- ******************************************************************/
- void gethcho(){
- ST=0;
- ST=1;
- ST=0;
- while(1){
- CLK=!CLK;
- if(EOC==1)
- {
- break;
- }
- }
- OE=1;
- temp=P1;
- delay(100);
- if(temp==P1){
- OE=0;
- delay(100);
- //write_command(0x01);
- volt=temp*0.0196;
- //Formaldehyde 甲醛 HCHO
- lg=(-2.631)+1.528*volt+(-0.125)*volt*volt; //以10为低的对数
- ppm=pow(10,lg); //PPM值 体积浓度表示
- mass=ppm*(30.03/22.4); //转换成气体质量深度表示(mass=分子量*ppm/22.4)
- sprintf(fvalue,"HCHO %.2fmg/m3 ",ppm,mass);
- string(0x80,fvalue);
-
- //toluene 甲苯 C7H8
- lg=(-7.071)+2.852*volt+(-0.210)*volt*volt; //以10为低的对数
- ppm=pow(10,lg); //PPM值 体积浓度表示
- mass=(92.14*ppm)/22.4; //转换成气体质量深度表示(mass=分子量*ppm/22.4)
- sprintf(tvalue,"C7H8 %.2fmg/m3 ",mass);
- string(0xC0,tvalue);
-
- }
- }
- void main(){
- initlcd();
- inithcho();
- while(1){
- gethcho();
- }
- }
复制代码
所有资料51hei提供下载:
CH2O.rar
(1018 Bytes, 下载次数: 71)
|