×
单片机 > 单片机程序设计 > 详情

PIC单片机LCD1602显示

发布时间:2020-06-19 发布时间:
|

PIC 单片机 LCD1602显示本站网址和电话

;************************************
PCL     EQU 2H   ;定义程序存储器低字节地址
STATUS  EQU 3H   ;定义状态寄存器地址
PORTD   EQU 8H   ;定义RD口数据寄存器地址

PORTC   EQU 7H   ;定义RC口数据寄存器地址
TRISD   EQU 88H  ;定义RD口方向控制寄存器地址
TRISC   EQU 87H  ;定义RC口方向控制寄存器地址
ADCON1  EQU 9FH  ;定义ADC模块控制寄存器1的地址
;********************
Z       EQU 2    ;定义0状态位的位地址
RP0     EQU 5    ;定义页选位RP0的位地址
;*********************
RS      EQU 2    ;LCD寄存器选择信号脚定义在RD.2脚
RW      EQU 1    ;LCD读/写信号脚定义在RD.1脚
E       EQU 0    ;LCD片选信号脚定义在RD.0脚
COUNT   EQU 24H  ;定义计数寄存器地址
TMP1    EQU 25H  ;定义临时寄存器地址
;**********************
  ORG 000H
  NOP            ;放置一条ICD必需的空操作指令
  GOTO MAIN
  ORG 0008H
;******************************************************
TABLE            ;取第一行的显示码 WWW.PICAVR.COM 
  ADDWF PCL,1    ;地址偏移量加当前PC值
  RETLW 20H      ;空格
  RETLW 57H      ;W
  RETLW 57H      ;W
  RETLW 57H      ;W
  RETLW 2EH      ;.


  RETLW 50H      ;P
  RETLW 49H      ;I
  RETLW 43H      ;C
  RETLW 41H      ;A
  RETLW 56H      ;V
  RETLW 52H      ;R

  RETLW 2EH      ;.
  RETLW 43H      ;C
  RETLW 4FH      ;O
  RETLW 4DH      ;M
  RETLW 20H      ;空格
  RETLW 00H
;-------------------- ----------------------------------
TABLE1           ;取第二行的显示码TEL:020-86307727
  ADDWF PCL,1    ;地址偏移量加当前PC值                                                  
  RETLW 54H   ;T 
  RETLW 45H   ;E                             
  RETLW 4CH      ;L
  RETLW 3AH      ;:

  RETLW 30H   ;0
  RETLW 32H   ;2
  RETLW 30H   ;0

  RETLW 0B0H     ;-
  RETLW 38H   ;8
  RETLW 36H      ;6
  RETLW 33H      ;3
  RETLW 30H      ;0
  RETLW 37H      ;7
  RETLW 37H      ;7
  RETLW 32H      ;2
  RETLW 37H      ;7
  RETLW 20H      ;空格
  RETLW 00H
;*******************************************************
MAIN

  BSF   STATUS,RP0          
  MOV LW 07H
  MOV WF ADCON1            ;设置RA口全部为普通数字IO口
  MOV LW 00H
  MOV WF TRISD             ;定义RD口,RC口全部为输出
  MOV WF TRISC
  BCF   STATUS,RP0

  CALL  DELAY             ;调用廷时,刚上电LCD复位不一定有PIC快
  MOV LW 01H
  MOV WF PORTC             ;清屏
  CALL  ENABLE
  MOV LW 38H
  MOV WF PORTC             ;8位2行5x7点阵
  CALL  ENABLE
  MOV LW 0FH               ;显示器开、光标开、闪烁开
  MOV WF PORTC
  CALL  ENABLE
  MOV LW 06H               ;文字不动,光标自动右移
  MOV WF PORTC             
  CALL  ENABLE

  MOV LW 80H
  MOV WF PORTC             ;显示位置
  CALL  ENABLE


  CALL  WRITE1            ;调用送第一行数子程序“WWW.PICAVR.COM"
  MOV LW 0C0H
  MOV WF PORTC             ;第一行的位置       
  CALL  ENABLE
  CALL  WRITE2            ;调用送第二行数子程序“TEL:020-86307727"
  CALL  ENABLE
  GOTO $
  
;***********************
WRITE1
  CLRF  COUNT          ;送第一行数字程序
WRITE_A
  MOV FW COUNT
  CALL  TABLE
  MOV WF TMP1
  CALL  WRITE3
  INCF  COUNT,1
  MOV FW TMP1
  XORLW 00H
  BTFSS STATUS,Z
  GOTO  WRITE_A
  RETLW 0
;*************************
WRITE2                 ;送第二行数子程序
  CLRF  COUNT
WRITE2_A
  MOV FW COUNT
  CALL  TABLE1
  MOV WF TMP1
  CALL  WRITE3
  INCF  COUNT,1
  MOV FW TMP1
  XORLW 00H
  BTFSS STATUS,Z
  GOTO  WRITE2_A
  RETLW 0
;**************************
WRITE3                 ;送数据到LCD子程序
  MOV WF PORTC
  BSF   PORTD,RS
  BCF   PORTD,RW
  BCF   PORTD,E
  CALL  DELAY
  BSF   PORTD,E
  RETLW 0
;*******************************************
ENABLE
  BCF   PORTD,RS       ;写入控制命令的子程序
  BCF   PORTD,RW
  BCF   PORTD,E
  CALL  DELAY
  BSF   PORTD,E
  RETLW 0
;********************************************
DELAY                       
                             ;子程序名,也是子程序入口地址
       MOV lw   0ffh          ;将外层循环参数值FFH经过W
       MOV wf   20h           ;送入用作外循环变量的20H单元
lp0    MOV lw   0ffh          ;将内层循环参数值FFH经过W
       MOV wf   21h           ;送入用作内循环变量的21H单元
lp1    decfsz  21h,1         ;变量21H内容递减,若为0跳跃
       goto    lp1           ;跳转到LP1处
       decfsz  20h,1         ;变量20H内容递减,若为0跳跃
       goto    lp0           ;跳跃到LP0处
       return                ;返回主程序
       end                   ;源程序结束


关键字:PIC单片机  LCD1602显示 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些