基于P87LPC761單片機控制的時(shí)間控制器系統簡(jiǎn)介
1.系統簡(jiǎn)介
該時(shí)間控制器是以P87LPC761單片機為核心,擴展一片74HCl64組成的小系統,控制一路繼電器,可以設定一天中的時(shí)間,設定繼電器的開(kāi)啟時(shí)間和關(guān)閉時(shí)間,一共可以設定6組定時(shí),可以消除不需要的定時(shí),能夠緊急啟動(dòng);所有的設定均通過(guò)鍵盤(pán)實(shí)現,按鍵具有連擊功能,每個(gè)狀態(tài)都有指示燈。該時(shí)間控制器采用外部100kHz晶振,同時(shí)采用交流電供電,配以充電電池,在交流電去掉以后,進(jìn)入休閑模式,時(shí)鐘繼續運行。
2 硬件電路設計與分析
本系統設計的難點(diǎn)不在硬而在低頻晶振下的軟件設計。
整個(gè)硬件電路可分為3部分:電源、鍵盤(pán)顯示和CPU部分,分別分析如下。
2.1 電源部分
把交流電轉換成單片機所需的直流電。這是一個(gè)很常見(jiàn)的電源電路。為了確保去掉交流電之后,時(shí)鐘能繼續運行,配以充電電池,在電源部分加上了充電電路。在有交流電的時(shí)候,直接利用外部電源,同時(shí)給充電電池充電,去掉交流電以后,利用充電電池做電源,進(jìn)入休閑模式。
2.2 鍵盤(pán)和顯示電路
為了節省元件,采用動(dòng)態(tài)掃描的方式來(lái)顯示時(shí)鐘,在這部分擴展了一片74HCl64。單片機通過(guò)串行口向74HCl64發(fā)送數據,在七段數碼管上顯示,每個(gè)數碼管公共端都加上了三極管,是作掃描信號的電流放大以驅動(dòng)各數碼管。
2.3 CPU部分
CPU部分是時(shí)間繼電器的核心。這主要由P87LPC761來(lái)控制。作為Philips小型封裝系列中的一員,P87LPC761是20腳封裝的單片機,適合于許多要求高集成度、低成本的場(chǎng)合,可以滿(mǎn)足許多方面的性能要求。P87LPC761提供高速和低速的晶振以及RC振蕩方式,可編程選擇,具有較寬的操作電壓范圍,可編程I/O口線(xiàn)輸出模式選擇,可選擇施密特觸發(fā)輸入,LED驅動(dòng)輸出,有內部看門(mén)狗定時(shí)器。P87LPC761采用80C51加速處理器,結構指令執行速度是標隘80C51 MCU的2倍。
3 軟件設計
P87LPC761單片機每個(gè)機器周期為6個(gè)時(shí)鐘周期,采用100kHz晶振,每個(gè)機器周期為60/Is。根據實(shí)驗,為了保證LED看起來(lái)不閃爍,點(diǎn)亮數碼管的時(shí)間間隔不能大于24ms,一共有4個(gè)數碼管,則每?jì)蓚€(gè)數碼管點(diǎn)亮的時(shí)間間隔不能大于6ms。程序設計應注意這一點(diǎn),在每?jì)纱沃袛嘀g一共有100個(gè)機器周期,很有限,據此在編程時(shí)應遵循以下原則:
(1)程序盡量簡(jiǎn)潔主程序盡量短。
(2)中斷程序盡量短,把盡可能多的時(shí)間給其他程序。
(3)分支程序盡量多盡量短不做無(wú)用功。
4.1 計時(shí)補償
定時(shí)器。工作在方式1,而方式1的計數受到軟件的影響。為了減少計時(shí)誤差,在給定時(shí)器1恢復初值(3CBOH)的時(shí)候,要把軟件所占用的時(shí)間補回來(lái)。在中斷中重新賦初值采取如下方式:
通過(guò)軟件補償后,在晶振準確的情況下,能夠給計時(shí)帶來(lái)誤差的就僅僅只有中斷的響應時(shí)間了。
4.2 低功耗處理
低功耗是這個(gè)設計所必須處理好的問(wèn)題。通過(guò)交流電檢測電路檢測交流電的存在與否。在程序中是這樣處理的:查詢(xún)P1.3口的電平,當P1.3口是高電平時(shí),就進(jìn)入正常狀態(tài)即顯示、鍵盤(pán)、所有中斷、串行口都正常工作,一旦P1.3口為低電平,則關(guān)掉顯示、鍵盤(pán)、串行口以及T1中斷,即只開(kāi)放刷新時(shí)鐘的TO中斷(這是為了保證在休閑模式下,時(shí)鐘仍能運行,數據不丟失)進(jìn)人體閑模式。為了降低系統功耗,還需要關(guān)閉掉電檢測、比較器等,這部分工作在初始化部分完成。
4.3 狀態(tài)指示燈
為了充分利用系統硬件資源.利用七段數碼管的小數點(diǎn)來(lái)做狀態(tài)指示燈。因為在時(shí)鐘顯示里面沒(méi)有小數。我們在程序中是這樣控制小數點(diǎn)的,在七段代碼表里面把有小數點(diǎn)的代碼放在無(wú)小數點(diǎn)代碼的后面,相同的數字有無(wú)小數點(diǎn)的代碼位置相距10,在需要小數點(diǎn)的時(shí)候,把取代碼的指針加上10就可以了。安排了2個(gè)指示燈,D10(綠)是開(kāi)啟時(shí)間指示燈,D11(黃)是關(guān)閉時(shí)間指示燈。若綠黃兩燈都亮,則表示當前這組定時(shí)已經(jīng)被禁止了。
參考文獻:
[1].P87LPC761datasheethttp://www.dzsc.com/datasheet/P87LPC761.html.
[2].80C51datasheethttp://www.dzsc.com/datasheet/80C51_103447.html.
評論