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