張仁朝 張茂貴
摘要
本文設(shè)計(jì)了一種基于STC89C52單片機(jī)控制的車載空氣凈化器,從而達(dá)到凈化車內(nèi)空氣的效果。該凈化器采用手機(jī)APP控制,利用空氣質(zhì)量傳感器進(jìn)行空氣的檢測(cè),若沒有污染源的出現(xiàn),該凈化器可以過濾粉塵與PM2.5的氣體,若檢測(cè)到有害氣體,該凈化器可以釋放臭氧消毒來凈化空氣。
【關(guān)鍵詞】單片機(jī) 傳感器 手機(jī)APP 凈化
1 引言
隨著社會(huì)經(jīng)濟(jì)的發(fā)展和人們生活水平的提高,汽車已經(jīng)走入平常百姓家,車內(nèi)的座椅、沙發(fā)墊等裝飾材料會(huì)釋放苯、甲醛等有毒物質(zhì),導(dǎo)致車內(nèi)空氣質(zhì)量惡化,同時(shí)車內(nèi)封閉的小環(huán)境,容易使人感到不適,引起頭痛,惡心等現(xiàn)象。本人根據(jù)實(shí)際生活的需要設(shè)計(jì)了一種車載空氣凈化器。
2 硬件電路設(shè)計(jì)
2.1 系統(tǒng)結(jié)構(gòu)
該項(xiàng)目主要由空氣質(zhì)量傳感器模塊、MCU控制模塊、液晶顯示模塊、空氣凈化模塊、電源模塊、藍(lán)牙模塊、手機(jī)APP等組成,如圖1所示。
2.2 硬件模塊介紹
2.2.1 MCU模塊
MCU模塊是采用STC89C52單片機(jī)作為控制核心,此單片機(jī)是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K字節(jié)系統(tǒng)可編程Flash存儲(chǔ)器,價(jià)格便宜,適合實(shí)際應(yīng)用需要。如圖2所示。
除了復(fù)位電路、時(shí)鐘電路外,P2端口連接LCD1602的液晶顯示。
2.2.2 顯示模塊
本電路顯示模塊采用的是LCD1602,可以顯示2行*16字符,主要用來顯示凈化時(shí)間。其中第3腳為Vo為對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,實(shí)際使用中用一個(gè)電位器來調(diào)整,如圖3所示。
2.2.3 空氣質(zhì)量傳感器模塊
空氣質(zhì)量檢測(cè)模塊采用的是SM427N001,它是一款高性價(jià)比的四等級(jí)空氣質(zhì)量傳感器。能夠檢測(cè)氨氣、氫氣、酒精、一氧化碳、甲烷、丙烷、甘烷、苯乙烯、丙二醇、酚、甲苯、乙苯、二甲苯、甲醛等有機(jī)揮發(fā)氣體以及香煙、木材、紙張燃燒煙霧、油煙等。該模塊通過XH2.54-4立式插座與單片機(jī)P1^2、Pl^3相連,接口定義如表1所示。輸出信號(hào)A、B與污染等級(jí)0-3相對(duì)應(yīng),0表示沒有污染,3表示污染最嚴(yán)重,級(jí)別越高表示污染越嚴(yán)重,具體如表2所示。
2.2.4 空氣凈化模塊
該電路執(zhí)行空氣的過濾、凈化和消毒功能。具體如圖4所示。JP1與JP2所接的風(fēng)扇通過過濾網(wǎng)進(jìn)行空氣循環(huán),過濾網(wǎng)能不僅夠?yàn)V除顆粒塵埃、毛發(fā)、絮狀物等懸浮物,還可以濾除部分PM2.5、甲苯、TVOC等有害氣體。當(dāng)紅燈亮?xí)r,說明車內(nèi)空氣污染嚴(yán)重,JP4臭氧電路工作,進(jìn)行消毒;藍(lán)燈亮?xí)r,JP5負(fù)離子電路工作,進(jìn)行空氣凈化。
2.2.5 手機(jī)APP模塊
該APP用于直接控制空氣凈化器中的凈化和消毒,簡(jiǎn)單方便,可以提前開啟空氣凈化,當(dāng)你打開車門就可以享受清新的空氣,具有很高的實(shí)用性。如圖5所示。
2.2.6 藍(lán)牙模塊
藍(lán)牙模塊采用的是CC2541,手機(jī)APP發(fā)出指令后,藍(lán)牙模塊接收信號(hào)并傳到單片機(jī)中,單片機(jī)根據(jù)接收的信號(hào)做出相應(yīng)的判斷,控制凈化模塊和消毒模塊進(jìn)行相關(guān)的操作。其中藍(lán)牙模塊TXD連接單片機(jī)的P3^0;RXD連接單片機(jī)的P3^1;如圖6所示。
3 軟件流程
系統(tǒng)上電后,先進(jìn)行初始化。單片機(jī)檢測(cè)按鍵是否有按下,如果有按鍵,則執(zhí)行凈化處理,并在液晶上顯示時(shí)間;同時(shí)還要檢測(cè)手機(jī)APP送來的信號(hào),如果空氣質(zhì)量達(dá)到污染程度,則啟動(dòng)臭氧電路進(jìn)行消毒處理,如圖7所示。
主要程序如下:
#include
#define uchar unsigned char
#define Port PO
sbit RS=P3^5;
sbit RW=P3^6;
sbit E=P3^4;
sbit foot2=P3^2;//按鍵中斷
sbit foot 1-P1^1;//風(fēng)扇
sbit foot3=P1^2;//空氣傳感器
sbitfoot4=P1^3;//空氣傳感器
sbit foots=P1^4;//臭氧
sbit foot6=P1^5;//負(fù)離子
sbit LED6=P1^6;
sbit Busy=P0^7;
ucharstr[16]="0123456789-",hour=3,min=0,sec=0,num=0,i,j,flags,flag;
uchar strl[16]="**CleaningAir**",str2[16]="Time:";//利用數(shù)組,調(diào)用數(shù)組
void delay()//延時(shí)函數(shù)
{
uchar ij;//延時(shí)變量
for(i-0;i<50;i++)
for(j=0;j<100;j++);
}
void Read Busy(void)//讀忙信號(hào)判斷
{
uchark=255;
Port=0xff;
RS=0;
RW=0;
E=0;
while((k--)&&(Busy));
E=0;
}
void Write_Comm(uchar Icdcomm)//寫指令函數(shù)
{
Read Busy();//先讀忙
RS=0;//端口定義為寫指令
RW=0;//端口寫入使能
E=1;//端口輸入總使能
Port=1cdcomm;//數(shù)據(jù)端送指令
E=0;//端口輸入總禁止
}
void Write_Chr(uchar lcddata)//寫數(shù)據(jù)函數(shù)
{
Read_Busy();//先讀忙
RS=1;//端口寫數(shù)據(jù)使能
RW=0;//端口寫入使能
E=1;//端口總輸入使能
Port=1cddata;//數(shù)據(jù)端口送數(shù)據(jù)
E=0;//端口總輸入禁止
}
void Init_LCD(void)
{
delay();//稍微延時(shí),等待LCD進(jìn)入工作狀態(tài)
Write_Comm(0x38);//8位2行5*7
Write_Comm(0x0c);//顯示開,光標(biāo)開閃爍開
Write_Comm(0x01);//清屏
Write_Comm(0x02);//光標(biāo)歸位
}
void zhongduan0()interrupt0
{
foot1=~foot1;
foot6=~foot6;
TR0=~TR0;
while(foot2!=0);
}
//串口中斷
void UART_SER()interrupt 4
{
uchar temp=2;
if(RI)
{
RI=0;//清除接收標(biāo)志
temp=SBUF;
switch(temp)
{
case'3':foot1=1;foot6=1:TRO=1:break://開風(fēng)扇和負(fù)離子
case'4 ':foot1=0;foot6=0:TR0=0:break;//關(guān)風(fēng)扇和負(fù)離子
case'1':foot5=1;break;
//開臭氧
case'2':foot5=0;break;
//關(guān)臭氧
}
}
}
void Timer0()interrupt1//
{
num++;
if(num==20)
{
flag=num=0;
}
if(flag==0&&num==0)
{flag=1;
if(sec==0&&min==0)
{
if(hour!=0)
{
hour--;
min=59;
sec=59;
}
}
else//少了之后就是58開始
if(sec!=O)
{
sec--;
}
else//少了之后就是58開始
if(min!=0)
{
min-sec-59;
}
if(hour==0&&min==0&&sec==0)
{
TR0=0;
num=0;
}
}
}
void displayl()
{
Write_Comm(0x80);//定位第一行第一個(gè)位
for(i=0;i<16;i++)
{
Write_Chr(strl[i]);
}
str2[9]=str[12];
str2[10]=str[min/10];
str2[11]=str[min%10];
str2[12]=str[12];
str2[13]=str[sec/10];
str2[14]=str[sec%10]://不加while,會(huì)出現(xiàn)閃爍的現(xiàn)象,因?yàn)镮nit-Lcd有清屏的作用,一開一閉就會(huì)有閃;
Write_Comm(0xC0);//定位第二行第一個(gè)位
for(j=0;j<16;j++)
{
Write_Chr(str2[j]);
}
}
void main()
{
EA=1;
ET0=1;
TR0=1;
IT0=1;//跳變沿出發(fā)方式(下降沿)
EX0=1;//打開INTO的中斷允許。
TH0=(65536-50000)/256;//50ms
TL0=(65536-50000)%256;
TMOD&=0xf0;//定時(shí)器。工作方式1(16位)=0x20|0x01;
TMOD|=0x03;
foot1=1;
foot3-0;
foot4=0;
foot5-0;
foot6=1;
TMOD&=0x0f;//定時(shí)器0工作方式1(16位)=0x20|00x01;
TMOD|=0x20;
TMOD|=0x00;
SM0=0;
SM1=0;//串口工作方式1
REN=1;//允許串口接收
TH1=0xfd;
TL1=0xfd;//9600波特率
ES=1;
Init_LCD();
while(1)
{
displayl();
if(foot3==1‖foot4==1)
{
foot5=1;
}
}
}
4 結(jié)束語(yǔ)
本文設(shè)計(jì)的車載空氣凈化器,充分利用了單片機(jī)在控制領(lǐng)域的性能優(yōu)勢(shì),能夠檢測(cè)車內(nèi)空氣質(zhì)量,并作出相應(yīng)的處理,采用一鍵啟動(dòng),同時(shí)使用手機(jī)APP控制,具有很高的實(shí)用性。
參考文獻(xiàn)
[1]翟龍濤.李慶才.高勇善.基于單片機(jī)控制的PM2.5空氣凈化器的設(shè)計(jì)與研究[J].電子世界,2016(11):55-57.
[2]王先彪.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2014.
[3]余阿陵,陳顯彬.基于ATmegal6單片機(jī)的空氣凈化器控制系統(tǒng)設(shè)計(jì)[J].電氣電子教育學(xué)報(bào),2016(02):71-74.
[4]楊光友,朱宏輝.單片微型計(jì)算機(jī)原理及接口技術(shù)[M].北京:中國(guó)水利水電出版社,2002.
[5]章亞明.嵌入式控制系統(tǒng)應(yīng)用設(shè)計(jì)[M].北京:北京郵電大學(xué)出版社,2010.