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