CALL SEND_I
RETURN
;***********************清屏*******************************
CLEAR_P
MOVLW 1H ;清除显示
CALL SEND_I
RETURN
;***********************取数显示程序***********************
QUSHU
CLRF POINT ;取数地址低8位
CLRF POINT+1 ;取数地址高8位(因为一共需要(128/8)*64个数据)
CLRF POINT2 ;POINT的临时寄存器
CLRF POINT3 ;POINT+1的临时寄存器
MOVLW 02H ;整块屏分为上下两个小屏(每小屏共32行)
MOVWF COUNT3
MOVLW 80H ;上半屏的起始地址
MOVWF LCD_X
QUSHU1
MOVLW 80H ;每一行的第一个字节的地址
MOVWF LCD_Y
MOVLW 20H ;每一小屏共32行
MOVWF COUNT2
QUSHU2
MOVLW 10H ;每一行共16个字节(16*8=128)
MOVWF COUNT1
CALL WR_ZB ;调用写准备函数
QUSHU3
CALL TAB1 ;查表
CALL SEND_D ;写入到LCD的GDROM里
CLRF POINT3
INCF POINT,1 ;偏移地址加1,查找下一个数据
BTFSC STATUS,Z ;低8位是否有溢出
INCF POINT+1,1 ;有,高8位+1
DECFSZ COUNT1,1 ;是否写完一行16个字节
GOTO QUSHU3 ;否,返回去继续写
INCF LCD_Y,1 ;是,写下一行
DECFSZ COUNT2,1 ;是否写完32行
GOTO QUSHU2 ;否,继续写
MOVLW 88H ;是,写下半屏
MOVWF LCD_X
DECFSZ COUNT3,1 ;是否写完下半屏
GOTO QUSHU1 ;否,继续写
;是,开显示
MOVLW 36H ;扩展指令,图形显示开
CALL SEND_I
MOVLW 30H ;基本指令
CALL SEND_I
RETURN
;************************送数据到LCD***********************
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
;**********************************************************
SEND_D
MOVWF TEMP1 ;暂存数据
CALL CHK_BUSY ;判断总线是否忙
BSF RS
BCF RW
MOVFW TEMP1
MOVWF PORTD ;送出数据
BSF E
NOP
NOP
BCF E
RETURN
;************************送命令到LCD***********************
;写指令子程序
;RS=0,RW=0,E=高脉冲,D0-D7=指令码
;**********************************************************
SEND_I
MOVWF TEMP1 ;暂存命令
CALL CHK_BUSY ;判断总线是否忙
BCF RS
BCF RW
MOVFW TEMP1
上一页 [1] [2] [3] [4] 下一页
本文关键字:程序 中文字库 PIC单片机,单片机-工控设备 - PIC单片机