作息鬧鈴控制器設(shè)計(jì)方案
在日常工作和學(xué)習(xí)中,經(jīng)常需要對(duì)作息時(shí)間進(jìn)行控制,以規(guī)范工作、學(xué)習(xí)、休息等作息秩序,本文采用51系列單片機(jī)機(jī)實(shí)現(xiàn)對(duì)校園作息時(shí)間的控制設(shè)計(jì),已完成對(duì)每天對(duì)作息最多40次打鈴控制,同時(shí)具有對(duì)控制器日常時(shí)間調(diào)整及顯示、打鈴時(shí)間設(shè)置、掉電數(shù)據(jù)不丟失等功能。
本文引用地址:http://cafeforensic.com/article/162138.htm系統(tǒng)硬件結(jié)構(gòu)組成
為實(shí)現(xiàn)上述功能,硬件方面主要采用AT89C52單片機(jī)實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)控制,采用DS1302時(shí)鐘芯片完成對(duì)控制器時(shí)間的計(jì)時(shí)控制,同時(shí)采用24C02串行存儲(chǔ)芯片保存打鈴時(shí)間控制參數(shù)以免掉電丟失,設(shè)計(jì)8個(gè)按鍵分別用于對(duì)時(shí)間調(diào)整和打鈴時(shí)間的設(shè)置和調(diào)整,并采用靜態(tài)顯示方法對(duì)6個(gè)數(shù)碼管控制已完成對(duì)時(shí)間及打鈴時(shí)間點(diǎn)等參數(shù)的設(shè)置和調(diào)整顯示,采用繼電器控制電路完成弱電對(duì)強(qiáng)電220V控制以完成對(duì)電鈴的通斷電控制從而控制鈴聲。具體電路圖如圖1所示。
圖1 作息打鈴控制器硬件原理圖
MCS-51模擬IIC總線
本設(shè)計(jì)為防止掉電后所設(shè)置電鈴時(shí)間點(diǎn)數(shù)據(jù)丟失,特用一片IIC協(xié)議串行通信的含有256字節(jié)的EEPROM芯片CAT24WC02作為存儲(chǔ)芯片。IIC協(xié)議允許系統(tǒng)設(shè)計(jì)者只用兩根線就可以將多達(dá)128個(gè)不同的設(shè)備連接在一起,極大的節(jié)省了單片機(jī)接口線,只需在這兩根線上分別加一個(gè)10kΩ的上拉電阻,即可解決阻抗匹配問(wèn)題。IIC器件通過(guò)各自的硬件連線方式來(lái)確定自己的地址,如本設(shè)計(jì)中CAT24WC02芯片地址為0000。對(duì)于沒(méi)有IIC總線接口的單片機(jī)來(lái)說(shuō),使用任何兩根線均可模擬IIC總線時(shí)序。在本設(shè)計(jì)中采用P3.3、P3.4分別來(lái)模擬SCL和SDA線,當(dāng)SCL處于高電平時(shí),SDA由高電平變成低電平時(shí)構(gòu)成一個(gè)開(kāi)始條件,對(duì)IIC總線的所有操作均須由開(kāi)始條件開(kāi)始;當(dāng)SCL處于高電平時(shí),SDA由低電平變成高電平時(shí)構(gòu)成一個(gè)停止條件,此時(shí)IIC總線的所有操作均停止;當(dāng)SCL為低電平且SDA線電平變化時(shí),則數(shù)據(jù)由CPU輸出到IIC總線;當(dāng)SCL為高電平且SDA線電平不變時(shí),則CPU讀取IIC總線上的數(shù)據(jù);當(dāng)SCL為高電平且SDA電平變化時(shí),IIC總線上位開(kāi)始條件或停止條件;數(shù)據(jù)傳輸以8為序列進(jìn)行,IIC器件在第9個(gè)時(shí)鐘周期時(shí)將SDA置位為低電平,即送出一個(gè)確認(rèn)(應(yīng)答)信號(hào)ACK,表明數(shù)據(jù)已經(jīng)被其收到。這里使用到以下4個(gè)公用函數(shù):
void I2cStart(); //產(chǎn)生開(kāi)始信號(hào)
void I2cStop(); //產(chǎn)生停止信號(hào)
void I2cSendByte(uchar ByteData) ;//發(fā)送一個(gè)字節(jié)數(shù)據(jù)
uchar I2cReceiveByte(); //接收一個(gè)字節(jié)數(shù)據(jù)
DS1302時(shí)鐘電路
DS1302是美國(guó)Dallas公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31字節(jié)用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302控制電路圖如圖1所示,VCC1為后備電源, VCC2為主電源,在主電源關(guān)閉的情況下,也能保持時(shí)鐘連續(xù)運(yùn)行。DS1302由VCC1或VCC2兩者中的電壓較大者供電,當(dāng)VCC2大于VCC1+0.2V時(shí),VCC2給DS1302供電,當(dāng)VCC2小于VCC1時(shí),DS1302由VCC1供電。X1、X2為振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:1、RST接通控制邏輯,允許地址/命令序列送入移位寄存器;2、RST提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的的傳送手段,當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送工程中置RST為低電平,則會(huì)終止此次數(shù)據(jù)傳送,并且I/O引腳為高阻態(tài)。上電運(yùn)行時(shí),在 VCC≥2.5V之前,RST必須保持低電平。
DS1302的控制字如圖2所示,字節(jié)的最高位(第7位)必須是邏輯1,如為0則不能報(bào)數(shù)據(jù)寫(xiě)入到DS1302,位6如為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);為5為至位1指示操作單元的地址,最低位(第0位)為0則表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)是從最低未開(kāi)始輸出。在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí)數(shù)據(jù)寫(xiě)入DS1302,數(shù)據(jù)輸入從低位開(kāi)始,同樣,在緊跟8位控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)是從低位至高位。
DS1302共有12個(gè)寄存器,其中7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器如圖3所示。 DS1302還有年份寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器與RAM等相關(guān)寄存器。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類(lèi),一類(lèi)是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類(lèi)為突發(fā)方式下的RAM寄存器,此方式下可以一次性讀寫(xiě)所有RAM的31個(gè)字節(jié),命令控制字地址寫(xiě)操作時(shí)為FEH,讀操作時(shí)為FFH。
圖2 DS1320命令控制字
圖3 DS1320時(shí)鐘、日歷寄存器及控制字
評(píng)論