單片機(jī)在家電控制系統(tǒng)中的應(yīng)用
111110 C0hOFF
SPEED
MODE
TIMER
SWING
COOL 1-關(guān)機(jī) 0-開機(jī)
11-低 10-中 01-高
11-正常 10-自然 01-睡眠
1111-無 1110-0.5小時(shí)…
0000-7.5小時(shí)
1-無 0-導(dǎo)風(fēng)
1-無 0-冷風(fēng) LED的掃描端口是確定的六個(gè)值,控制端口的數(shù)據(jù)由輸入狀態(tài)變量來決定。 當(dāng)系統(tǒng)處于開機(jī)狀態(tài)下,掃描端口是011111時(shí),表示選中(圖2)LED矩陣的第一行,此時(shí)系統(tǒng)控制第一行兩個(gè)燈的亮滅。首先來看看這兩個(gè)燈各代表什么意思,第一個(gè)表示‘導(dǎo)風(fēng)’連接到PA0端口,第二個(gè)表示‘冷風(fēng)’連接到PA1端口。 從狀態(tài)字的定義來看,SWING=1,無導(dǎo)風(fēng),則燈滅,反之SWING=0,燈亮;由于MCU的PA0端口通過反相器連接到該燈的陽極,所以PA0=1,燈滅,PA0=0,燈亮,因此PA0的值直接等于狀態(tài)變量SWING。同理,PA1=COOL。 在其它5個(gè)不同的掃描端口賦值下,根據(jù)控制燈和狀態(tài)字的意義,可以得出如表2的結(jié)果,表中的(0)、(1)、(2)、(3)表示該狀態(tài)字的第0、1、2、3位的值。當(dāng)系統(tǒng)處于關(guān)閉狀態(tài)時(shí),所有指示燈是滅的,因此對(duì)于6個(gè)掃描端口值,控制端口PA1-PA0恒等于11,不驅(qū)動(dòng)LED。
表2 開機(jī)狀態(tài)下控制端口、輸入狀態(tài)字和掃描序號(hào)的關(guān)系 掃描序號(hào) PA7-PA2 PA1 PA0 5 011111 COOL(0) SWING(0) 4 101111 SPEED(0) NOT(SPEED(0) AND SPEED(1)) 3 110111 TIMER(0) SPEED(1) 2 111011 TIMER(1) NOT(MODE(0) AND MODE(1)) 1 111101 TIMER(2) MODE(0) 0 111110 TIMER(3) MODE(1) 事實(shí)上,5個(gè)控制輸出信號(hào)也是與當(dāng)前的狀態(tài)變量密切相關(guān)的,它們的賦值計(jì)算方法與PA1、PA0相同。 2.2 紅外碼流檢測(cè) 紅外碼流檢測(cè)采用查詢方式。在實(shí)時(shí)中斷服務(wù)程序中,每隔2ms檢查是否有紅外按建鍵輸入,進(jìn)行引導(dǎo)碼的查詢捕獲。一旦捕獲后,執(zhí)行碼流檢測(cè)子程序,該子程序包括讀取碼字和判斷碼字兩步。讀取碼字是一個(gè)對(duì)紅外信號(hào)進(jìn)行數(shù)據(jù)采樣的過程,判斷碼字是一個(gè)數(shù)據(jù)匹配的過程。 2.3 軟件設(shè)計(jì)中的幾個(gè)問題 (1)時(shí)間匹配 在主程序處理紅外碼流的檢測(cè)過程時(shí),仍然會(huì)產(chǎn)生實(shí)時(shí)中斷。如上所述,紅外碼流用采樣的辦法進(jìn)行數(shù)據(jù)的讀取,則采樣間隔的大小將直接影響到對(duì)紅外信號(hào)的正確接收。如果采樣間隔太大,得到的數(shù)據(jù)不夠精確,不足于分辨1/0比特;但是如果采樣間隔太小,小于中斷服務(wù)程序執(zhí)行一次的時(shí)間,則采集的數(shù)據(jù)會(huì)變小,導(dǎo)致錯(cuò)誤判斷。因此中斷服務(wù)程序應(yīng)該寫得盡量簡短。 (2)紅外碼流檢測(cè)方式 紅外碼流的檢測(cè)可以采用外中斷方式或查詢方式,在本設(shè)計(jì)中采用查詢方式。因此該單片機(jī)定義了外中斷的級(jí)別比實(shí)時(shí)中斷高,一旦產(chǎn)生外中斷,實(shí)時(shí)中斷請(qǐng)求將被忽略,不執(zhí)行掃描過程,因此會(huì)產(chǎn)生部分應(yīng)該點(diǎn)亮的指示燈沒有點(diǎn)亮的現(xiàn)象。 數(shù)據(jù)匹配是一個(gè)把采集后的數(shù)據(jù)與預(yù)設(shè)定的數(shù)值進(jìn)行比較的過程。預(yù)設(shè)定的數(shù)值可以從紅外波形理論計(jì)算得出,但是理論值與實(shí)際值總會(huì)存在一些差異,因此最好的解決辦法是預(yù)先寫一段數(shù)據(jù)采集程序并記錄下這些數(shù)據(jù)代替理論值,作為預(yù)設(shè)定的數(shù)值進(jìn)行比較。 SST65P54R工作電壓為2.2~3.2V,功耗小,適用于家電控制系統(tǒng)。另外,本文中的軟件開發(fā)模塊易于推廣成家電控制器的通用軟件模塊。
評(píng)論