【摘要】本文以時鐘芯片PCF8583和單片機AT89S51為核心對課堂響鈴自動控制系統進行了探討與研究,并提出了該系統的實現方案,通過測試表明,該系統精度高,穩定性好。
【關鍵詞】單片機;AT89S51;PCF8583;自動控制;響鈴
0.引言
由于學校作息管理的麻煩和手動打鈴的不方便性,課堂響鈴自動控制系統在生活及學習中的應用越來越廣泛。它按照高校作息時間進行定時自動響鈴,實行電鈴周期性工作的自動化控制,解除了作息管理麻煩的落后現象。本文采用單片機來實現對自動響鈴系統的控制,充分利用了單片機的特點,使系統功耗低、可靠性好。
1.系統總體設計
1.1設計要求
課堂響鈴自動控制系統的主要功能是嚴格按照高校作息時間進行定時自動響鈴。本設計使用AT89S51單片機來控制整個系統,由PCF8583時鐘芯片與單片機共同實現課堂響鈴自動控制系統,實現所要達到的設計要求。其基本要求為:①能設定響鈴時間;②通過鍵盤設置日期、時間;③可以顯示時間;④按照高校作息時間進行上下課響鈴;⑤做到周末、假日等特殊時間不響鈴。
1.2芯片的選擇
1.2.1時鐘芯片的選擇
串行日歷芯片對比并行日歷芯片電路連接簡單且緊湊,體積小,占用系統資源少,在不需要較高速度的情況下,串行日歷芯片具有明顯的性價比優勢,但其讀寫方法較為復雜。常見的時鐘芯片有DS12C887、DS1302、PCF8583等。本文采用PCF8583時鐘芯片。
1.2.2單片機的選擇
AT89S51是一個低功耗,高性能的CMOS 8位單片機,片內含4k Bytes ISP的可反復擦寫1000次的Flash只讀程序存儲器。相對于AT89C51而言,該芯片在性能上有了較大的提升,且兼容性好。
2.硬件設計
系統硬件總體框架如圖1 所示。其基本電路包括時鐘電路、控制電路、電鈴電路以及電源電路等幾部分,在此基礎上可添加顯示、鍵盤控制等電路擴展系統功能,實現時間的顯示、修改以及臨時響鈴控制等。系統工作原理:時鐘芯片PCF8583向單片機提供時鐘數據。單片機在其內部設計程序設置好響鈴的時間,當單片機檢測到響鈴時間,則在P1.0口輸出低電平,驅動電鈴產生動作,最終實現響鈴自動控制。 若需要修改PCF8583的時鐘初始值,則通過鍵盤進行操作。
圖1 課堂響鈴自動控制系統的系統框架圖
時鐘電路的設計:
圖2 系統時鐘電路
系統時鐘電路的設計如圖2所示。
圖中,BT1,D1,D2構成了PCF8583時鐘芯片的掉電保護電路;C1是微調電容,大約幾十pF,可以在小范圍內調節時間的準確性;C2是濾波電容。A0腳接高電平,因此,寫地址是A2,讀地址是A3。時鐘芯片PCF8583只有三根線連接到單片機:時鐘線(即SCL,連接到單片機的P3.4引腳)、數據線(即SDA,連接到單片機的P3.5引腳)、中斷線(即INT,連接到單片機的中斷引腳INT0)。
3.軟件設計
課堂響鈴自動控制系統要實現響鈴必須對控制電路的單片機芯片AT89S51進行編程。該系統的軟件設計包括對主程序和接口程序的編程。
3.1主程序設計
主程序是系統軟件最重要的程序,確定系統工作的總體流向。系統初始化完畢后主程序開始對鍵盤進行掃描。如果掃描到鍵盤有動作,則開始讀取鍵值,通過讀取鍵值對PCF8583芯片進行寫時鐘數據。寫完數據后,讀取PCF8583芯片的時鐘數據。如果鍵盤沒有動作則直接讀取時鐘數據。讀取數據后送顯示,在顯示電路上顯示時間。然后根據所讀取的時鐘數據判斷是否是特殊不響鈴時間(如周末、假日等)。如果是特殊不響鈴時間,則返回繼續進行掃描。反之,則響鈴開始,經過響鈴延時后結束,再返回繼續掃描進入到下一輪循環。主程序流程圖見圖3。系統的響鈴時間嚴格按照高校課程時間表進行。
圖3 主程序流程圖
3.2接口程序設計
課堂響鈴自動控制系統的接口程序主要用來控制對PCF8583時鐘芯片的讀寫。在MCS-51系列單片機的基礎型號中(如80C31、AT89C51等型號),沒有專門的I2C總線接口,在這種情況下可以使用并行I/O口(如P3口)中的兩條I/O引腳來模擬I2C接口的SDA和SCL信號線,并通過相應的程序來控制這兩條引腳上的信號波形來實現I2C總線上的起始、終止和數據傳輸時序,從而完成PCF8583的命令初始化和I2C總線上的數據傳輸。
由于I2C總線上的受控設備必須被分配地址,設備地址在傳送開始后首先被傳送,PCF8583可作為受控的接收器或發送器,因此SCL端為時鐘輸入端,但數據線SDA是雙向的,PCF8583的芯片尋址字節為:101000A0 R/W,按照單片機與時鐘芯片PCF8583的連接電路,PCF8583器件的寫操作時的芯片地址為:0A0H,而讀操作時的芯片地址為:0A1H。
3.2.1讀數據
讀數據流程圖見圖4
系統進行讀數據時,首先發送起始信號。芯片收到起始信號后I2C總線開始通信,數據傳輸開始。數據傳輸階段,首先發送PCF8583芯片地址和寫命令,然后發送數據單元地址。發送完之后,重新發送起始信號,開始讀取數據。讀數據時發送PCF8583芯片地址和讀命令,再對數據進行讀取。等數據讀取完畢,發送結束信號,讀數據結束。
3.2.2寫數據
寫數據程序流程圖見圖5。
PCF8583芯片內時鐘數據初始值的設置要對PCF8583進行寫數據。寫數據程序開始后與讀數據程序一樣首先要發送起始信號,通信開始。發送PCF8583芯片地址和寫命令。收到寫命令后發送數據單元地址開始進行寫數據。寫完數據后,發送結束信號,寫數據結束。
4.結論
通過測試,本系統能按照設計的要求準確實現響鈴的控制。做到按點響鈴,周末不響鈴,且運行正常,穩定度較好,精度也完全適應于本設計的應用場所。 [科]
【參考文獻】
[1]朱建,郭華北,朱磊,耿杰,王春鳳.串行時鐘、日歷芯片PCF8583及其應用研究[J].山東科技大學學報(自然科學版),2003,19(1).
[2]胡漢才.單片機原理及系統設計[M].北京:清華大學出版社.
[3]沈紅衛編著.基于單片機的智能系統設計與實現[M].北京:電子工業出版社,2005:1-2.