三系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件采用PIC16C5X精簡指令編寫。由于PIC16C57沒有中斷功能,因此本系統(tǒng)中鍵盤掃描、漏電檢測等子程序都通過查詢實(shí)現(xiàn),并采用4MHz的時(shí)鐘頻率,對指令的運(yùn)行時(shí)間進(jìn)行了精確計(jì)算和設(shè)計(jì),保證軟件的可靠性和穩(wěn)定性。系統(tǒng)主程序框圖如圖4 所示,本文討論鍵盤顯示與水溫測量兩個(gè)模塊。 鍵盤和顯示 本系統(tǒng)中,有四個(gè)功能按鍵:定時(shí)加水、恒溫控制、手動加水和手動加熱;三個(gè)七段碼顯示與四個(gè)LED 燈指示。
a) 按下定時(shí)加水按鈕時(shí),定時(shí)LED變亮,并以當(dāng)前時(shí)間為定時(shí)時(shí)標(biāo),每24小時(shí)自動加水至設(shè)定水量;若長按此鈕超過5 秒,定時(shí)LED 滅,并聽到“嘟”一聲進(jìn)行水量設(shè)定,此后每按一下鈕,水量顯示加一檔,1~4 檔循環(huán)顯示,不按此鈕超過5 秒,再次聽到“嘟”一聲,水量設(shè)定完畢。系統(tǒng)的定時(shí)功能主要通過軟件完成。PIC16C5X內(nèi)帶一個(gè)8 位定時(shí)器/計(jì)數(shù)器RTCC,在進(jìn)行24 小時(shí)定時(shí)加水時(shí)采用了該定時(shí)器,RTCC及其相關(guān)電路如圖5 所示。
由圖5 可知,RTCC 工作狀態(tài)由OPTION 寄存器控制,其中OPTION寄存器的RTS位用來選擇RTCC的計(jì)數(shù)信號源,當(dāng)RTS為“1”時(shí),信號源為來自RTCC 引腳的外部信號,RTS 為“0”時(shí),信號源為內(nèi)部時(shí)鐘。OPTION寄存器的PSA 位控制預(yù)分頻器分配對象,當(dāng)PSA為“1”,分配給RTCC,即外部或內(nèi)部信號經(jīng)過預(yù)分頻器分頻后再輸出給RTCC。預(yù)分頻器的分頻比率由OPTION內(nèi)的PS0~PS2決定。OPTION 的RTE 位用于選擇外部計(jì)數(shù)脈沖的觸發(fā)沿,當(dāng)RTE為"1"時(shí)下降沿觸發(fā),“0“時(shí)為上升沿觸發(fā)。RTCC計(jì)數(shù)器采用遞增方式計(jì)數(shù),當(dāng)計(jì)數(shù)至FFH 時(shí),在下一個(gè)計(jì)數(shù)發(fā)生后,將自動復(fù)零,重新開始計(jì)數(shù),以此循環(huán)下去。在實(shí)際設(shè)計(jì)中,OPTION寄存器為“00100111“,即定時(shí)器的信號源來自RTCC 引腳的外部信號,預(yù)分頻器的分頻比率為1:256,上升沿觸發(fā)。RTCC引腳信號的輸入頻率為1kHz,因此RTCC 計(jì)數(shù)至FFH 時(shí)需65536ms。通用寄存器F0EH、F0FH用作定時(shí)暫存。當(dāng)設(shè)置定時(shí)加水功能時(shí),初始化RTCC、OPTION、F0EH、F0FH,開始進(jìn)行定時(shí),每隔256ms查詢一次RTCC 的值,RTCC每循環(huán)一次,F(xiàn)0EH-F0FH增1,當(dāng)增到1318時(shí),24小時(shí)定時(shí)到,寄存器復(fù)位,自動加水。
b) 按下恒溫控制鈕,恒溫LED變亮,表示進(jìn)行恒溫控制,再按一下LED滅,取消恒溫控制。與水量設(shè)定類似,長按后,進(jìn)行溫度設(shè)定。
c) 按下手動加熱鈕時(shí),加熱LED變亮,加熱至65℃,如水量少于1檔,則先加水到1檔,再按一次取消加熱。
d) 按下手動加水鈕時(shí),加水至設(shè)定水量值,長按可設(shè)定水量。手動加水過程中,再次按下取消加水。 正常情況下,兩個(gè)七段碼顯示當(dāng)前水溫,另一個(gè)顯示當(dāng)前水位。水溫測量 溫度讀取是通過與DS1820通信完成。DS1820通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念。因此系統(tǒng)對DS1820的各種操作必須按協(xié)議進(jìn)行。
操作協(xié)議為:初始化DS1820(發(fā)復(fù)位脈沖 →發(fā)ROM功能命令 →發(fā)存儲器操作命令 →處理數(shù)據(jù))。各操作時(shí)序圖如圖6 和圖7 所示。 本程序中需用到的操作命令如下: SKIPROM 命令(CCH):此命令執(zhí)行后,表示以后的存儲器操作命令將針對在線的所有DS1820,由于本系統(tǒng)中只有一片DS1820,因此發(fā)出此命令后,就可對其進(jìn)行操作。 CONVERT 命令代碼[44H]:啟動在線DS1280 進(jìn)行溫度A/D 轉(zhuǎn)換。 READSCRATCHPAD 命令代碼[BEH]:讀取溫度寄存器的溫度值。 對DS1820操作的總體流程圖如圖8所示。其他功能程序 漏電檢測、數(shù)據(jù)處理、定時(shí)計(jì)數(shù)等其他功能程序都根據(jù)程序運(yùn)行時(shí)間進(jìn)行了統(tǒng)籌設(shè)計(jì),在此不再進(jìn)行詳述。
四 結(jié)語
電熱水器單片機(jī)控制器具有新穎、價(jià)廉、安全、實(shí)用等優(yōu)點(diǎn),并且在國產(chǎn)電熱水器上獲得了成功應(yīng)用。本文的一些方法也適用于冰箱、空調(diào)等家用電器的電腦控制設(shè)計(jì)中。
參考文獻(xiàn):
1 李東星,陳小牧. PIC16C5X系列單片機(jī)應(yīng)用設(shè)計(jì).北京:電子工業(yè)出版社.1996.1
2 Dallas Corp., DS18B20 Programmable Resolution One—Wire Digital Thermometer
3 《單線數(shù)字溫度傳感器資料》,武漢力源電子有限公司.1996.1
4 徐惠民等.單片微型計(jì)算機(jī)原理接口應(yīng)用.北京郵電學(xué)院出版社.1989





