劉強 李宏寧

摘要 本系統由采集數據、酒精傳感器、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.