利用單片機(jī)實(shí)現(xiàn)按鍵控制數(shù)碼管顯示。單片機(jī)是所有微處理機(jī)中性?xún)r(jià)比最高的一種,隨著種類(lèi)的不斷全面功能不斷完善,其應(yīng)用領(lǐng)域也迅速擴(kuò)大。單片機(jī)在智能儀表、實(shí)時(shí)控制機(jī)電一體化、辦公機(jī)械、家用電器等方面都有相當(dāng)?shù)膽?yīng)用領(lǐng)域。當(dāng)前8位單片機(jī)主要用于工業(yè)控制,如溫度、壓力、流量、計(jì)量和機(jī)械加工的測(cè)量和控制場(chǎng)合;
高效能的16位單片機(jī)(如MCS-96、MK-68200)可用在更復(fù)雜的計(jì)算機(jī)網(wǎng)絡(luò)。可以說(shuō),微機(jī)測(cè)控技術(shù)的應(yīng)用已滲透國(guó)民經(jīng)濟(jì)的各個(gè)部門(mén),微機(jī)測(cè)控技術(shù)的應(yīng)用是產(chǎn)品提高檔次和推陳出新的有效途徑。
51單片機(jī)最小系統(tǒng)中有4個(gè)獨(dú)立按鍵,4個(gè)共陽(yáng)極數(shù)碼管,我想對(duì)應(yīng)著用一個(gè)按鍵去控制一個(gè)數(shù)碼管,比如按以下1號(hào)按鍵,對(duì)應(yīng)的數(shù)碼管顯示0,再按一下顯示1,有點(diǎn)像計(jì)數(shù)功能,這樣的換憑借4個(gè)按鍵就可以顯示出我需要的4位數(shù)
鍵盤(pán)電路作為單片機(jī)的輸入部分,數(shù)碼顯示電路作為單片機(jī)的輸出部分,由鍵盤(pán)電路通過(guò)單片機(jī)控制數(shù)碼管顯示電路的八路鍵控?cái)?shù)碼管電路。按下S0到S7號(hào)按鍵時(shí),數(shù)碼管顯示立刻顯示數(shù)字0到7。電子制作的好課題下面是單片機(jī)最小系統(tǒng)_按鍵控制數(shù)碼管顯示原理圖,實(shí)作時(shí),按原理圖焊好電路,單片機(jī)中寫(xiě)入程序。
ORG 0000H ;隨后的指令代碼從0000H單元開(kāi)始存放。
LJMP START ;轉(zhuǎn)到標(biāo)號(hào)START處
ORG 0030H ;隨后的指令代碼從0030H單元開(kāi)始存放。
START:MOV P0,#00H ;關(guān)閉數(shù)碼管,不顯示任何內(nèi)容。
SAOMIAO:MOV P2,#0FFH ;對(duì)P2口所有位寫(xiě)1,也就是處于讀狀態(tài),確保讀數(shù)正確。
CLR A ;對(duì)累加器A清零。
MOV A,P2 ;第一次讀取P2口的數(shù)據(jù),并送入累加器A中。
CPL A ;對(duì)A按位取反,如果沒(méi)有鍵按下, A為00H,如果有鍵按下,相應(yīng)的位為1。
JZ SAOMIAO ;如果A=00H,說(shuō)明沒(méi)有鍵按下,跳到標(biāo)號(hào)SAOMIAO處繼續(xù)掃描。如果A不等于00H,說(shuō)明有鍵按下,應(yīng)該調(diào)用10MS的延時(shí)去抖子程序。
LCALL DELAY10MS ;調(diào)用10MS的延時(shí)去抖子程序。
MOV A,P2 ;第二次讀取P2口的數(shù)據(jù),并送入累加器A中。
CPL A ;對(duì)A按位取反,如果沒(méi)有鍵按下, A為00H,如果有鍵按下,相應(yīng)的位為1。
JZ SAOMIAO ;如果A=00H,說(shuō)明沒(méi)有鍵按下,跳到標(biāo)號(hào)SAOMIAO處繼續(xù)掃描。如果A不等于00H,說(shuō)明確實(shí)有鍵按下,順序執(zhí)行下面的程序,判斷是哪個(gè)鍵按下了。
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 ;從本行開(kāi)始,到RET結(jié)束,為10MS延時(shí)去抖子程序。
D1:MOV R6,#250
D2:DJNZ R6,D2
DJNZ R7,D1
RET
END