在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 工程師電子制作故事:實戰(zhàn)單片機電子鐘

      工程師電子制作故事:實戰(zhàn)單片機電子鐘

      作者: 時間:2012-06-01 來源:網(wǎng)絡(luò) 收藏

        購齊所有元器件,焊接好電路板,最終焊接完成的實物如圖10所示。

        

      到這里就可以進(jìn)入編程調(diào)試階段了,這個時鐘程序的編寫主要包括以下4個主要部分:

        1.PS/2鍵盤通信

        PS/2接口6只引腳中4只引腳是有效的,兩只用于供電,只有2只引腳可以用來傳輸數(shù)據(jù)。PS/2通信協(xié)議是一種雙向同步串行通信協(xié)議。通信的兩端通過Clock(時鐘腳)同步,并通過Data(數(shù)據(jù)腳)交換數(shù)據(jù)。任何一方如果想抑制另外一方通信時,只需要把Clock(時鐘腳)拉到低電平。每一數(shù)據(jù)幀包含11~12個位,具體含義如表1所列。更多的PS/2說明可以參考網(wǎng)上的應(yīng)用介紹。

        表1 PS/2數(shù)據(jù)幀格式說明

        1個起始位 總是邏輯0

        8個數(shù)據(jù)位 低位在前

        1個奇偶校驗位 奇校驗

        1個停止位 總是邏輯1

        1個應(yīng)答位 僅用在主機對設(shè)備的通信中

        表2 DS12C887時鐘控制寄存器功能說明

        地址 功能說明

        7F00H 秒存儲單元

        7F01H 秒鬧鐘存儲單元

        7F02H 分存儲單元

        7F03H 分鬧鐘存儲單元

        7F04H 時存儲單元

        7F05H 時鬧鐘存儲單元

        7F06H 星期存儲單元

        7F07H 日期存儲單元

        7F08H 月份存儲單元

        7F09H 年份存儲單元

        7F0AH 控制芯片是否立即進(jìn)行更新、晶振是否起振、可編程方波參數(shù)設(shè)置

        7F0BH 各個位用于控制芯片更新是否禁止、周期/鬧鐘/更新結(jié)束3種中斷允許設(shè)置、可編 程方波輸出、數(shù)據(jù)存取格式(二進(jìn)制/BCD)、時制設(shè)置、夏令時允許標(biāo)志。

        7F0CH 該寄存器只讀,低4位無用,高4位由高到低分別是中斷請求標(biāo)志位、周期中斷標(biāo)志、鬧鐘中斷標(biāo)志、更新結(jié)束中斷標(biāo)志。

        7F0DH 該寄存器只讀,低7位無用,最高位VRT如為0表示內(nèi)置電池能量耗盡

        PS/2接口與的連接如圖7所示,由于PS/2鍵盤要向發(fā)送數(shù)據(jù)時,總是先將第5腳時鐘線拉低,這樣就可以將PS/2接口的第5腳與的外中斷輸入引腳相連,一旦PS/2要向單片機發(fā)送數(shù)據(jù),單片機就可以以外中斷的方式優(yōu)先響應(yīng)PS/2鍵盤的輸入請求,開始接收數(shù)據(jù),接收完畢后,PS/2鍵盤將時鐘線恢復(fù)為高電平。

        由表1可知,單片機以外中斷方式接收PS/2鍵盤數(shù)據(jù)時,每接收一幀數(shù)據(jù)就要中斷11次,接收完成后,只要對其中8位有效數(shù)據(jù)進(jìn)行比較或查表,就可以知道哪個按鍵被按下。例如把小鍵盤區(qū)的數(shù)字鍵通碼進(jìn)行排序制表,根據(jù)查表的次數(shù)就可知道是哪個數(shù)字按鍵被按下。這就是PS/2鍵盤編程的思路。單片機成功接收了PS/2鍵盤數(shù)據(jù)確定是哪個按鍵后,就可轉(zhuǎn)到相應(yīng)的程序段執(zhí)行指定的功能,如設(shè)定時間,設(shè)定亮度、設(shè)定鬧鈴等。

      2.DS12C887的設(shè)置和讀寫

        DS12C887內(nèi)部共有128個寄存器,前14個為時鐘控制寄存器,剩下114個供編程者自由使用。14個時鐘控制寄存器中的前10個用于存儲時鐘參數(shù),后4個用于控制DS12C887的各功能組件工作狀態(tài)。在DS12C887的第13腳片選端(CS)與P2.7相連接情況下,14個時鐘控制寄存器地址及具體功能說明如表2所示。

        在本文所示電路連接情況下,DS12C887就相當(dāng)于是單片機的一個外部并行擴展RAM,數(shù)據(jù)讀寫采用MOVX指令直接一次性讀出或?qū)懭?,很是方便。在程序初始根?jù)要求對相關(guān)功能寄存器進(jìn)行設(shè)定,然后在每次循環(huán)當(dāng)中讀出當(dāng)前各時間寄存器的數(shù)據(jù),經(jīng)單片機處理后分別送到兩片MAX7219的指定位置顯示即可,具體可參考。

        3.MAX7219的初始化和數(shù)據(jù)寫入

        MAX7219是一款專用數(shù)碼管驅(qū)動芯片,內(nèi)部設(shè)有動態(tài)掃描電路,它以串行通信方式接收到單片機的顯示數(shù)據(jù)后,對指定位置的數(shù)碼管顯示內(nèi)容進(jìn)行更新,為單片機節(jié)省了寶貴的軟、硬件資源。MAX7219的一個顯著特點是可以通過設(shè)定亮度控制寄存器的數(shù)值來控制所接數(shù)碼管的顯示亮度。MAX7219內(nèi)部有14個寄存器,用于控制數(shù)碼管顯示的內(nèi)容和狀態(tài),各寄存器功能列表如表3所示。

        表3 MAX7219寄存器功能說明

        編號 功能說明

        0 空操作地址

        1?8 第1?8個數(shù)碼管顯示地址

        9 譯碼方式控制寄存器,為0FFH表示使用內(nèi)部BCD譯碼器,為00H表示不使用

        A 亮度調(diào)節(jié)控制寄存器,分16級,參數(shù)范圍:00H—0FH

        B 掃描位數(shù)控制寄存器,根據(jù)所接數(shù)碼管數(shù)量確定,參數(shù)范圍:00H—07H (1只—8只)

        C 顯示開關(guān)控制寄存器,為1所有數(shù)碼正常顯示,為0關(guān)閉所有數(shù)碼管

        D 顯示器檢測控制寄存器,為1所接數(shù)碼管的各段全部點亮,用于檢測是否有損壞,再送入0,恢復(fù)正常顯示內(nèi)容

        MAX7219的初始化就是對后5個寄存器進(jìn)行設(shè)置,由于檢測只需在電路板焊接好進(jìn)行一次就可以,所以程序初始主要是寫入譯碼方式、顯示亮度、掃描位數(shù)、顯示開關(guān)4個控制寄存器相應(yīng)數(shù)值。到這里就可以發(fā)現(xiàn)通過PS/2鍵盤設(shè)定數(shù)碼管顯示亮度,就是識別按鍵后對MAX7219的亮度控制寄存器重新寫入新數(shù)值。

        MAX7219每個寄存器的寫入分兩步,第一步先寫入寄存器地址;第二步再寫入寄存器數(shù)據(jù),具體的寫入語句見。這里簡要介紹一下MAX7219級聯(lián)狀態(tài)下數(shù)據(jù)寫入思路,這個電路板上用到兩片MAX7219(U5、U6),由圖7可見U6的輸入端(DIN)接到U5的輸出端(DOUT),這樣就稱U6為后級,U5為前級,寫入子程序段執(zhí)行一次就把地址和數(shù)據(jù)先送到后級的U6,再執(zhí)行一次才送到U5,以此類推,如果3片MAX7219級聯(lián),寫入子程序就要執(zhí)行三次才能分別將數(shù)據(jù)送到相應(yīng)的MAX7219。

       4.DS18B20數(shù)據(jù)讀取和處理

        DS18B20內(nèi)部結(jié)構(gòu)和工作就不介紹了。單片機對讀取到的溫度數(shù)據(jù)進(jìn)行適當(dāng)處理,就是將讀出的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成BCD碼,再將轉(zhuǎn)換到的BCD碼高低位分離,送到MAX7219的相應(yīng)位置顯示即可。

        編好的程序?qū)懭雴纹瑱C,一個原汁原味的單片機好了,夜間的運行效果如圖12所示。

        

        圖12  單片機夜間運行效果

        調(diào)試問題匯總

        1.試驗板搭接是必須的,否則無法確定原理線路正確性。

        2.DS12C887有一個上電穩(wěn)定時間,在程序初始進(jìn)行幾十毫秒的延時即可,否則會讀出不正確的數(shù)據(jù),因為這個問題編程時多花了2天時間。PS/2鍵盤設(shè)定好亮度后,將亮度參數(shù)保存到DS12C887的7F0EH單元,重新上電后應(yīng)能讀出上次設(shè)定的亮度參數(shù),但每次讀出的均為0,百思不解,上網(wǎng)搜索也無結(jié)果,反復(fù)試驗思考,終于發(fā)現(xiàn)DS12C887的用戶RAM區(qū)上電需要一個穩(wěn)定時間,否則讀出的數(shù)據(jù)始終是0。

        3.MAX7219對供電電壓穩(wěn)定性要求較高,大小兩個濾波電容要緊靠芯片布置,參數(shù)設(shè)置要恰當(dāng)。在試驗板搭接階段經(jīng)常發(fā)現(xiàn)MAX7219顯示會錯亂,查找各類網(wǎng)頁資料,就是要設(shè)置濾波電容,但試驗板上沒有緊靠芯片設(shè)置,而且采用的是飛線,一直到制成PCB后這個問題才得到解決。

        4.MAX7219的質(zhì)量問題。網(wǎng)購是現(xiàn)在電子元件獲取的主要途徑,但發(fā)現(xiàn)特便宜的MAX7219質(zhì)量無法保證,所以大家網(wǎng)購電子元件時,要注意這個問題。

        5.網(wǎng)上的參考資料要多對比,才能確定其正確性。

       待改進(jìn)之處

        1.可在板上合適的位置增加幾個獨立按鍵,日常使用調(diào)節(jié)更方便些;

        2.顯示內(nèi)容可增加農(nóng)歷和濕度;

        3.可以用光敏電阻配合串行A/D轉(zhuǎn)換芯片(如TLC549)實現(xiàn)顯示亮度的自動調(diào)節(jié),以適應(yīng)環(huán)境光線的變化,這樣子就更加具有專業(yè)性了。

        程序或硬件電路,讀者可結(jié)合自己的想法,做出更加合理的改動。

      51單片機相關(guān)文章:51單片機教程



      上一頁 1 2 下一頁

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉