⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 1602显示实验基本子程序
💻
字号:
;文件名:LCD1304.ASM
;程序功能:LCD循环显示   
    
    RS   bit P2.0
    RW   bit P2.1
    E    bit P2.2
    LCD  EQU P0                                   

 MAIN:                  ;主程序
   ACALL INIT_LCD       ;调用初始化子程序

loop1:                   ;循环
   MOV    LCD,#02H      ;写入显示起始地址      
   ACALL  WR_COMM       ;调用写指令子程序         
   MOV    DPTR,#LINE1    ;字符串地址送入DPTR
   MOV    R0,#16        ;字符串的字符数      
   ACALL  DISP_LCD       ;调用查表子程序
   ACALL  DELAY         ;调用延时子程序

   MOV    LCD,#0c0H     ;写入显示起始地址  
   ACALL  WR_COMM       ;调用写指令子程序
   MOV    DPTR,#LINE2   ;字符串地址送入DPTR           
   MOV    R0,#16        ;字符串的字符数
   ACALL  DISP_LCD       ;调用查表子程序
   ACALL  DELAY         ;调用延时子程序
   ACALL  CLS           ;调用清屏子程序

   MOV    LCD,#80H      ;写入显示起始地址        
   ACALL  WR_COMM       ;调用写指令子程序
   MOV    DPTR,#LINE3   ;字符串地址送入DPTR       
   MOV    R0,#16        ;字符串的字符数
   ACALL  DISP_LCD          ;调用查表子程序
   ACALL  DELAY         ;调用延时子程序

   MOV    LCD,#0C0H     ;写入显示起始地址   
   ACALL  WR_COMM       ;调用写指令子程序
   MOV    DPTR,#LINE4   ;字符串地址送入DPTR           
   MOV    R0,#16        ;字符串的字符数
   ACALL  DISP_LCD      ;调用查表子程序
   ACALL  DELAY         ;调用延时子程序
   ACALL  CLS           ;调用清屏子程序
   jmp loop1                

 INIT_LCD:              ;LCM初始化设定
   MOV   LCD,#00000001B ;清屏并光标复位
   ACALL WR_COMM        ;调用写指令子程序 
   MOV   LCD,#00111000B;设置8位、2行、5x7点阵 
   ACALL WR_COMM        ;调用写指令子程序 
   MOV   LCD,#00001111B ;显示器开,光标允许闪烁
   ACALL WR_COMM        ;调用写指令子程序
   MOV   LCD,#00000110B ;文字不动,光标自动右移 
   ACALL WR_COMM        ;调用写指令子程序	
   RET                                           

 WR_COMM:               ;写指令子程序
   CLR   RS             ;RS=0,选择指令寄存器
   CLR   RW             ;RW=0,选择写模式
   CLR   E              ;E=0,禁止读/写LCM
   ACALL CHECK_BF       ;调用判LCM忙碌子程序
   SETB  E              ;E=1,允许读/写LCM
   RET                                             

 CHECK_BF:             ;判断是否忙碌子程序
   MOV  LCD, #0FFH     ;此时不接受外来指令
   CLR  RS             ;RS=0,选择指令寄存器
   SETB RW             ;RW=1,选择读模式
   CLR  E              ;E=0,禁止读/写LCM
   NOP                 ;延时1微秒
   SETB E              ;E=1,允许读/写LCM
   JB  LCD.7,CHECK_BF  ;忙碌循环等待 
   RET                                          

 WR_DATA:               ;写数据子程序
   SETB RS              ;RS=1,选择数据寄存器
   CLR RW               ;RW=0,选择写模式
   CLR E                ;E=0,禁止读/写LCM
   ACALL CHECK_BF       ;调用判断忙碌子程序
   SETB E               ;E=1,允许读/写LCM
   RET                                           
   
DISP_LCD:             ;查表显示子程序
    MOV   R1,#0         ;查表地址初始值
LOOP: MOV A,R1        ;将表地址初值赋予A
      MOVC  A,@A+DPTR     ;查表将字符串内容送入A
      MOV   LCD,A         ;将字符串内容送入LCD
      INC   R1            ;地址值加1
      ACALL WR_DATA       ;调用写入数据子程序
      mov r5,#25
      acall d1
      DJNZ  R0,LOOP       ;判断查表是否6次?
      RET                 ;子程序返回               

  CLS:                  ;清显示屏
    MOV  LCD,#00000001B
    ACALL WR_COMM
    RET                                          

 DELAY:                 ;延时时间为3秒
    MOV   R5,#100
 D1:MOV  R6,#100
 D2:MOV  R7,#100
    DJNZ  R7,$
    DJNZ  R6,D2
    DJNZ  R5,D1
   RET                                        

  LINE1:   DB ' 0000--86300000 '
  LINE2:   DB 'Welcome to x511!'
  LINE3:   DB '1602  LCD  TEST!'
  LINE4:   db 'I LOVE YOU! ^_^ '                 

   END                    ;  程序结束



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -