專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

pic單片機(jī)驅(qū)動(dòng)led數(shù)碼管顯示程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2008年08月09日   【字體:

;*****該程序用于驅(qū)動(dòng)led數(shù)碼管顯示,在8個(gè)LED數(shù)碼管上依次顯示數(shù)字1、2、3、4、5、6、7、8*******
;****http://www.torrancerestoration.com 單片機(jī)學(xué)習(xí)網(wǎng)經(jīng)典程序已測(cè)試,led數(shù)碼管共陰和共陽(yáng)不同請(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語(yǔ)言版本請(qǐng)打開 http://www.torrancerestoration.com/mcu/558.html

關(guān)閉窗口