江海職業(yè)技術(shù)學(xué)院機(jī)電汽車學(xué)院 張麗紅 張國(guó)祥
本文圍繞51單片機(jī)設(shè)計(jì)了電子鐘控制系統(tǒng),利用8位數(shù)碼管顯示“時(shí)”“分”“秒”,利用DS1302時(shí)鐘芯片、DS18B20溫度傳感器等芯片,實(shí)現(xiàn)了具有聲光報(bào)時(shí)、按鍵調(diào)時(shí)、鬧鐘響鈴、實(shí)時(shí)測(cè)溫的功能。本文電子鐘控制系統(tǒng)設(shè)計(jì)硬件結(jié)構(gòu)簡(jiǎn)單,軟件編程思路清晰明了,通過(guò)硬件的調(diào)試仿真,達(dá)到了設(shè)計(jì)要求。此電子鐘人機(jī)界面簡(jiǎn)單、功能全,時(shí)間精準(zhǔn)、穩(wěn)定性高、性價(jià)比高,易于市場(chǎng)推廣。
電子鐘已是生活中很常見的必需品(https://baike.baidu.com/ite m/%E7%94%B5%E5%AD%90%E9%92%9F/5999091?fr=aladdin),與傳統(tǒng)時(shí)鐘相比,具有準(zhǔn)確性、直觀性、壽命長(zhǎng)等特點(diǎn)?,F(xiàn)市場(chǎng)上大部分電子鐘產(chǎn)品都是由計(jì)數(shù)器、譯碼器等數(shù)字電路搭建而成的硬件產(chǎn)品。本文設(shè)計(jì)了利用廉價(jià)的51單片機(jī)作為控制器,簡(jiǎn)化硬件結(jié)構(gòu),利用C51編程實(shí)現(xiàn)了軟硬件電子鐘產(chǎn)品。
圖1 硬件框圖
此電子鐘的硬件電路,是基于每年舉行的全國(guó)藍(lán)橋杯大賽單片機(jī)設(shè)計(jì)與開發(fā)項(xiàng)目指定的單片機(jī)開發(fā)板搭建的電路,即CT107D單片機(jī)綜合實(shí)訓(xùn)平臺(tái)。此平臺(tái)上的單片機(jī)是IAP15F2K61S2單片機(jī),此單片機(jī)是與51系列的AT89C51單片機(jī)兼容的。其電子鐘控制系統(tǒng)硬件框圖如圖1所示,以IAP15F2K61S2單片機(jī)為核心控制器,外圍電路包括由共陽(yáng)極8位數(shù)碼管組成的數(shù)碼管顯示模塊;由LED指示燈和揚(yáng)聲器組成的聲光報(bào)時(shí)模塊;由4個(gè)獨(dú)立按鍵組成的按鍵控制模塊;由時(shí)鐘芯片DS1302和32.768KHz晶振組成的時(shí)鐘模塊;由溫度傳感器DS18B20組成的溫度測(cè)量模塊。
電子鐘控制系統(tǒng)的電路原理圖如圖2所示,8位數(shù)碼管的段碼和位碼都接到P0口上,段碼的選通地址是P2=0xE0,位碼的選通地址是P2=0xC0;指示燈LED也由P0口提供信號(hào),其地址是P2=0x80;揚(yáng)聲器通過(guò)三極管接到P1.0口;4個(gè)獨(dú)立按鍵分別連接在P3.0、P3.1、P3.2、P3.3上;時(shí)鐘芯片DS1302的CE引腳接P1.3口,I/O引腳接P2.3口,SCLK引腳接P1.7口;溫度采集芯片DS18B20的數(shù)據(jù)DQ引腳接P1.4口。本次設(shè)計(jì)的電子鐘具有時(shí)鐘設(shè)置、鬧鐘設(shè)置、溫度顯示等功能。
圖2 電路原理圖
基于51單片機(jī)的電子鐘系統(tǒng)軟件程序編制采用的是C語(yǔ)言,遵循模塊化的編程思想(史永哲.計(jì)算機(jī)編程思想分析[J].陜西師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,36(S1):179-181),以方便系統(tǒng)的調(diào)試、維護(hù)和升級(jí),能夠保障程序的穩(wěn)定性,提高程序的設(shè)計(jì)效率。編程思路如圖3所示,其中把具有獨(dú)立功能的程序段編制成一個(gè)函數(shù),如顯示、按鍵讀取、按鍵處理等功能模塊,分別編制了顯示函數(shù)、按鍵讀取函數(shù)、按鍵處理函數(shù),逐步編寫調(diào)試,易于閱讀修改。此程序用了T0和T1兩個(gè)定時(shí)/計(jì)數(shù)器,數(shù)碼管動(dòng)態(tài)顯示、獨(dú)立按鍵的鍵值讀入、溫度的采集都用定時(shí)器T0進(jìn)行定時(shí)溢出中斷掃描,數(shù)碼管1毫秒動(dòng)態(tài)掃描一次,按鍵10毫秒鍵盤掃描一次,溫度100毫秒讀一次,采用中斷方式以節(jié)省CPU的時(shí)間,時(shí)鐘設(shè)置與鬧鐘設(shè)置時(shí)的0.2秒的閃爍用定時(shí)器T1實(shí)現(xiàn),其它時(shí)間的定時(shí)用軟件實(shí)現(xiàn),讀時(shí)鐘DS1302、讀溫度傳感器DS18B20分別用單獨(dú)的C文件實(shí)現(xiàn)。
根據(jù)電子鐘的控制系統(tǒng)要求,先搭建程序框架,包括初始化、定時(shí)計(jì)數(shù)器的初值設(shè)定,主函數(shù)、顯示函數(shù)等。根據(jù)電路圖,采用存儲(chǔ)器編程方式,數(shù)碼管的段碼地址是0xC000,位碼地址是0xE000,共陽(yáng)極數(shù)碼管的段碼先存放于數(shù)組中,把要顯示的數(shù)據(jù)也放于全局緩存數(shù)組里,這樣顯示函數(shù)與其它函數(shù)的通信就可通過(guò)緩存數(shù)組實(shí)現(xiàn),顯示函數(shù)就可成為一個(gè)獨(dú)立模塊。如圖4所示為數(shù)碼管顯示程序的調(diào)試結(jié)果,8位數(shù)碼管動(dòng)態(tài)顯示12-00-02。
圖3 主函數(shù)流程圖
圖4 數(shù)碼管顯示調(diào)試結(jié)果
DS1302是美國(guó)的Dallas公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片(黃明強(qiáng).DS1302在單片機(jī)系統(tǒng)中的應(yīng)用[J].保定師范??茖W(xué)校學(xué)報(bào),2004(02):30-33)。DS1302的應(yīng)用比較多,廣泛地應(yīng)用于各種數(shù)字時(shí)鐘中(楊陽(yáng),李華.基于DS1302芯片的數(shù)字時(shí)鐘設(shè)計(jì)[J].無(wú)線互聯(lián)科技,2017(03):77-78)。本程序根據(jù)電子鐘控制系統(tǒng)的要求及硬件電路,編制了讀取時(shí)鐘信號(hào)的程序,以文件的形式加入控制系統(tǒng)中,DS的驅(qū)動(dòng)代碼可直接在網(wǎng)上查到,只要用它的讀寫函數(shù)。初始化的寫函數(shù)如下:
讀函數(shù)是:Read_Ds1302(0x85);Read_Ds1302(0x83);Read_Ds1302(0x82);
讀DS1302時(shí)鐘信號(hào)程序調(diào)試結(jié)果如5所示,按“時(shí)”“分”“秒”顯示。
圖5 時(shí)鐘信號(hào)讀取結(jié)果
根據(jù)DS18B20的溫度寄存器格式(齊婉玉.用DS18B20進(jìn)行溫度檢測(cè)的方法與技巧[A].中國(guó)儀器儀表學(xué)會(huì).首屆信息獲取與處理學(xué)術(shù)會(huì)議論文集[C].中國(guó)儀器儀表學(xué)會(huì),2003:2),分兩個(gè)字節(jié),高8位和低8位。讀取數(shù)據(jù)時(shí)需放到兩個(gè)8位的變量中。實(shí)際使用時(shí),需給DS18B20發(fā)出指令代碼(吳嘉穎.基于單片機(jī)的地鐵低壓設(shè)備觸點(diǎn)溫度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西南交通大學(xué),2017),用以確定它的工作狀態(tài),其中分ROM指令和RAM指令,如果跳過(guò)ROM,則約定代碼為0xCC;RAM指令中,溫度變換約定代碼是0x44,可啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,結(jié)果存入內(nèi)部RAM中,讀RAM約定代碼是0xBE,可讀出RAM中的數(shù)據(jù)內(nèi)容。所以讀取溫度數(shù)據(jù)的代碼如下所示。
然后在主函數(shù)里調(diào)用rd_temperature()函數(shù),送顯示即可,如:wendu=rd_temperature();
讀DS18B20溫度值程序調(diào)試結(jié)果如圖6所示,采集溫度值是室溫實(shí)時(shí)溫度為15攝氏度。
圖6 讀DS18B20溫度值調(diào)試結(jié)果
根據(jù)電子鐘的控制系統(tǒng)要求,先搭建了程序框架,包括初始化、定時(shí)計(jì)數(shù)器的初值設(shè)定,主函數(shù)等,然后逐步實(shí)現(xiàn)顯示功能、按鍵讀取功能、按鍵處理功能、時(shí)鐘讀取功能、溫度采集功能的調(diào)試,最終達(dá)到電子鐘的控制系統(tǒng)要求,調(diào)試結(jié)果如圖7所示,左圖是電子鐘的初始狀態(tài),顯示0時(shí)、0分、0秒的同時(shí),進(jìn)行整點(diǎn)的聲光報(bào)時(shí),右圖是通過(guò)按鍵進(jìn)行調(diào)時(shí)。
圖7 基于51單片機(jī)的電子鐘調(diào)試結(jié)果
本文設(shè)計(jì)的基于51單片機(jī)的電子鐘控制系統(tǒng)通過(guò)2個(gè)月的試運(yùn)行,時(shí)間誤差不到20秒,達(dá)到設(shè)計(jì)要求,此控制系統(tǒng)硬件設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單、成本低,軟件程序設(shè)計(jì)清晰明了,此電子鐘人機(jī)界面簡(jiǎn)單,方便鬧鐘時(shí)間的調(diào)整,功能全,系統(tǒng)準(zhǔn)確、穩(wěn)定性高,易于市場(chǎng)推廣。