PIC单片机驱动LED数码管显示程序
;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1、2、3、4、5、6、7、8*******
;****http://www.51hei.com 单片机学习网经典程序已测试,led数码管共阴和共阳不同请修改码值转换表部分
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方式,并且时钟下降
;沿发送数据,与"74HC595当其SCLK从低到高电平
;跳变时,串行输入数据(DI)移入寄存器"的特点相对应
MOVLW 0X11 ;显示值寄存器赋初值,每个值占两个字节,
MOVWF XIANR ;从8开始显示
RETURN ;返回
;***************led数码管显示子程序******************
;SPI发送显示子模块
DISPLAY
TRANSMIT CLRF PORTA ;LACK送低电平,为锁存做准备
MOVWF SSPBUF ;启动发送
WAIT
BTFSS PIR1,SSPIF
GOTO WAIT ;等待发送结束
BCF PIR1,SSPIF ;清除中断标志
NOP
BSF PORTA,5 ;最后给一个锁存信号,代表一显示任务完成
RETURN
;*****************pic单片机驱动led显示程序的主程序开始***************
MAIN NOP
CALL INITIAL ;调用系统初始化子程序
LOOP MOVF XIANR,W
CALL CONVERT ;查出XIANR的显示段码值
CALL DISPLAY
DECF XIANR
DECF XIANR ;显示值减2,因为按字存放,按字节读取
MOVF XIANR,W
SUBLW 0X01
BTFSS STATUS,Z
GOTO LOOP ;若送完显示的数,则退出显示
HERE GOTO HERE
END
本程序完毕,本程序的c语言版本请打开 http://www.51hei.com/mcu/558.html
- 基于PIC单片机的智能型漏电断路器设计(11-25)
- 基于PIC单片机的无线实时监控防盗系统的设计与实现(11-18)
- PIC单片机键盘矩阵扫描C语言程序(12-02)
- PIC单片机控制第一个发光管闪动程序(12-02)
- PIC单片机驱动LCD12864液晶显示闪动字体程序(12-02)
- PIC单片机控制8位流水灯C语言程序(12-02)