<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        pic單片機走馬燈動態顯示實驗報告

        作者:未知   來源:互聯網   點擊數:  更新時間:2014年08月17日   【字體:

        接上篇:pic單片機采用定時器中斷的閃燈實驗報告:http://www.thefapper.com/mcu/3996.html

        1.  實驗目的

        學習如何使用查找表

        2.  任務要求

        實現數字譯碼和動態顯示

        實現數碼管顯示的滾動效果

        用數碼管呈現實驗三中的外中斷

        實現數碼管數字顯示

        制作開機畫面

        3.  實驗器材

        單片機PIC16F886一片、LED燈一只、電阻任選、下載器(及相關的線)一個

        4.  實驗方案

         

        圖 1 硬件設計圖

        圖 2 數字譯碼動態顯示

        流程圖

        圖 3走馬燈流程圖

        5.  實驗現象分析

        先看到SEEd四個字母然后是0-9循環滾動,每次顯示4個數字或字符。電平變化中斷觸發后重新從0-9循環顯示。

        程序中用查詢表的辦法,循環選擇數碼管,循環選擇要顯示的數字和字符,利用視覺暫留以展現四個字符同時存在的錯覺。利用TMR0定時選擇改變顯示的四個字符,由此做成字符滾動的效果。而電平變化中斷的作用則是重新選擇字符,使數碼管重新從0123開始顯示。開機顯示其實只是在最開始時選擇了顯示的字符,由于這部分字符不在TMR0的循環里,所以只出現一次。

        整個實驗過程中有幾次硬件出現問題導致數碼管只顯示一個0,應該是接觸不良,不知道觸碰到哪里就又好了,這樣的事情發生了好幾次。其他的單步調試解決了,基本上沒什么問題。

        備注:開機的SEEd顯示是許雙杰的觀點,我們不知道開機顯示什么就也做了這個SEEd。

         

        附:

        #INCLUDE p16f886.inc  
        __config _CONFIG1, _INTOSCIO _WDT_OFF

        CONTEXT_SAVING UDATA_SHR
        W_TMP RES 1
        S_TMP RES 1
        OFFSET RES 1
        COFFSET RES 1
        NUM RES 1
        CNUM RES 1
        PA RES 1
        CNT RES 1
        LP0 RES 1
        LP1 RES 1
        ISBLACK RES 1

        RESET CODE 0x0
        PAGESEL INIT
        GOTO INIT

        ISR CODE 0x04;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOVWF W_TMP
        SWAPF STATUS,W
        MOVWF S_TMP
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        PB_INT
        BTFSC INTCON,RBIF
        CALL PORTB_INT
        TM0_INT
        BTFSC INTCON,T0IF
        CALL TMR0_INT;;;;;;;;;;;;;;;;;;;;;
        ;COMF ISBLACK
        ;BTFSS ISBLACK,0
        ;CALL DECRESE_COFFSET
        ;NOP
        ;BTFSC ISBLACK,0
        CALL BLACK
        BANKSEL INTCON
        BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中斷標志位
        BANKSEL TMR0
        MOVLW B'01111111'
        MOVWF TMR0
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
        SWAPF S_TMP,W
        MOVWF STATUS
        SWAPF W_TMP,F
        SWAPF W_TMP,W
        RETFIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        CODE
        INIT
        BANKSEL TMR0
        MOVLW B'01111111'
        MOVWF TMR0

        BANKSEL OPTION_REG
        MOVLW B'00000111'
        MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0設置為256分頻

        BANKSEL INTCON
        BSF INTCON,GIE
        BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;總中斷使能,TMR0中斷使能
        BSF INTCON,RBIE;;;;;;;;;;;;;;;;;;;;;;PORTB電平變化中斷使能

        BANKSEL TRISC
        CLRF TRISC
        BANKSEL PORTC
        MOVLW B'11111111'
        MOVWF PORTC
        BANKSEL TRISA
        CLRF TRISA
        BANKSEL PORTA
        CLRF PORTA
        BANKSEL ANSEL
        CLRF ANSEL
        BANKSEL TRISB
        MOVLW B'00100000'
        MOVWF TRISB
        BANKSEL IOCB
        MOVLW B'00100000'
        MOVWF IOCB
        BANKSEL PORTB
        CLRF PORTB
        BANKSEL WPUB
        MOVLW B'00100000'
        MOVWF WPUB

        BANKSEL OSCCON
        MOVLW B'00010011'
        MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振蕩器設置為125KHz,內部振蕩器

        BANKSEL COFFSET
        MOVLW D'22'
        MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10個數字

        BANKSEL CNUM
        MOVLW D'1'
        MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4個數碼管

        MOVF COFFSET,W
        MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暫時存儲COFFSET

        MOVLW D'4'
        MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;計數四次

        CLRF ISBLACK

        PAGESEL MAIN
        GOTO MAIN

        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;;;;;這里是函數區;;;;;;;;;;;;;;;;;
        SELECT:
        BANKSEL PORTA
        CLRF PORTA
        BANKSEL PORTC
        MOVLW B'11111111'
        MOVWF PORTC
        MOVLW LOW STABLE ;獲得TABLE的低8
        ADDWF NUM,F;TABLE值加上偏移量
        MOVLW HIGH STABLE;獲得TABLE的高5
        BTFSC STATUS,C;檢測是否翻頁
        ADDLW 1;翻頁則在TABLE的高5位加一
        MOVWF PCLATH;TABLE的高5位寫入PCLATH
        MOVF NUM,W;將需要調用的信號的地址寫入W
        CALL STABLE;
        MOVWF PORTC
        RETURN

        STABLE:
        MOVWF PCL;轉到偏移的地址
        RETLW B'11111110';1
        RETLW B'11111101';2
        RETLW B'11111011';3
        RETLW B'11110111';4

        WRITE:
        MOVLW LOW TABLE ;獲得TABLE的低8
        ADDWF OFFSET,F;TABLE值加上偏移量
        MOVLW HIGH TABLE;獲得TABLE的高5
        BTFSC STATUS,C;檢測是否翻頁
        ADDLW 1;翻頁則在TABLE的高5位加一
        MOVWF PCLATH;TABLE的高5位寫入PCLATH
        MOVF OFFSET,W;將需要調用的信號的地址寫入W
        CALL TABLE;
        MOVWF PORTA
        RETURN

        TABLE:
        MOVWF PCL;轉到偏移的地址
        RETLW B'01101111';9
        RETLW B'01111111';8
        RETLW B'00000111';7
        RETLW B'01111101';6
        RETLW B'01101101';5
        RETLW B'01100110';4
        RETLW B'01001111';3
        RETLW B'01011011';2
        RETLW B'00000110';1
        RETLW B'00111111';0
        RETLW B'00000000';NULL——11
        RETLW B'00000000';NULL——12
        RETLW B'00000000';NULL——13
        RETLW B'00000000';NULL——14
        RETLW B'01011110';d——15
        RETLW B'01111001';E——16
        RETLW B'01111001';E————17
        RETLW B'01101101';S——18
        RETLW B'00000000';NULL——19
        RETLW B'00000000';NULL——20
        RETLW B'00000000';NULL——21
        RETLW B'00000000';NULL——22

        SETORIGIN:
        MOVLW D'1'
        MOVWF CNUM
        MOVLW D'4'
        MOVWF CNT
        MOVF COFFSET,W
        MOVWF PA
        RETURN

        SETPA:
        MOVLW D'10'
        MOVWF PA
        RETURN

        SETCOFFSET:
        MOVLW D'10'
        MOVWF COFFSET
        RETURN

        DELAY: 
        MOVLW 01FH
        MOVWF LP0
        L0 MOVLW 01FH
        MOVWF LP1
        L1 DECFSZ LP1,F
        GOTO L1
        DECFSZ LP0,F
        GOTO L0
        RETURN

        DECRESE_COFFSET:
        DECF COFFSET
        BTFSC STATUS,Z
        CALL SETCOFFSET
        RETURN

        BLACK:
        BANKSEL PORTA
        CLRF PORTA
        CALL DELAY
        RETURN

        TMR0_INT:
        DECF COFFSET
        BTFSC STATUS,Z
        CALL SETCOFFSET
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COFFSET減一
        RETURN

        PORTB_INT:
        BANKSEL PORTB
        BCF PORTB,4
        BANKSEL INTCON
        BCF INTCON,RBIF;;;;;;;;;;;;;;;;;;;;;;;;;;PORTB中斷標志清除
        MOVLW D'10'
        MOVWF COFFSET

        RETURN

        ;;;;;;;;;;函數區到此為止;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        MAIN
        LOOP
        MOVF CNUM,W
        MOVWF NUM;數碼管
        MOVF PA,W
        MOVWF OFFSET;圖案

        CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;數碼管
        CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;圖案

        DECF PA
        BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;
        CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

        INCF CNUM

        DECF CNT
        BTFSC STATUS,Z
        CALL SETORIGIN

        GOTO LOOP
        END

        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮