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