PIC單片機驅動LED數(shù)碼管顯示程序
;*****該程序用于驅動led數(shù)碼管顯示,在8個LED數(shù)碼管上依次顯示數(shù)字1、2、3、4、5、6、7、8*******
;****http://www.51hei.com 單片機學習網(wǎng)經(jīng)典程序已測試,led數(shù)碼管共陰和共陽不同請修改碼值轉換表部分
LIST P=18F458
INCLUDE "P18F458.INC"
;所用的寄存器
XIANR EQU 0X20
ORG 0X00
GOTO MAIN
ORG 0X30
;****************以下為碼值轉換表********************
CONVERT ADDWF PCL,1
RETLW 0XC0 ;0,顯示段碼與具體的硬件連接有關
RETLW 0XF9 ;1
RETLW 0XA4 ;2
RETLW 0XB0 ;3
RETLW 0X99 ;4
RETLW 0X92 ;5
RETLW 0X82 ;6
RETLW 0XD8 ;7
RETLW 0X80 ;8
RETLW 0X90 ;9
RETLW 0X88 ;A
RETLW 0X83 ;B
RETLW 0XC6 ;C
RETLW 0XA1 ;D
RETLW 0X86 ;E
RETLW 0X8E ;F
RETLW 0X7F ;"."
RETLW 0XBF ;"-"
RETLW 0X89 ;H
RETLW 0XFF ;DARK
RETURN
;**************初始化子程序*****************
INITIAL
BCF TRISA,5 ;置RA5為輸出方式,以輸出鎖存信號
BCF TRISC,5
BCF TRISC,3 ;設置SCK與SDO為輸出方式
BCF INTCON,GIE ;關閉所有中斷
MOVLW 0XC0
MOVWF SSPSTAT ;設置SSPSTAT寄存器
MOVLW 0X30
MOVWF SSPCON1 ;設置SPI的控制方式,允許SSP方式,并且時鐘下降
;沿發(fā)送數(shù)據(jù),與"74HC595當其SCLK從低到高電平
;跳變時,串行輸入數(shù)據(jù)(DI)移入寄存器"的特點相對應
MOVLW 0X11 ;顯示值寄存器賦初值,每個值占兩個字節(jié),
MOVWF XIANR ;從8開始顯示
RETURN ;返回
;***************led數(shù)碼管顯示子程序******************
;SPI發(fā)送顯示子模塊
DISPLAY
TRANSMIT CLRF PORTA ;LACK送低電平,為鎖存做準備
MOVWF SSPBUF ;啟動發(fā)送
WAIT
BTFSS PIR1,SSPIF
GOTO WAIT ;等待發(fā)送結束
BCF PIR1,SSPIF ;清除中斷標志
NOP
BSF PORTA,5 ;最后給一個鎖存信號,代表一顯示任務完成
RETURN
;*****************pic單片機驅動led顯示程序的主程序開始***************
MAIN NOP
CALL INITIAL ;調用系統(tǒng)初始化子程序
LOOP MOVF XIANR,W
CALL CONVERT ;查出XIANR的顯示段碼值
CALL DISPLAY
DECF XIANR
DECF XIANR ;顯示值減2,因為按字存放,按字節(jié)讀取
MOVF XIANR,W
SUBLW 0X01
BTFSS STATUS,Z
GOTO LOOP ;若送完顯示的數(shù),則退出顯示
HERE GOTO HERE
END
本程序完畢,本程序的c語言版本請打開 http://www.51hei.com/mcu/558.html
c語言相關文章:c語言教程
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論