在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于51單片機(jī)智能計數(shù)器的設(shè)計

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

            作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
            一、任務(wù)以及要求
            對外部信號脈沖進(jìn)行計數(shù),并將脈沖個數(shù)顯示出來。基本要求:計數(shù)至少65536個脈沖,并將脈沖個數(shù)顯示出來。

            二、方案選擇
            用中斷方式進(jìn)行計數(shù),利用定時器/計數(shù)器0的方式2。使用查尋方式進(jìn)行計數(shù),利用定時器/計數(shù)器0的方式1。本程序使用第一方案進(jìn)行設(shè)計,并能實現(xiàn)計數(shù)99999999次

            三、系統(tǒng)硬件設(shè)計
            設(shè)計思路
            1)、通過按鈕產(chǎn)生脈沖信號
            2)、由于按鈕按合會出現(xiàn)機(jī)械彈跳過程,使得電平跳變發(fā)生多次。為了克服按鈕抖動而產(chǎn)生的誤計數(shù),接入脈沖消抖電路,克服按鈕的抖動現(xiàn)象。
            3)、脈沖計數(shù)可采用定時器/計數(shù)器來實現(xiàn)。
            4)、選擇8279作為6位LED顯示器的譯碼驅(qū)動電路,實現(xiàn)累進(jìn)計數(shù)。
            2、硬件電路組成:
            根據(jù)硬件設(shè)計思路,將用到單片機(jī)8031、按紐、脈沖消抖電路,8279芯片電路、6位LED顯示器電路用連接線接好。其中按鈕脈沖消抖電路由按鈕產(chǎn)生的電平跳變信號經(jīng)由兩個與非門構(gòu)成的RS觸發(fā)器進(jìn)行消抖。根據(jù)RS觸發(fā)器的工作原理,當(dāng)兩個輸入端均為1時,觸發(fā)器輸出狀態(tài)不變;當(dāng)按鈕在兩個觸點間抖動時,RS觸發(fā)器的兩個輸入端均為高電平,觸發(fā)器輸出電平不變;僅當(dāng)按鈕實現(xiàn)一次完整的按合過程后,觸發(fā)器的輸出端才產(chǎn)生一個脈沖,從而消除了按鈕按合是抖動的影響。數(shù)據(jù)顯示采用8279芯片連接LED數(shù)碼管實現(xiàn)。應(yīng)根據(jù)單片機(jī),確定8279與單片機(jī)和與6位LED顯示器的接口方式,以及8279芯片的端口地址(8279數(shù)據(jù)口地址為0000H,8279命令/狀態(tài)口地址為0001H)
            系統(tǒng)程序設(shè)計
            設(shè)計思路:
            以定時器/計數(shù)器0來對脈沖進(jìn)行計數(shù),數(shù)據(jù)用8279芯片連接LED數(shù)碼管實現(xiàn)累進(jìn)顯示。程序分為主程序和中斷服務(wù)程序兩部分。主程序主要實現(xiàn)初始化、循環(huán)顯示。而累計數(shù)在中斷服務(wù)程序中完成。
            主程序設(shè)計:
            1)、實現(xiàn)初始化
            包括設(shè)置堆棧指針、8279芯片初始化、定時器/計數(shù)器0初始化、RAM區(qū)初始化,以及開中斷、啟動定時期/計數(shù)器0等。
            2)、數(shù)據(jù)循環(huán)顯示
            首先要編寫8279初始化子程序和顯示一個字符的基本子程序。其中8279初始化子程序為P8279,該子程序功能包括設(shè)置8279的工作方式(8個字符顯示,左入口,編碼掃描鍵盤,雙鍵鎖定)以及寫相關(guān)的命令字(設(shè)置分頻系數(shù)為31、清除LED顯示等)。顯示一個字符的子程序為DISLED,該子程序的入口條件為:工作就寄存器R4中存放待顯示字符的LED數(shù)碼管管號。另在工作寄存器R5中,以非壓縮BCD碼的形式存放帶顯示字符。一般情況下,如要顯示0~9,則在R5中依次置00H~09H,程序中用查表的方法找到待顯示字符所對應(yīng)的“段碼”。
               顯示子程序DISP的設(shè)計思想是:待顯示的六位數(shù)據(jù)分別以壓縮BCD碼的形式存放在67H、68H、69H和70H四個單元中,該子程序的功能是依次將存放在67H、68H、69H和70H中的八個BCD碼分別送0#~7#數(shù)碼管顯示。先將其拆開為個位、十位、百位、千位、萬位、十萬位、百萬位和千萬位八個非壓縮BCD碼的形式,隨之先后送工作寄存器R5,再三次調(diào)用DISLED子程序。由于在工作寄存器R4中已設(shè)置好該數(shù)據(jù)顯示的管號,故即可在0#號管和1#號管實現(xiàn)個位和十位數(shù)據(jù)的顯示。第二次循環(huán)中,又可在2#號管和3#號管實現(xiàn)百位和千位數(shù)據(jù)的顯示,第三次循環(huán)中,可在4#號管和5#號管實現(xiàn)萬位和十萬位數(shù)據(jù)的顯示,第四次循環(huán)中,可在6#號管和8#號管實現(xiàn)百萬位和千萬位數(shù)據(jù)的顯示。

               3)、主程序清單:
                 ORG 0000H
            LJMP MAIN
            ORG 000BH
            LJMP CTCO
            ORG 0030H
            MAIN: MOV TMOD, #60H ;設(shè)定時器/計數(shù)器1為計數(shù)方式,工作方式2
            MOV TH1,#0FFH ;每產(chǎn)生一個脈沖即產(chǎn)生中斷
            MOV TL1,#0FFH
            MOV67H,#00H
            MOV 68H,#00H ;計數(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個字符顯示,左入口;編碼掃描鍵盤,雙鍵鎖定)
            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è)計
            1)、中斷服務(wù)程序設(shè)計思路:
               定時器/計數(shù)器0設(shè)置為工作方式2,并設(shè)計時器處值為FFH。這樣只要來一個脈沖,計時器就溢出而產(chǎn)生中斷,進(jìn)入中斷程序使67H、68H、69H、70H四個計數(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
                    CLRC
            DA A
                    MOV 69H,A
                    MOVA,68H
                    ADDCA,#00H
                    CLRC
                    DAA
                    MOV68H,A
                    MOVA,67H
                    ADDCA
                    MOV67H,A
                    POP ACC
                    RETI


            實習(xí)心得
               通過本次單片機(jī)實習(xí)徹底掌握了MCS-51、8279的結(jié)構(gòu)及工作原理,通過它們使我能夠完成智能計數(shù)器,對智能計數(shù)器的工作原理也有了更深的體會和掌握。學(xué)會了巧妙的編程方法,掌握了定時器/計數(shù)器的應(yīng)用。
               就連我自己也不知道為什么,一開始我就對單片機(jī)很感興趣。我覺得每每聽萬一堂課,我都有一種說不出的高興,有時也會發(fā)愁,因為課程越往后越難學(xué)而且講課進(jìn)度再加快,但我沒有退縮,每周堅持看單片機(jī)。就這樣一步步走到課程設(shè)計,也許是沒全身心投入,搞了兩天程序才搞出來,結(jié)果上機(jī)時還是存在著錯誤,和同組人劉歡討論和修改后才完成了“智能計數(shù)器”這個程序的編寫。為了更好的完成軟硬件的結(jié)合,我查閱了相關(guān)資料,最終得到了解決。 轉(zhuǎn)眼間,一周的課程設(shè)計過去了。經(jīng)過這么一個過程我更加深刻的認(rèn)識了單片機(jī)。單片機(jī)是編程語言中非常重要的一種。它的功能十分強(qiáng)大,而且應(yīng)用廣泛。我在編寫這個程序時出現(xiàn)了許多問題,同時也發(fā)現(xiàn)了要編好一個程序就要有一個好的程序設(shè)計基礎(chǔ)。不僅設(shè)計程序,就是任何事都是這樣的。還有我們做事要持之以恒,迎難而上,這樣才能有所成就。由于專業(yè)的需要我還要繼續(xù)學(xué)習(xí)單片機(jī),并且我相信我也會在這方面作出成績,并把單片機(jī)靈活應(yīng)用在學(xué)習(xí)和工作中。


            評論


            技術(shù)專區(qū)

            關(guān)閉