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