酒精浓度检测系统设计程序设计

酒精浓度检测系统设计程序设计

ID:11116117

大小:21.71 KB

页数:27页

时间:2018-07-10

酒精浓度检测系统设计程序设计_第1页
酒精浓度检测系统设计程序设计_第2页
酒精浓度检测系统设计程序设计_第3页
酒精浓度检测系统设计程序设计_第4页
酒精浓度检测系统设计程序设计_第5页
资源描述:

《酒精浓度检测系统设计程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//#include"reg52.H"#include"STC12c5A.h"#include"1602.h"#include"2402.h"#defineucharunsignedchar#defineuintunsignedint//声明常量#defineALCH250//醉驾标准80mg/L//K_MG_MV和K_ZERO为传感器校准系数,要根据每个MQ-3模块校准#defineK_MG_MV160/66//传感器灵敏度系数,每毫克/L对应的10毫伏数#defineK_ZERO15//传感器零点漂移,约130mV//定义按键sbitKey_Up=P3^4;sbitKey_Down=P3^

2、5;//定义LED报警灯sbitLed_Warn1=P3^2;sbitLed_Warn2=P3^3;sbitBuzzer=P3^0;//定义蜂鸣器//定义乙醇传感器TTL电平输出引脚sbitDOUT=P1^4;//定义标识volatilebitFlagStartAL=0;//开始转换标志volatilebitFlagKeyPress=0;//有键弹起标志//全局变量定义ucharThreshold;//酒精浓度上限报警值uintALCounter;//酒精转换计时器longALValue;//酒精测量值floatALtemp;//计算临时变量uintkeyvalue,keyUp,keyDown

3、;//键值char*pSave;//EEPROM存盘用指针//函数声明voidData_Init();voidTimer0_Init();voidPort_Init();voidADC_Init();ucharGetADVal();voidKeyProcess(uint);//数据初始化voidData_Init(){ALCounter=0;ALValue=0;Led_Warn1=1;Led_Warn2=2;keyvalue=0;keyUp=1;keyDown=1;Buzzer=1;}//定时器0初始化,中断时间约2毫秒//计算:晶振11.0592MHz,定时器时钟11059200/12=92

4、1600,每毫秒922个脉冲//16位定时器初值65536-1844=63692=0xf8ccvoidTimer0_Init(){ET0=1;//允许定时器0中断TMOD=1;//定时器工作方式选择TL0=0xcc;//TH0=0xf8;//定时器赋予初值,大约为2毫秒中断1次TR0=1;//启动定时器}//定时器0中断voidTimer0_ISR(void)interrupt1using0{TL0=0xcc;TH0=0xf8;//定时器赋予初值//每1秒钟启动一次AD转换ALCounter++;if(ALCounter>=500){FlagStartAL=1;ALCounter=0;}}vo

5、idPort_Init(){P1M0=0x80;//10000000,P1.7作为AD输入P1M1=0x80;//}voidADC_Init(){uinti;P1ASF=0x80;//设P1.7为AD输入ADC_RES=0;//清先前的结果ADC_CONTR

6、=0x80;//POWER=1,打开ADC电源for(i=5000;i>0;i--);//延时ADC_CONTR=ADC_CONTR&0xE0;//1110,0000清ADC_FLAG,ADC_START位和低3位ADC_CONTR=ADC_CONTR&0xf8

7、0x07;//设置当前通道号为P1.7for(i=2500;i>0;i--)

8、;//延时}//进行AD转换,得到当前酒精值ucharGetADVal(){uinti;ADC_CONTR&=0xf7;for(i=250;i>0;i--);//待输入电压稳定后开始转换//ADC_RES=0;ADC_CONTR

9、=0x08;//ADC_Start=1,启动转换while((ADC_CONTR&0x10)==0);//等待转换结束ADC_FLAG=1ADC_CONTR&=0xe7;//清ADC_FLAG和ADC_START位,停止转换returnADC_RES;}//存入设定值voidSave_Setting(){pSave=(char*)&Threshold;//地址低位对应

10、低8位,高位对应高8位wrteeprom(0,*pSave);//存醉酒阈值低8位DELAY(300);pSave++;wrteeprom(1,*pSave);//存醉酒阈值高8位DELAY(300);}//载入设定值voidLoad_Setting(){pSave=(char*)&Threshold;*pSave++=rdeeprom(0);*pSave=rdeeprom(1);if((Thre

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。