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