實(shí)戰單片機電子鐘制作
到這里就可以進(jìn)入編程調試階段了,這個(gè)時(shí)鐘程序的編寫(xiě)主要包括以下4個(gè)主要部分:
1.PS/2鍵盤(pán)通信
PS/2接口6只引腳中4只引腳是有效的,兩只用于供電,只有2只引腳可以用來(lái)傳輸數據。PS/2通信協(xié)議是一種雙向同步串行通信協(xié)議。通信的兩端通過(guò)Clock(時(shí)鐘腳)同步,并通過(guò)Data(數據腳)交換數據。任何一方如果想抑制另外一方通信時(shí),只需要把Clock(時(shí)鐘腳)拉到低電平。每一數據幀包含11~12個(gè)位,具體含義如表1所列。更多的PS/2說(shuō)明可以參考網(wǎng)上的應用介紹。
PS/2接口與單片機的連接如原理圖7所示,由于PS/2鍵盤(pán)要向單片機發(fā)送數據時(shí),總是先將第5腳時(shí)鐘線(xiàn)拉低,這樣就可以將PS/2接口的第5腳與單片機的外中斷輸入引腳相連,一旦PS/2要向單片機發(fā)送數據,單片機就可以以外中斷的方式優(yōu)先響應PS/2鍵盤(pán)的輸入請求,開(kāi)始接收數據,接收完畢后,PS/2鍵盤(pán)將時(shí)鐘線(xiàn)恢復為高電平。
由表1可知,單片機以外中斷方式接收PS/2鍵盤(pán)數據時(shí),每接收一幀數據就要中斷11次,接收完成后,只要對其中8位有效數據進(jìn)行比較或查表,就可以知道哪個(gè)按鍵被按下。例如把小鍵盤(pán)區的數字鍵通碼進(jìn)行排序制表,根據查表的次數就可知道是哪個(gè)數字按鍵被按下。這就是PS/2鍵盤(pán)編程的思路。單片機成功接收了PS/2鍵盤(pán)數據確定是哪個(gè)按鍵后,就可轉到相應的程序段執行指定的功能,如設定時(shí)間,設定亮度、設定鬧鈴等。
2.DS12C887的設置和讀寫(xiě)
DS12C887內部共有128個(gè)寄存器,前14個(gè)為時(shí)鐘控制寄存器,剩下114個(gè)供編程者自由使用。14個(gè)時(shí)鐘控制寄存器中的前10個(gè)用于存儲時(shí)鐘參數,后4個(gè)用于控制DS12C887的各功能組件工作狀態(tài)。在DS12C887的第13腳片選端(CS)與P2.7相連接情況下,14個(gè)時(shí)鐘控制寄存器地址及具體功能說(shuō)明如表2所示。
在本文所示電路連接情況下,DS12C887就相當于是單片機的一個(gè)外部并行擴展RAM,數據讀寫(xiě)采用MOVX指令直接一次性讀出或寫(xiě)入,很是方便。在程序初始根據要求對相關(guān)功能寄存器進(jìn)行設定,然后在每次循環(huán)當中讀出當前各時(shí)間寄存器的數據,經(jīng)單片機處理后分別送到兩片MAX7219的指定位置顯示即可,具體可參考源程序。
3.MAX7219的初始化和數據寫(xiě)入
MAX7219是一款專(zhuān)用數碼管驅動(dòng)芯片,內部設有動(dòng)態(tài)掃描電路,它以串行通信方式接收到單片機的顯示數據后,對指定位置的數碼管顯示內容進(jìn)行更新,為單片機節省了寶貴的軟、硬件資源。MAX7219的一個(gè)顯著(zhù)特點(diǎn)是可以通過(guò)設定亮度控制寄存器的數值來(lái)控制所接數碼管的顯示亮度。MAX7219內部有14個(gè)寄存器,用于控制數碼管顯示的內容和狀態(tài),各寄存器功能列表如表3所示。
MAX7219的初始化就是對后5個(gè)寄存器進(jìn)行設置,由于檢測只需在電路板焊接好進(jìn)行一次就可以,所以程序初始主要是寫(xiě)入譯碼方式、顯示亮度、掃描位數、顯示開(kāi)關(guān)4個(gè)控制寄存器相應數值。到這里就可以發(fā)現通過(guò)PS/2鍵盤(pán)設定數碼管顯示亮度,就是識別按鍵后對MAX7219的亮度控制寄存器重新寫(xiě)入新數值。
MAX7219每個(gè)寄存器的寫(xiě)入分兩步,第一步先寫(xiě)入寄存器地址;第二步再寫(xiě)入寄存器數據,具體的寫(xiě)入語(yǔ)句見(jiàn)源程序。這里簡(jiǎn)要介紹一下MAX7219級聯(lián)狀態(tài)下數據寫(xiě)入思路,這個(gè)電路板上用到兩片MAX7219(U5、U6),由原理圖7可見(jiàn)U6的輸入端(DIN)接到U5的輸出端(DOUT),這樣就稱(chēng)U6為后級,U5為前級,寫(xiě)入子程序段執行一次就把地址和數據先送到后級的U6,再執行一次才送到U5,以此類(lèi)推,如果3片MAX7219級聯(lián),寫(xiě)入子程序就要執行三次才能分別將數據送到相應的MAX7219。
4.DS18B20數據讀取和處理
DS18B20內部結構和工作原理就不介紹了。單片機對讀取到的溫度數據進(jìn)行適當處理,就是將讀出的二進(jìn)制數據轉換成BCD碼,再將轉換到的BCD碼高低位分離,送到MAX7219的相應位置顯示即可。
編好的程序寫(xiě)入單片機,一個(gè)原汁原味的單片機電子鐘就制作好了,夜間的運行效果如圖12所示。
制作調試問(wèn)題匯總
1.試驗板搭接是必須的,否則無(wú)法確定原理線(xiàn)路正確性。
2.DS12C887有一個(gè)上電穩定時(shí)間,在程序初始進(jìn)行幾十毫秒的延時(shí)即可,否則會(huì )讀出不正確的數據,因為這個(gè)問(wèn)題編程時(shí)多花了2天時(shí)間。PS/2鍵盤(pán)設定好亮度后,將亮度參數保存到DS12C887的7F0EH單元,重新上電后應能讀出上次設定的亮度參數,但每次讀出的均為0,百思不解,上網(wǎng)搜索也無(wú)結果,反復試驗思考,終于發(fā)現DS12C887的用戶(hù)RAM區上電需要一個(gè)穩定時(shí)間,否則讀出的數據始終是0。
3.MAX7219對供電電壓穩定性要求較高,大小兩個(gè)濾波電容要緊靠芯片布置,參數設置要恰當。在試驗板搭接階段經(jīng)常發(fā)現MAX7219顯示會(huì )錯亂,查找各類(lèi)網(wǎng)頁(yè)資料,就是要設置濾波電容,但試驗板上沒(méi)有緊靠芯片設置,而且采用的是飛線(xiàn),一直到制成PCB后這個(gè)問(wèn)題才得到解決。
4.MAX7219的質(zhì)量問(wèn)題。網(wǎng)購是現在電子元件獲取的主要途徑,但發(fā)現特便宜的MAX7219質(zhì)量無(wú)法保證,所以大家網(wǎng)購電子元件時(shí),要注意這個(gè)問(wèn)題。
5.網(wǎng)上的參考資料要多對比,才能確定其正確性。
待改進(jìn)之處
1.可在板上合適的位置增加幾個(gè)獨立按鍵,日常使用調節更方便些;
2.顯示內容可增加農歷和濕度;
3.可以用光敏電阻配合串行A/D轉換芯片(如TLC549)實(shí)現顯示亮度的自動(dòng)調節,以適應環(huán)境光線(xiàn)的變化,這樣子就更加具有專(zhuān)業(yè)性了。
評論