基于51單片機智能計數器的設計
對外部信號脈沖進(jìn)行計數,并將脈沖個(gè)數顯示出來(lái)?;疽螅河嫈抵辽?5536個(gè)脈沖,并將脈沖個(gè)數顯示出來(lái)。
二、方案選擇
用中斷方式進(jìn)行計數,利用定時(shí)器/計數器0的方式2。使用查尋方式進(jìn)行計數,利用定時(shí)器/計數器0的方式1。本程序使用第一方案進(jìn)行設計,并能實(shí)現計數99999999次
三、系統硬件設計
設計思路
1)、通過(guò)按鈕產(chǎn)生脈沖信號。
2)、由于按鈕按合會(huì )出現機械彈跳過(guò)程,使得電平跳變發(fā)生多次。為了克服按鈕抖動(dòng)而產(chǎn)生的誤計數,接入脈沖消抖電路,克服按鈕的抖動(dòng)現象。
3)、脈沖計數可采用定時(shí)器/計數器來(lái)實(shí)現。
4)、選擇8279作為6位LED顯示器的譯碼驅動(dòng)電路,實(shí)現累進(jìn)計數。
2、硬件電路組成:
根據硬件設計思路,將用到單片機8031、按紐、脈沖消抖電路,8279芯片電路、6位LED顯示器電路用連接線(xiàn)接好。其中按鈕脈沖消抖電路由按鈕產(chǎn)生的電平跳變信號經(jīng)由兩個(gè)與非門(mén)構成的RS觸發(fā)器進(jìn)行消抖。根據RS觸發(fā)器的工作原理,當兩個(gè)輸入端均為1時(shí),觸發(fā)器輸出狀態(tài)不變;當按鈕在兩個(gè)觸點(diǎn)間抖動(dòng)時(shí),RS觸發(fā)器的兩個(gè)輸入端均為高電平,觸發(fā)器輸出電平不變;僅當按鈕實(shí)現一次完整的按合過(guò)程后,觸發(fā)器的輸出端才產(chǎn)生一個(gè)脈沖,從而消除了按鈕按合是抖動(dòng)的影響。數據顯示采用8279芯片連接LED數碼管實(shí)現。應根據單片機,確定8279與單片機和與6位LED顯示器的接口方式,以及8279芯片的端口地址(8279數據口地址為0000H,8279命令/狀態(tài)口地址為0001H)
系統程序設計
設計思路:
以定時(shí)器/計數器0來(lái)對脈沖進(jìn)行計數,數據用8279芯片連接LED數碼管實(shí)現累進(jìn)顯示。程序分為主程序和中斷服務(wù)程序兩部分。主程序主要實(shí)現初始化、循環(huán)顯示。而累計數在中斷服務(wù)程序中完成。
主程序設計:
1)、實(shí)現初始化
包括設置堆棧指針、8279芯片初始化、定時(shí)器/計數器0初始化、RAM區初始化,以及開(kāi)中斷、啟動(dòng)定時(shí)期/計數器0等。
2)、數據循環(huán)顯示
首先要編寫(xiě)8279初始化子程序和顯示一個(gè)字符的基本子程序。其中8279初始化子程序為P8279,該子程序功能包括設置8279的工作方式(8個(gè)字符顯示,左入口,編碼掃描鍵盤(pán),雙鍵鎖定)以及寫(xiě)相關(guān)的命令字(設置分頻系數為31、清除LED顯示等)。顯示一個(gè)字符的子程序為DISLED,該子程序的入口條件為:工作就寄存器R4中存放待顯示字符的LED數碼管管號。另在工作寄存器R5中,以非壓縮BCD碼的形式存放帶顯示字符。一般情況下,如要顯示0~9,則在R5中依次置00H~09H,程序中用查表的方法找到待顯示字符所對應的“段碼”。
顯示子程序DISP的設計思想是:待顯示的六位數據分別以壓縮BCD碼的形式存放在67H、68H、69H和70H四個(gè)單元中,該子程序的功能是依次將存放在67H、68H、69H和70H中的八個(gè)BCD碼分別送0#~7#數碼管顯示。先將其拆開(kāi)為個(gè)位、十位、百位、千位、萬(wàn)位、十萬(wàn)位、百萬(wàn)位和千萬(wàn)位八個(gè)非壓縮BCD碼的形式,隨之先后送工作寄存器R5,再三次調用DISLED子程序。由于在工作寄存器R4中已設置好該數據顯示的管號,故即可在0#號管和1#號管實(shí)現個(gè)位和十位數據的顯示。第二次循環(huán)中,又可在2#號管和3#號管實(shí)現百位和千位數據的顯示,第三次循環(huán)中,可在4#號管和5#號管實(shí)現萬(wàn)位和十萬(wàn)位數據的顯示,第四次循環(huán)中,可在6#號管和8#號管實(shí)現百萬(wàn)位和千萬(wàn)位數據的顯示。
3)、主程序清單:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP CTCO
ORG 0030H
MAIN: MOV TMOD, #60H ;設定時(shí)器/計數器1為計數方式,工作方式2
MOV TH1,#0FFH ;每產(chǎn)生一個(gè)脈沖即產(chǎn)生中斷
MOV TL1,#0FFH
MOV67H,#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命令和狀態(tài)口地址
MOV A, #00H ;置8279工作方式(8個(gè)字符顯示,左入口;編碼掃描鍵盤(pán),雙鍵鎖定)
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命令和狀態(tài)口地址
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 ;
中斷服務(wù)程序設計
1)、中斷服務(wù)程序設計思路:
定時(shí)器/計數器0設置為工作方式2,并設計時(shí)器處值為FFH。這樣只要來(lái)一個(gè)脈沖,計時(shí)器就溢出而產(chǎn)生中斷,進(jìn)入中斷程序使67H、68H、69H、70H四個(gè)計數單元的值實(shí)現累加。
2)、中斷服務(wù)程序清單:
ORG 1000H
CTCO: PUSH ACC
MOV A,70H
ADD A,#01H
DA A
MOV 70H,A
MOV A,69H
ADDC A,#00H
CLRC
DA A
MOV 69H,A
MOVA,68H
ADDCA,#00H
CLRC
DAA
MOV68H,A
MOVA,67H
ADDCA
MOV67H,A
POP ACC
RETI
實(shí)習心得
通過(guò)本次單片機實(shí)習徹底掌握了MCS-51、8279的結構及工作原理,通過(guò)它們使我能夠完成智能計數器,對智能計數器的工作原理也有了更深的體會(huì )和掌握。學(xué)會(huì )了巧妙的編程方法,掌握了定時(shí)器/計數器的應用。
就連我自己也不知道為什么,一開(kāi)始我就對單片機很感興趣。我覺(jué)得每每聽(tīng)萬(wàn)一堂課,我都有一種說(shuō)不出的高興,有時(shí)也會(huì )發(fā)愁,因為課程越往后越難學(xué)而且講課進(jìn)度再加快,但我沒(méi)有退縮,每周堅持看單片機。就這樣一步步走到課程設計,也許是沒(méi)全身心投入,搞了兩天程序才搞出來(lái),結果上機時(shí)還是存在著(zhù)錯誤,和同組人劉歡討論和修改后才完成了“智能計數器”這個(gè)程序的編寫(xiě)。為了更好的完成軟硬件的結合,我查閱了相關(guān)資料,最終得到了解決。 轉眼間,一周的課程設計過(guò)去了。經(jīng)過(guò)這么一個(gè)過(guò)程我更加深刻的認識了單片機。單片機是編程語(yǔ)言中非常重要的一種。它的功能十分強大,而且應用廣泛。我在編寫(xiě)這個(gè)程序時(shí)出現了許多問(wèn)題,同時(shí)也發(fā)現了要編好一個(gè)程序就要有一個(gè)好的程序設計基礎。不僅設計程序,就是任何事都是這樣的。還有我們做事要持之以恒,迎難而上,這樣才能有所成就。由于專(zhuān)業(yè)的需要我還要繼續學(xué)習單片機,并且我相信我也會(huì )在這方面作出成績(jì),并把單片機靈活應用在學(xué)習和工作中。
評論