久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于51單片機智能計數器的設計

作者:未知   來源:不詳   點擊數:  更新時間:2013年12月27日   【字體:

一、任務以及要求
對外部信號脈沖進行計數,并將脈沖個數顯示出來。基本要求:計數至少65536個脈沖,并將脈沖個數顯示出來。
 
二、方案選擇
用中斷方式進行計數,利用定時器/計數器0的方式2。使用查尋方式進行計數,利用定時器/計數器0的方式1。本程序使用第一方案進行設計,并能實現計數99999999次
 
三、系統硬件設計
設計思路
1)、通過按鈕產生脈沖信號。
2)、由于按鈕按合會出現機械彈跳過程,使得電平跳變發生多次。為了克服按鈕抖動而產生的誤計數,接入脈沖消抖電路,克服按鈕的抖動現象。
3)、脈沖計數可采用定時器/計數器來實現。
4)、選擇8279作為6位LED顯示器的譯碼驅動電路,實現累進計數。
    2、硬件電路組成:
       根據硬件設計思路,將用到單片機8031、按紐、脈沖消抖電路,8279芯片電路、6位LED顯示器電路用連接線接好。其中按鈕脈沖消抖電路由按鈕產生的電平跳變信號經由兩個與非門構成的RS觸發器進行消抖。根據RS觸發器的工作原理,當兩個輸入端均為1時,觸發器輸出狀態不變;當按鈕在兩個觸點間抖動時,RS觸發器的兩個輸入端均為高電平,觸發器輸出電平不變;僅當按鈕實現一次完整的按合過程后,觸發器的輸出端才產生一個脈沖,從而消除了按鈕按合是抖動的影響。數據顯示采用8279芯片連接LED數碼管實現。應根據單片機,確定8279與單片機和與6位LED顯示器的接口方式,以及8279芯片的端口地址(8279數據口地址為0000H,8279命令/狀態口地址為0001H)
系統程序設計
設計思路:
以定時器/計數器0來對脈沖進行計數,數據用8279芯片連接LED數碼管實現累進顯示。程序分為主程序和中斷服務程序兩部分。主程序主要實現初始化、循環顯示。而累計數在中斷服務程序中完成。
主程序設計:
1)、實現初始化
    包括設置堆棧指針、8279芯片初始化、定時器/計數器0初始化、RAM區初始化,以及開中斷、啟動定時期/計數器0等。
2)、數據循環顯示
    首先要編寫8279初始化子程序和顯示一個字符的基本子程序。其中8279初始化子程序為P8279,該子程序功能包括設置8279的工作方式(8個字符顯示,左入口,編碼掃描鍵盤,雙鍵鎖定)以及寫相關的命令字(設置分頻系數為31、清除LED顯示等)。顯示一個字符的子程序為DISLED,該子程序的入口條件為:工作就寄存器R4中存放待顯示字符的LED數碼管管號。另在工作寄存器R5中,以非壓縮BCD碼的形式存放帶顯示字符。一般情況下,如要顯示0~9,則在R5中依次置00H~09H,程序中用查表的方法找到待顯示字符所對應的“段碼”。
   顯示子程序DISP的設計思想是:待顯示的六位數據分別以壓縮BCD碼的形式存放在67H、68H、69H和70H四個單元中,該子程序的功能是依次將存放在67H、68H、69H和70H中的八個BCD碼分別送0#~7#數碼管顯示。先將其拆開為個位、十位、百位、千位、萬位、十萬位、百萬位和千萬位八個非壓縮BCD碼的形式,隨之先后送工作寄存器R5,再三次調用DISLED子程序。由于在工作寄存器R4中已設置好該數據顯示的管號,故即可在0#號管和1#號管實現個位和十位數據的顯示。第二次循環中,又可在2#號管和3#號管實現百位和千位數據的顯示,第三次循環中,可在4#號管和5#號管實現萬位和十萬位數據的顯示,第四次循環中,可在6#號管和8#號管實現百萬位和千萬位數據的顯示。
 
   3)、主程序清單:
     ORG 0000H
           LJMP MAIN
           ORG 000BH
           LJMP CTCO
           ORG 0030H
MAIN:     MOV  TMOD,  #60H    ;設定時器/計數器1為計數方式,工作方式2
           MOV TH1, #0FFH   ;每產生一個脈沖即產生中斷
           MOV TL1, #0FFH
           MOV 67H, #00H
           MOV 68H, #00H     ;計數器先清零
           MOV 69H, #00H
           MOV 70H, #00H
           MOV SP, #2FH     ;堆棧指針置初值
           MOV   R3,     #06H     ;LED待顯示位數送R3
           SETB EA
           SETB ET0
           SETB TR0
           PUSH DPH              ;8279的初始化
           PUSH DPL
           PUSH ACC
           MOV  DPTR,  #0001H    ;0001H為8279命令和狀態口地址
           MOV  A,      #00H     ;置8279工作方式(8個字符顯示,左入口;編碼掃描鍵盤,雙鍵鎖定)
           MOVX @DPTR, A
           POP ACC
           POP DPL
           POP DPH
        MOV  @R0, #00H         ;顯示緩沖區清零
           INC    R0
           DJNZ   R3,  $
           CLR   A                 ;累加器清零
LOOP:     LCALL DISP
           SJMP LOOP
DISP:      STEB  RS0               ;保護第0組工作寄存器,啟用第
                                     一組工作寄存器
        MOV R0, #70H       ;顯示緩沖區首址送R0
           MOV R4, #00H
           MOV R2, #04H
DIS1:      MOV A, @R0
           ANL A, #0FH
           MOV R5, A
           LCALL DISLED
           INC R4
           MOV A, @R0
           ANL A, #0F0H
           SWAP A
           MOV R5, A
           LCALL  DISLED
           DEC R0
           INC R4
           DJNZ R2, DIS1
           RET
DISLED:   PUSH DPH               ;顯示字符子程序
           PUSH DPL
           PUSH ACC               ;A入棧保護
                  MOV A, #80H
           ADD A, R4
           MOV DPTR, #0001H       ;8279命令和狀態口地址
           MOVX @DPTR, A
           MOV DPTR, #LEDSEG     ;指向字形表首地址
           MOV A, R5
           MOVC A, @A+DPTR    ;查表取得字形碼
           MOV DPTR, #0000H       ;8279數據口地址
           MOVX @DPTR, A
           POP ACC
           POP DPL
           POP    DPH
           RET
LEDSEG:   DB      03FH,06H,5BH,4FH,66H,6DH,7DH,07H,
             DB      07FH,6FH,77H,7CH,39H,5EH,79H,71H ; 
中斷服務程序設計
1)、中斷服務程序設計思路:
   定時器/計數器0設置為工作方式2,并設計時器處值為FFH。這樣只要來一個脈沖,計時器就溢出而產生中斷,進入中斷程序使67H、68H、69H、70H四個計數單元的值實現累加。
 
2)、中斷服務程序清單:
ORG 1000H
CTCO:         PUSH   ACC
         MOV A, 70H
        ADD A, #01H
               DA      A
               MOV 70H, A
               MOV A, 69H
        ADDC A, #00H
        CLR C
               DA A
        MOV 69H, A
        MOV A, 68H
        ADDC A, #00H
        CLR C
        DA A
        MOV 68H, A
        MOV A, 67H
        ADDC A
        MOV 67H, A
        POP    ACC
        RETI
              
 
實習心得
   通過本次單片機實習徹底掌握了MCS-51、8279的結構及工作原理,通過它們使我能夠完成智能計數器,對智能計數器的工作原理也有了更深的體會和掌握。學會了巧妙的編程方法,掌握了定時器/計數器的應用。
   就連我自己也不知道為什么,一開始我就對單片機很感興趣。我覺得每每聽萬一堂課,我都有一種說不出的高興,有時也會發愁,因為課程越往后越難學而且講課進度再加快,但我沒有退縮,每周堅持看單片機。就這樣一步步走到課程設計,也許是沒全身心投入,搞了兩天程序才搞出來,結果上機時還是存在著錯誤,和同組人劉歡討論和修改后才完成了“智能計數器”這個程序的編寫。為了更好的完成軟硬件的結合,我查閱了相關資料,最終得到了解決。    轉眼間,一周的課程設計過去了。經過這么一個過程我更加深刻的認識了單片機。單片機是編程語言中非常重要的一種。它的功能十分強大,而且應用廣泛。我在編寫這個程序時出現了許多問題,同時也發現了要編好一個程序就要有一個好的程序設計基礎。不僅設計程序,就是任何事都是這樣的。還有我們做事要持之以恒,迎難而上,這樣才能有所成就。由于專業的需要我還要繼續學習單片機,并且我相信我也會在這方面作出成績,并把單片機靈活應用在學習和工作中。

關閉窗口

相關文章

主站蜘蛛池模板: 黑人精品 | 黄色电影在线免费观看 | 在线免费激情视频 | 日本在线一二 | 久草久草久草 | 91视频精选 | 春色av| 久久成| 99久久电影 | 久久久蜜桃| 黄色大片在线视频 | 久久精品国产99国产精品 | 国产精品99久久久久久动医院 | 久久久综合 | 自拍亚洲 | 99re视频这里只有精品 | 国产精品91网站 | 91中文字幕在线观看 | 亚洲欧美国产毛片在线 | 日本电影网站 | 九色视频网站 | 久久国产福利 | 高清黄色毛片 | 精品视频一区二区三区在线观看 | 久久亚洲国产 | 在线看日韩 | 91精品国产一区二区三区 | 亚洲视频欧美视频 | 成人国产在线视频 | 波霸ol一区二区 | 国产精品一区二区精品 | 国产激情免费视频 | 久久九九影视 | 精品美女在线观看 | 欧美精品片 | 成在线人视频免费视频 | 一二区视频| 成人一区av | 精品国产黄色片 | 草比网站| 日韩看片 |