PIC單片機(jī)在中央空調(diào)控制器中的應(yīng)用
1 引 言
中央空調(diào)控制器有別于普通空調(diào)控制器。普通空調(diào)控制器安裝于室內(nèi)掛機(jī)內(nèi),對控制器尺寸要求不高,采用任何單片機(jī)加上外擴(kuò),不管多少外圍器件都沒問題。但中央空調(diào)控制器由于沒有可放置的室內(nèi)機(jī),所以只能單獨(dú)放置,這樣,就要求控制器小巧精致。本設(shè)計(jì)中,用戶要求設(shè)計(jì)的控制器尺寸與一般的家用開關(guān)面板大小相仿,上面排布七個按鍵,十個LED發(fā)光指示和一個溫度顯示,功能上還有遙控、兩路溫度采樣等。
2 系統(tǒng)硬件設(shè)計(jì)
根據(jù)用戶要求,我們進(jìn)行了初步設(shè)計(jì)。在排布組件時,我們就發(fā)現(xiàn),這么小的空間,放上面板所需的鍵盤、顯示后,只留下了一片單片機(jī)的位置,那么A/D、紅外遙控譯碼和外圍驅(qū)動電路怎么放?經(jīng)過比較,我們最終選擇了PIC單片機(jī)。在開發(fā)階段使用PIC16F877,以后還可改為PIC16C74,以降低產(chǎn)品成本。
PIC16F877應(yīng)用于本系統(tǒng)具有以下優(yōu)勢:
·自帶10位多通道模數(shù)轉(zhuǎn)換器,因而無須增加外圍模數(shù)轉(zhuǎn)換器;
·有三個定時器,有足夠的時鐘可用,因?yàn)榭照{(diào)控制最重要的部分就在時鐘上,而且實(shí)現(xiàn)紅外遙控的軟件解碼亦需定時器。
設(shè)計(jì)中,為了減少驅(qū)動要求,全部采用低電平有效,這樣就進(jìn)一步減少了外圍器件對空間的要求。
圖1中,RA3引腳由于模數(shù)轉(zhuǎn)換的設(shè)置限制而不能使用,RC0、RC1引腳由于時鐘定義限制而不能使用。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 總體設(shè)計(jì)方案
系統(tǒng)主程序非常簡單,主要執(zhí)行一個任務(wù),就是鍵盤掃描檢測,因?yàn)镻IC16F877只有一個外部中斷引腳,為實(shí)現(xiàn)紅外遙控軟解碼,鍵盤須采用掃描查詢方式。本系統(tǒng)的技術(shù)方案主要集中在紅外遙控軟件解碼和時鐘控制上。
3.2 紅外遙控軟件解碼
紅外遙控采用HOLTEK公司的HT6221多功能編碼芯片,該公司公布的資料顯示,該芯片采用PPM進(jìn)行編碼,HT6221每發(fā)送一個碼,先送出一個 9ms的頭碼和4.5ms的間隙,然后依次送出16位的地址碼(18ms~36ms)、8位數(shù)據(jù)碼(9ms~18ms)和8位數(shù)據(jù)反碼,圖2給出了 DOUT引腳上輸出的格式。
數(shù)據(jù)的識別為:1.12ms為 0,2.24ms為1,如圖3所示。這樣,紅外遙控軟件解碼需設(shè)計(jì)一時鐘,與中斷同步計(jì)數(shù)就可識別了。本系統(tǒng)的系統(tǒng)時鐘為4MHz,為了便于識別數(shù)據(jù)值,我們確定:時鐘中斷為0.28ms。其基本工作原理為:通過判斷兩次外部中斷間時鐘中斷的次數(shù)(即時間值)來解碼。基本算法如下:
3.3 時鐘控制設(shè)計(jì)
時鐘中斷設(shè)計(jì)是本系統(tǒng)的重點(diǎn),系統(tǒng)每一部分功能幾乎都圍繞時鐘進(jìn)行,例如:制冷室內(nèi)風(fēng)機(jī)起動20秒后壓縮機(jī)外風(fēng)機(jī)才起動,溫度到時,壓縮機(jī)關(guān)機(jī)20秒后關(guān)風(fēng)機(jī),壓縮機(jī)停機(jī)后三分鐘才能再開;按鍵調(diào)溫度,5秒停止按鍵后恢復(fù),并顯示溫度,LED要閃爍。各種模式下,除了本身控制需要的時間要求外,還有許多為保護(hù)系統(tǒng)而設(shè)的時鐘要求。經(jīng)過對系統(tǒng)的仔細(xì)分析,設(shè)計(jì)方案主要從兩個方面著手:
一是處理好各種狀態(tài),為此,為每種狀態(tài)都定義狀態(tài)標(biāo)志如下:
系統(tǒng)的四種切換模式定義狀態(tài),定義名為mode
上面列出了系統(tǒng)所定義的狀態(tài),正是有了這些狀態(tài)的幫助,才方便了時間控制的處理。
二是經(jīng)分析,時鐘的要求盡管多,但都為秒、分、時,所以就設(shè)計(jì)了一個真正的“時鐘”,把“秒”的控制放在“秒”一段,“分”的放在“分”一段,“時”的放在“時”一段,結(jié)合上面的狀態(tài),使控制邏輯非常清晰。下面給出算法示意:
時鐘中斷服務(wù)程序
Secs++“秒”計(jì)數(shù)
If Secs<6
goto sec-1 如果不到1分鐘,處理“秒”程序段
else
{
以上程序是用匯編語言實(shí)現(xiàn)的,為了清晰及減少篇幅,這里改用算法描述來說明。