毛瑋英
摘 要 在忙碌的生活中,我們必須合理的規劃時間才能完成繁多雜亂的任務。這時如果有一個小巧方便并且功能多樣化的電子鐘,來在規定的時間里提醒主人就再好不過了。本次運用單片機與數字電路的相關知識對硬件的功能和軟件的編寫流程進行詳細的介紹,來實現多功能電子時鐘的設計。
關鍵詞 51系列單片機;DS1302時鐘芯片;LED顯示屏
中圖分類號 TN99 文獻標識碼 A 文章編號 1674-6708(2016)160-0146-02
如何才能實現電子時鐘的多功能?即保證時間日期、鬧鐘正常工作的情況下,又添加了溫度測量、播放音樂以及分別有按鍵校時和紅外遙控校時等功能。
1 硬件設備
1.1 多功能電子時鐘的原理圖
1.2 單片機
本次使用的是89c52單片機,在用單片機完成后續的功能前,必須要有電源電路,晶振電路,復位電路。本次電源電路接到5V的電源上。晶振電路采用無源晶振。復位電路采用手動復位。
1.3 顯示模塊
在原理圖中起到顯示功能的器件有LED點陣、數碼管、1602液晶,最后還有LED小燈作裝飾。
首先LED小燈即發光二極管在此設計中用來裝飾電子鐘。在鬧鐘定時到后,8個LED小燈實現了流水燈的效果。在選取二極管時要注意,它的正向導通電壓是1.8V~2.2V之間,工作電流一般在1mA~20mA之間。所以當電流過大則會出現燒壞的危險。
LED數碼管其實就是由a、b、c、d、e、f、g、dp這8段即8個LED小燈組成。它分為共陰極和共陽極兩種。如果是共陽極,則可通過控制陰極的高低電平來實現對數碼管上數字的顯示。
LED點陣其實就是多個LED小燈的組合。本次用的8*8的點陣即為64個小燈組成。LED點陣顯示屏作為一種現代電子媒體,具有靈活、高亮度、壽命長、數字化等特點。
1602液晶可以顯示兩行,每行16個字符。它的工作電壓是4.4V~5.5V,工作電流為20MA。
1.4 數字邏輯電路74HC138和74HC245
如何利用單片機的P0端口有條不紊的既控制數碼管的顯示又控制點陣顯示屏和小燈呢?除了在軟件上的編程外,還需要結合硬件模塊來實現。這就用到了74HC138和74HC245。
74HC245起到了雙向電流緩沖器的作用。若LED小燈等直接接在單片機上,很明顯超出了單片機所能承受的電流值50mA。所以將它接在數碼管,LED小燈和單片機之間。它的作用就是電流緩沖,它自身可以承受8條支路的64mA,并且在其中間起電流緩沖作用,減小了單片機IO口的輸入電流。
74HC138也稱為38譯碼器。它的主要功能是解決單片機IO口不夠用的問題。單片機的IO口總共有32個,但如果都將引腳直接連在IO口上,很明顯僅僅只能用32個。而74HC138有3個輸入端,8個輸出端。每個輸入端都可能有兩種狀態0或者是1。通過排列組合的知識可以看出3個輸入端不同狀態的組合后共有八種不同的排列。所以通過3個輸入端的狀態的不同,選擇不用的輸出。這樣就從需要8個IO口減到了3個。并且,本次設計用了兩個74HC138以此來實現對不同顯示器件的控制。
1.5 DS1302時鐘模塊
DS1302是DALLAS公司推出的一款涓流充電時鐘芯片,可以提供秒、分、時、日期、月、年等信息。并且具有軟件自動調整的能力。可以選擇12小時制或24小時制。DS1302的工作電壓在2.0V~5.5V之間,并且功耗很低,工作在2.0V的時候,工作電流小于300NA。它有兩個電源輸入,一個是主電源另外一個是備用電源。時鐘芯片DS1302有3根線,分別是使能線CE、數據線I/O、時鐘線SCLK。
1.6 溫度傳感器DS18B20
DS18B20是美信公司的一款溫度傳感器。單片機使用1-wire總線協議和DS18B20進行通信,最后將溫度讀出。本次溫度值將通過1602液晶顯示出來。
1.7 紅外校時和按鍵校時
按鍵校時即直接利用按鍵來改變在液晶上的時間日期等信息,但時鐘掛在墻上后再想進行校時,還利用按鍵校時就太麻煩了。如果可以利用遙控器對其校時就再方便不過了。所以,紅外遙控器即通過使用38K載波對輸入信號進行調制,并使用NEC紅外通信協議使得單片機系統具有遠距離控制器件的功能。
2 軟件設計
上述的硬件按功能可分為顯示模塊、時鐘模塊、按鍵模塊、紅外模塊、溫度測試模塊等。編程其實就是根據原理圖中的各個器件的連接來實現不同功能,將功能在軟件層實現,可簡化硬件的復雜度。故本次的程序也是模塊化編程,來實現各個功能。
由于全部的程序無法在此顯示,故只介紹程序的整體思路和定時部分的時間如何分配。
2.1 程序模塊化流程
從主程序開始,初始各功能模塊。然后判斷是否2s上電延時是否到,未到則等待,到2s則刷新顯示內容。接著進入主循環執行按鍵驅動和紅外接收驅動,再判斷200ms定時延時是否到,未到則執行2s定時判斷。到了則執行流水燈和刷新當前時間,以及監控鬧鐘。判斷2s定時是否到,到了則執行溫度刷新,未到則返回主循環。
2.2 定時器的分配及定時器的優先級
LED點陣或是數碼管何時顯示需要定時器來定時,按鍵的不斷掃描也需要定時器定時掃描,并且紅外遙控器按鍵也需要定時器定時。52單片機除了定時器0和定時器1之外,還有一個定時器2。按鍵掃描每1mA~2mA掃描一次,用定時器0來完成。
紅外遙控按鍵通信的數據碼第一個字節是8組560us的載波加上560us的空閑即用戶碼0x00,第二個字節是8組的560us的載波加上1.68ms的空閑即用戶反碼0xff,接下來就是鍵碼和簡碼反碼也就是通過按鍵輸入的不同的按鍵值。并且在數據碼前要加上引導碼9ms的載波加上4.5ms的空閑,在數據碼后加上560us的載波停止位。用定時器1來完成。
按照常理可知紅外按鍵與直接按鍵不會同時使用,故可將定時器0和1設為同一優先級,而將定時器2設為高于0和1的優先級。
3 軟件的調試
先調試顯示功能程序,若無誤后可繼續調試DS1302程序,將其結果顯示在液晶上可判斷是否有誤,無誤則接著調試按鍵程序,通過不同的按鍵選擇數值觀察液晶顯示上是否一致,溫度與紅外程序的調試可通過手溫和按鍵來測試。鬧鐘程序即為到時間后蜂鳴器是否響來測試。
4 軟件仿真或板子制作
可利用protus軟件進行仿真或制作PCB板子后印制等工序,將程序添加到單片機中來完成功能的實現。