欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

基于51單片機(jī)智能計(jì)數(shù)器的設(shè)計(jì)

作者:未知   來(lái)源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月27日   【字體:

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

關(guān)閉窗口

相關(guān)文章