王 紅
?
基于51單片機(jī)的多功能電子時(shí)鐘時(shí)間校對功能的設(shè)計(jì)
王紅
摘要:單片機(jī)開發(fā)板主要由STC89C52RC單片機(jī)、DS1302時(shí)鐘芯片、LCD1602字符液晶顯示器等部件構(gòu)成。本文主要研究了單片機(jī)對DS1302的讀寫操作以及對1602液晶的控制。最終,可實(shí)現(xiàn)4×4矩陣按鍵和紅外兩種方式實(shí)現(xiàn)時(shí)間和日期的調(diào)整。
關(guān)鍵詞:51單片機(jī);keil;多功能電子鐘;時(shí)間校對;紅外遙控
單片機(jī)技術(shù)是現(xiàn)代工業(yè)自動(dòng)化、電子電氣、通信及物聯(lián)網(wǎng)等領(lǐng)域的一門主流技術(shù)。單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上,相當(dāng)于一個(gè)微型計(jì)算機(jī),與計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。它的體積小、質(zhì)量輕、價(jià)格便宜,為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件,在工業(yè)控制領(lǐng)域有廣泛應(yīng)用。本實(shí)驗(yàn)的目的是單片機(jī)如何實(shí)現(xiàn)對DS1302的讀寫操作,使LCD1602液晶顯示年月日、星期和時(shí)分秒的功能,以及如何通過4×4矩陣按鍵和紅外遙控實(shí)現(xiàn)時(shí)間和日期的調(diào)整。
一、設(shè)計(jì)基礎(chǔ)
單片機(jī)的主要內(nèi)部資源有Flash—程序存儲空間、RAM—數(shù)據(jù)存儲空間、SFR—特殊功能寄存器。Flash用于存儲程序,可重復(fù)擦寫且容量大,對于單片機(jī)來說,F(xiàn)lash的最大意義是斷電后數(shù)據(jù)不會丟失,功能類似于計(jì)算機(jī)的硬盤。RAM用于存儲程序運(yùn)行期間產(chǎn)生的和需要用到的一些數(shù)據(jù),功能類似于計(jì)算機(jī)的內(nèi)存。SFR單片機(jī)有很多功能,每個(gè)功能都對應(yīng)著一個(gè)或者多個(gè)SFR,用戶通過對SFR的讀寫來實(shí)現(xiàn)單片機(jī)的各種功能。
二、按鍵校對時(shí)間功能的設(shè)計(jì)
(一)獨(dú)立按鍵
常用的按鍵電路有兩種形式:獨(dú)立式按鍵和矩陣式按鍵[1]。獨(dú)立式按鍵就是它們各自與獨(dú)立的輸入線相連接。輸入線接到單片機(jī)的IO口上,以K1為例。K1未按下時(shí),KeyIn1由上拉電阻與+5V相連,此時(shí)KeyIn1為高電平。K1按下時(shí),KeyIn1由K1接地,其由原來的高電平變?yōu)榈碗娖?。CPU可通過檢測KeyIn1的電平來判斷K1鍵的狀態(tài)。
目前絕大多數(shù)單片機(jī)的IO口都是使用MOS管而非三極管。當(dāng)內(nèi)部輸出是高電平時(shí),經(jīng)過一個(gè)反向器變?yōu)榈碗娖?,NPN三極管不會導(dǎo)通,單片機(jī)IO口從內(nèi)部來看,由于上拉電阻R的存在,所以是一個(gè)高電平。當(dāng)外部沒有按鍵按下將電平拉低的話,VCC也是+5v,它們之間有兩個(gè)電阻但是沒有壓差,就不會有電流,線上所有位置都是高電平,此時(shí)就可以正常讀取按鍵狀態(tài)。當(dāng)內(nèi)部輸出是低電平時(shí),經(jīng)過一個(gè)反相器變?yōu)楦唠娖?NPN三極管導(dǎo)通,單片機(jī)內(nèi)部IO口就是低電平,此時(shí)外部雖然也有上拉電阻的存在,但是兩個(gè)電阻是并聯(lián)關(guān)系,不論按鍵是否按下,單片機(jī)IO口上輸入單片機(jī)內(nèi)部的狀態(tài)都是低電平,因此無法正常讀取按鍵狀態(tài)。以此為結(jié)論,具有上拉的準(zhǔn)雙向IO口,如果正常讀取外部信號的狀態(tài)就必須保證自己內(nèi)部輸出的是1,如果是0,則無論外部信號是1還是0,這個(gè)引腳讀進(jìn)來的都是0。
(二)矩陣按鍵
做一個(gè)系統(tǒng)設(shè)計(jì),假如需要多個(gè)按鍵就會占用大量IO口,就要用到矩陣按鍵。在獨(dú)立按鍵中需要掌握如何編寫一個(gè)獨(dú)立按鍵的程序。
(三)按鍵消抖
通常按鍵所用的開關(guān)都是機(jī)械彈性開關(guān),當(dāng)機(jī)械觸電斷開閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會馬上就穩(wěn)定接通,此時(shí)就會引起一連串的抖動(dòng)。抖動(dòng)時(shí)間是由按鍵的機(jī)械特性決定的,一般會在10ms以內(nèi)。為了確保程序?qū)Π存I的一次閉合或者一次斷開只響應(yīng)一次,必須進(jìn)行按鍵的消抖處理。
按鍵消抖可分為硬件消抖和軟件消抖。硬件消抖是在按鍵上并聯(lián)一個(gè)電容。利用電容的充放電特性對抖動(dòng)過程中產(chǎn)生的電壓毛刺進(jìn)行平滑處理,但這種方式在實(shí)際應(yīng)用中增加了成本和電路復(fù)雜度,所以當(dāng)檢測到按鍵狀態(tài)變化后,先等待10ms左右的延時(shí)時(shí)間,讓抖動(dòng)消失后再進(jìn)行一次按鍵狀態(tài)檢測,如果與剛才測試到的狀態(tài)相同,就可以確認(rèn)按鍵已經(jīng)穩(wěn)定動(dòng)作了,利用消抖程序消抖。所以本文采用了軟件消抖的方法。當(dāng)CPU檢測到按鍵狀態(tài)發(fā)生變化后,延時(shí)10ms后再對改按鍵狀態(tài)進(jìn)行檢測,假如仍為按下狀態(tài),就調(diào)用相應(yīng)的按鍵處理程序。
(四)按鍵時(shí)間的校對
校對用兩種方法實(shí)現(xiàn),應(yīng)用程序和安裝如時(shí)間同步、時(shí)間校準(zhǔn)器等時(shí)間校對軟件[2]。
三、紅外遙控校對時(shí)間
(一)紅外遙控技術(shù)
紅外遙控技術(shù)是將紅外線作為載體的遙控方式[3],利用紅外線來進(jìn)行點(diǎn)對點(diǎn)的通信。紅外遙控技術(shù)利用波長為0.76um-1.5um之間的近紅外線來傳遞控制信號,它具備以下特點(diǎn):①對環(huán)境的影響很小。②有很強(qiáng)的保密性和隱蔽性。③有很好的中遠(yuǎn)距離操控能力,便于各個(gè)方面的使用。④紅外線遙控設(shè)備結(jié)構(gòu)簡單、易于制作、造價(jià)低廉、抗干擾能力強(qiáng)、可靠性高。⑤工作電壓低,功耗小,外圍電路簡單等優(yōu)點(diǎn),也使其廣泛應(yīng)用于日常生活中。
(二)紅外裝置的簡單發(fā)射接收原理
紅外裝置發(fā)的發(fā)射接收原理[4]為發(fā)射電路通過紅外發(fā)光二級管發(fā)射出經(jīng)過調(diào)制的紅外光波;接收電路由紅外接收裝置(由二極管、三極管或硅光電池組成)接收并將紅外發(fā)光二極管發(fā)射出的紅外光波轉(zhuǎn)換為相對應(yīng)的電信號,再由放大器處理輸出基帶信號。
(三)NEC協(xié)議紅外遙控器
紅外遙控協(xié)議有很多,本文所用遙控器選用的NEC協(xié)議。NEC協(xié)議的數(shù)據(jù)格式包括了引導(dǎo)碼、用戶碼、用戶碼反碼、按鍵鍵碼、鍵碼反碼和停止位。停止位一般不進(jìn)行判斷,它主要是起隔離作用,而將用戶碼和鍵碼取反的作用是為了加強(qiáng)數(shù)據(jù)的正確性。NEC的每一位數(shù)據(jù)本身都需要進(jìn)行編碼,在編碼完成后再進(jìn)行載波調(diào)劑。所以對于遙控器來說,不同的按鍵,就是鍵碼和鍵碼反碼的區(qū)分,用戶碼的道理也是一樣的。因此可以通過單片機(jī)程序,將當(dāng)前的按鍵碼的鍵碼解析出來。
(四)紅外遙控校對時(shí)間程序的編譯
進(jìn)行紅外控制,我們使用兩個(gè)文件來執(zhí)行:Infrared.c和Main.c文件。Infrared.c文件主要用來檢測紅外通信,當(dāng)發(fā)生外部中斷被檢測出來時(shí),能夠進(jìn)入外部中斷進(jìn)行調(diào)整,可以通過定時(shí)器1定時(shí),首先進(jìn)行對引導(dǎo)碼的判斷,然后對數(shù)據(jù)碼的每個(gè)位逐位獲取到高低電平的時(shí)間,從而可以得知每一位是0還是1,最終解出數(shù)據(jù)碼。Main.c文件的主要功能是把紅外遙控器發(fā)射出的用戶碼和鍵碼的信息獲取并傳送到數(shù)碼管且顯示出來,通過定時(shí)器T0中的1ms中斷進(jìn)行對數(shù)碼管的動(dòng)態(tài)刷新,從而實(shí)現(xiàn)時(shí)間的校對。
四、結(jié)論
本文介紹了一款STC89C52RC單片機(jī)控制的多功能電子時(shí)鐘。本文的研究重點(diǎn)是如何通過4×4矩陣按鍵和紅外遙控分別實(shí)現(xiàn)時(shí)間和日期的調(diào)整。該時(shí)鐘成本低,功耗小,操作簡單,可作為民用電子日歷的基礎(chǔ)部分,具有較高的使用價(jià)值和可擴(kuò)展性。(作者單位:山東協(xié)和學(xué)院)
參考文獻(xiàn):
[1]宋雪松.手把手教你學(xué)51單片機(jī)(C語言版)[M].北京:清華大學(xué)出版社,2014.
[2]姜赫.基于51單片機(jī)的電子時(shí)鐘設(shè)計(jì)[J].數(shù)字化用戶,2013(30):98.
[3]林偉,張浩,陳杰,等.基于51單片機(jī)的智能溫控電扇設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2014(6):9.
[4]董玉龍,王杰,管冰巖,等.基于51單片機(jī)的溫濕度監(jiān)測與控制系統(tǒng)[J].科學(xué)導(dǎo)報(bào),2014(7):165.
作者簡介:王紅(1982-),女,山東德州人,副教授,研究方向:嵌入式、物聯(lián)網(wǎng)。
項(xiàng)目基金:山東省青少年教育科學(xué)規(guī)劃課題(編號:16AJY056)。