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

📄 ydlcd.asm

📁 51单片机实验例程
💻 ASM
📖 第 1 页 / 共 2 页
字号:

;/********************************************************************************
;*  描述:                LCD1602 移动显示                                       *
;* 显示方式:                                                                   *
;* 1、LCD第一行显示:  BIG BIG WORLD                                            *
;*      LCD第二行显示:I LOVE PUZHONG                                             *
;* 2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示。                       *
;* 3、在指定位置停留1.6秒后,闪烁2次,清屏。                                    *
;* 4、反复循环上述显示方式。                                                    *                            
;********************************************************************************/
 
                                                                        
          LCD_RS  EQU P2.6                                              
          LCD_RW  EQU P2.5                                              
          LCD_EN  EQU P2.7                                              
                                                                        
;*******************************************************************    
             ORG  0000H                                                 
             AJMP  MAIN                                                 
             ORG  0030H                                                 
;*******************************************************************    
MAIN:                                                                   
             MOV SP,#60H                                                
             ACALL LCD_INIT           ;LCD初始化                        
MAIN1:                                                                  
             ACALL CLR_LCD           ;清LCD                             
             MOV A,#90H                ;在第一行第17列的位置            
             ACALL LCD_CMD                                              
             MOV DPTR,#LINE1       ;第一行字符串的起始地址送入DPTR。    
             ACALL WRITE                                                
             MOV A,#0D0H              ;在第二行第17列的位置             
             ACALL LCD_CMD                                              
             MOV DPTR,#LINE2       ;第二行字符串的起始地址送入DPTR。    
             ACALL WRITE                                                
                                                                        
             MOV  R3,#10H             ;向左移动16格                     
LOOPA:                                                                  
             MOV  A,#18H               ;字符同时左移一格                
             ACALL LCD_CMD                                              
             MOV  R5,#03H             ;延时375MS                        
             ACALL  DELAY125MS                                          
             DJNZ  R3,LOOPA                                             
                                                                        
             ACALL  DELAY4            ;延时1.6s                         
             ACALL  DELAY4                                              
             MOV  R4,#02H            ;设置闪烁次数                      
             ACALL  FLASH              ;开始闪烁                        
             AJMP  MAIN1                                                
                                                                        
LINE1:                                                                  
        DB " BIG BIG WORLD",00H                                       
LINE2:                                                                  
        DB " I LOVE PUZHONG",00H                                       
                                                                        
;***************************************************************        
;LCD初始化设定子程序                                                    
;***************************************************************        
LCD_INIT:                                                               
          ACALL DELAY5MS            ;延时15MS                           
          ACALL DELAY5MS            ;等待LCD电源稳定                    
          ACALL DELAY5MS                                                
                                                                        
          MOV A,#38H                   ;16*2显示,5*7点阵,8位数据      
          ACALL LCD_CMD_NC      ;不进行LCD忙检测                        
          ACALL DELAY5MS                                                
                                                                        
          MOV A,#38H                   ;16*2显示,5*7点阵,8位数据      
          ACALL LCD_CMD_NC      ;不进行LCD忙检测                        
          ACALL DELAY5MS                                                
                                                                        
          MOV A,#38H                   ;16*2显示,5*7点阵,8位数据      
          ACALL LCD_CMD_NC      ;不进行LCD忙检测                        
          ACALL DELAY5MS                                                
                                                                        
          MOV  A,#08H                 ;显示关                           
          ACALL LCD_CMD            ;进行LCD忙检测                       
                                                                        
          MOV A,#01H                  ;清除屏幕                         
          ACALL LCD_CMD            ;进行LCD忙检测                       
                                                                        
          MOV  A,#0CH                ;显示开,关光标                    
          ACALL LCD_CMD           ;进行LCD忙检测                        
                                                                        
          RET                                                           
;***************************************************************        
;清LCD子程序                                                            
;***************************************************************        
CLR_LCD:                                                                
           MOV A,#01H                ;清除屏幕                          
           ACALL LCD_CMD         ;进行LCD忙检测                         
           RET                                                          
                                                                        
;***************************************************************        
;写指令数据到LCD                                                        
;RS=L,RW=L,D0-D7=指令码,E=高脉冲                                       
;***************************************************************        
LCD_CMD:                                                                
          CALL  CHECKBUSY                                               
LCD_CMD_NC:                                                             
          CLR LCD_RS                                                    
          CLR LCD_RW                                                    
          MOV  P0,A                                                     
          SETB LCD_EN                                                   
          NOP                                                           
          NOP                                                           
          NOP                                                           
          NOP                                                           

⌨️ 快捷键说明

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