刘强 李宏宁
摘要 本系统由采集数据、酒精传感器、AT89C52型号的单片机控制器、ADC0809型号的模数转换器、LED显示、继电器、语音报警等模块构成。采集的信号送入单片机,单片机进行计算,判断输出的控制信号;只有在显示的数值超限时,系统就自动切断启动电源,并发出报警,通过数码管将此时的酒精浓度所对应的电压值显示出来,实现自动控制的功能。
【关键词】传感器 模数转换 单片机 自动控制
1 总体方案的设计
该系统用单片机处理气体中酒精含量是否超限,当测到酒精含量过高时,系统会自动的切断该汽车引擎的电源,发出警报并且在显示屏上显示出浓度值,并禁止发动机启动。
2 系统原理
电压小于对应的2.3V时候,P2.1和P2.0都是高电平,继电器和蜂鸣器都不工作。电压大于对应的2.3V时候,P2.1和P2.0都是低电平,继电器和蜂鸣器都工作,如图1所示。3软件设计
#include #define us unsigned intsbit U3_OE=P2^4; sbit U3_EOC=P2^5; sbitU3_ALE=P2^6; sbir U3_START=P2^7; sbitU4=Pl^0;
sbit R5=Pl^l:
void dela(us y)
{us x;while(y--){for(x=O;x<10;x++){;))}
/通过SV量程通道的1显示程序;
void displalinl(us zha)
{us shuO,shul;Shul=zha/51;ShuO=zha%51; ShuO=shu0/5;if(shul>211(shu0>=4&&shul==2》 {R5=O;U3=0;)else {R5=1,U3=l;}ShuO=shuO+OxlO;Shul=shul+Ox20;PO=shul;/}點亮一片数码管,显示个位数值,其它均关闭*/dela(l);
/*稍微加上延时,时间控制在1毫秒*/PO=shu0; dela(l);/*稍微加上延时;)
void wam(){ PO=OxfO;dela(4000);PO=Oxff;dela(4000);)
void main(){void displalinO(us zha); /*不需要加在延时程序前面;*/void ADINl();void warn();us ab;R5=2;U3=2; while(l)
{AD_INl(); ab=PO; if(ab==Oxft){wam();} */Else displalinl(ab);,+调用通道1中的5V的显示子程序;*/}}∥通道1转换程序
void AD_INl(){ P3=0;
/*通道1的地址*/U3_ALE=l; U3_ALE=O; /{地址存储位置;*/U3_START=O;
/*进行转换;*/U3_START=l;while(U3_EOC!=l)U3_OE=l;/*如果完成,则将数字量输出;*/)
4 结论
本系统存在不足的地方,在传感器的这部分,传感器由于需要预热,因此须要驾驶员在车上等待系统预热完毕后,大概在五分钟以后才能向系统进行呼气,效率明显不高。尽管当前还存在一些不足,但随着科学技术的发展,这些问题将会被解决,系统会更加完美。
参考文献
[1]胡汉才,单片机原理及其接口技术[M].北京:清华大学出版社,2010.
[2]郁有丈,传感器原理及工程应用[M],西安:西安电子科技大学出版社,2011.