• 歡迎光臨東莞市飛江電子科技有限公司官網!
    全國咨詢熱線

    13926563901

    18925580829

    飛江淘寶店鋪

    首頁>技術資料>PIC單片機

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

    發布時間:2018-03-26   瀏覽量:

    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

    黑人粗大无码AV人妻一区