標題: 單片機最小系統(tǒng)_按鍵控制數(shù)碼管顯示 [打印本頁]

作者: dzdiy    時間: 2015-4-11 19:43
標題: 單片機最小系統(tǒng)_按鍵控制數(shù)碼管顯示
    單片機最小系統(tǒng)_按鍵控制數(shù)碼管顯示,這個項目,主要學習單片機的鍵盤工作原理與顯示方面的知識,電子小制作的好課題。鍵盤電路作為單片機的輸入部分,數(shù)碼顯示電路作為單片機的輸出部分,由鍵盤電路通過單片機控制數(shù)碼管顯示電路的八路鍵控數(shù)碼管電路。按下S0到S7號按鍵時,數(shù)碼管顯示立刻顯示數(shù)字0到7。電子制作的好課題下面是單片機最小系統(tǒng)_按鍵控制數(shù)碼管顯示原理圖,實作時,按原理圖焊好電路,單片機中寫入程序。


         ORG 0000H ;隨后的指令代碼從0000H單元開始存放。
         LJMP START ;轉(zhuǎn)到標號START處
         ORG 0030H ;隨后的指令代碼從0030H單元開始存放。
   START:MOV P0,#00H ;關(guān)閉數(shù)碼管,不顯示任何內(nèi)容。
SAOMIAO:MOV P2,#0FFH ;對P2口所有位寫1,也就是處于讀狀態(tài),確保讀數(shù)正確。
         CLR A ;對累加器A清零。
         MOV A,P2 ;第一次讀取P2口的數(shù)據(jù),并送入累加器A中。
         CPL A ;對A按位取反,如果沒有鍵按下, A為00H,如果有鍵按下,相應(yīng)的位為1。
         JZ SAOMIAO ;如果A=00H,說明沒有鍵按下,跳到標號SAOMIAO處繼續(xù)掃描。如果A不等于00H,說明有鍵按下,應(yīng)該調(diào)用10MS的延時去抖子程序。
         LCALL DELAY10MS ;調(diào)用10MS的延時去抖子程序。
         MOV A,P2 ;第二次讀取P2口的數(shù)據(jù),并送入累加器A中。
         CPL A ;對A按位取反,如果沒有鍵按下, A為00H,如果有鍵按下,相應(yīng)的位為1。
         JZ SAOMIAO ;如果A=00H,說明沒有鍵按下,跳到標號SAOMIAO處繼續(xù)掃描。如果A不等于00H,說明確實有鍵按下,順序執(zhí)行下面的程序,判斷是哪個鍵按下了。
         JB ACC.0,SZ0 ;如果S0鍵按下,則ACC.0=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字0,否則順序執(zhí)行。
         JB ACC.1,SZ1 ;如果S1鍵按下,則ACC.1=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字1,否則順序執(zhí)行。
         JB ACC.2,SZ 2 ;如果S2鍵按下,則ACC.2=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字2,否則順序執(zhí)行。
         JB ACC.3,SZ 3 ;如果S3鍵按下,則ACC.3=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字3,否則順序執(zhí)行。
         JB ACC.4,SZ 4 ;如果S4鍵按下,則ACC.4=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字4,否則順序執(zhí)行。
         JB ACC.5,SZ 5 ;如果S5鍵按下,則ACC.5=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字5,否則順序執(zhí)行。
         JB ACC.6,SZ 6 ;如果S6鍵按下,則ACC.6=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字6,否則順序執(zhí)行。
         JB ACC.7,SZ 7 ;如果S7鍵按下,則ACC.7=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字7,否則順序執(zhí)行。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描。
     SZ0:MOV P0,#3FH ;顯示數(shù)字0。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ1:MOV P0,#06H ;顯示數(shù)字1。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ2:MOV P0,#5BH ;顯示數(shù)字2。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ3:MOV P0,#4FH ;顯示數(shù)字3。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ4:MOV P0,#66H ;顯示數(shù)字4。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ5:MOV P0,#6DH ;顯示數(shù)字5。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ6:MOV P0,#7DH ;顯示數(shù)字6。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
     SZ7:MOV P0,#07H ;顯示數(shù)字7。
         LJMP SAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。
DELAY10MS:MOV R7,#20 ;從本行開始,到RET結(jié)束,為10MS延時去抖子程序。
      D1:MOV R6,#250
      D2:DJNZ R6,D2
      DJNZ R7,D1
      RET
      END
    電子制作的好課題單片機最小系統(tǒng)_按鍵控制數(shù)碼管顯示,這個項目,主要學習單片機的鍵盤工作原理與顯示方面的知識。



最后推薦一個很好的單片機教程:http://www.torrancerestoration.com/bbs/mcu-xuexi-1.html
     另外下面是一些我收集整理的關(guān)于單片機最小系統(tǒng)的資料:

手把手制作單片機最小系統(tǒng)http://www.torrancerestoration.com/bbs/dpj-33306-1.html
初學者零基礎(chǔ)學習單片機的方法:http://www.torrancerestoration.com/bbs/dpj-33307-1.html
單片機點亮發(fā)光二極管的試驗http://www.torrancerestoration.com/bbs/dpj-33308-1.html
STC89C52RC單片機最小系統(tǒng)http://www.torrancerestoration.com/bbs/dpj-33267-1.html
一款適合用來學習的單片機最小系統(tǒng)制作圖http://www.torrancerestoration.com/bbs/dpj-33273-1.html
單片機最小系統(tǒng)_按鍵控制數(shù)碼管顯示http://www.torrancerestoration.com/bbs/dpj-33271-1.html
單片機最小系統(tǒng)圖紙http://www.torrancerestoration.com/bbs/dpj-33274-1.html
收集的單片機最小系統(tǒng)實物照片http://www.torrancerestoration.com/bbs/dpj-33290-1.html
用STC89C52RC單片機焊接的單片機最小系統(tǒng)http://www.torrancerestoration.com/bbs/dpj-33304-1.html
新手學焊的單片機最小系統(tǒng):http://www.torrancerestoration.com/bbs/dpj-33249-1.html

作者: bomb1999    時間: 2021-4-9 04:21
程序注釋的如此詳盡,對菜鳥的咱家是太寶貴了。樓主:厚道啊
作者: 芙蓉焊料    時間: 2021-4-12 18:26
初學者不明白ACC清0,按鍵按下也為0,怎樣讀的呢?
作者: 芙蓉焊料    時間: 2021-4-12 18:28
ACC清0,按鍵按下也為0,怎樣讀的呢?我是初學者




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1