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

📄 lcd1602-4bit.lst

📁 1602显示液晶四位并口驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  LCD1602_4BIT                                                         01/06/2007 11:24:02 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN LCD1602-4BIT.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE LCD1602-4BIT.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************
                       2     ;*                                                                  *
                       3     ;* ME500单片机开发系统演示程序 - LCD1602 4位数据线控制方式          *
                       4     ;*                                                                  *
                       5     ;* LCD1602显示                                                      *
                       6     ;*                                                                  *
                       7     ;* 邮箱:  gguoqing@willar.com                                       *
                       8     ;* 网站: http://www.willar.com                                     *
                       9     ;* 作者: gguoqing                                                  *
                      10     ;* 时间: 2007/01/03                                                *
                      11     ;*                                                                  *
                      12     ;*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved  *
                      13     ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
                      14     ;*                                                                  *
                      15     ;********************************************************************
                      16     ;*                                                                  *
                      17     ;* 描述:                                                           *
                      18     ;*    LCD1602可以分为8位和4位控制方式,8位控制方式是用D0-D7数据线   *
                      19     ;* 来传送控制命令及数据。4位控制方式是用D4-D7数据线来传送控制命令   *
                      20     ;* 及数据。使用4位数据线做控制时,需要分两次来传送,先送出高4位数   *
                      21     ;* 据,再送出低4位数据。可以节省单片机的4根端口线。                 *
                      22     ;*                                                                  *
                      23     ;********************************************************************
                      24     
  0040                25               HDATA    EQU  40H
  0041                26               LDATA    EQU  41H 
                      27      
  00A0                28               LCD_RS   EQU  P2.0                                             
  00A1                29               LCD_RW   EQU  P2.1                                              
  00A2                30               LCD_EN   EQU  P2.2 
                      31               
                      32     ;**********************************************************
                      33     
0000                  34               ORG   0000H
0000 020030           35               LJMP  MAIN
0030                  36               ORG   0030H
                      37               
                      38     ;**********************************************************
0030                  39     MAIN:
0030 758170           40               MOV  SP,#70H
                      41     
0033 11B4             42               ACALL  LCD_INIT
                      43                      
0035 7480             44               MOV  A,#80H             ;显示在第一行  
0037 9000F7           45               MOV  DPTR,#CHAR1                                               
003A 11A8             46               ACALL WR_STRING         ;显示 WELCOME TO                
003C 74C0             47               MOV  A,#0C0H            ;显示在第二行           
003E 1148             48               ACALL  LCD_CMD                                                 
0040 900107           49               MOV  DPTR,#CHAR2        ;显示 WWW.WILLAR.COM
0043 11A8             50               ACALL  WR_STRING
                      51     
0045 80FE             52               JMP  $
                      53     
0047 22               54               RET
                      55               
                      56     ;**********************************************************
                      57              
                      58     ;写指令数据到LCD                                                
A51 MACRO ASSEMBLER  LCD1602_4BIT                                                         01/06/2007 11:24:02 PAGE     2

                      59     ;RS=L,RW=L,D0-D7=指令码,E=高脉冲    
                      60                                         
                      61     ;**********************************************************    
0048                  62     LCD_CMD:                                                                 
0048 1186             63               CALL  CHECKBUSY                                               
004A                  64     LCD_CMD_NC:                                                              
004A C2A0             65               CLR LCD_RS                                                     
004C C2A1             66               CLR LCD_RW
004E 119A             67               CALL  CHANGE
                      68                                                                            
0050 854080           69               MOV  P0,HDATA        ;发送高四位                                              
0053 D2A2             70               SETB LCD_EN                                                    
0055 11F1             71               CALL  DELAYNOP                                                          
0057 C2A2             72               CLR  LCD_EN
0059 11F1             73               CALL  DELAYNOP
                      74     
005B 854180           75               MOV  P0,LDATA        ;发送低四位                                           
005E D2A2             76               SETB LCD_EN                                                    
0060 11F1             77               CALL  DELAYNOP                                                          
0062 C2A2             78               CLR  LCD_EN
0064 11F1             79               CALL  DELAYNOP
                      80                                                                           
0066 22               81               RET                                                            
                      82                   
                      83     ;***************************************************************
                      84              
                      85     ;写显示数据到LCD                                                         
                      86     ;RS=H,RW=L,D0-D7=数据,E=高脉冲 
                      87                                              
                      88     ;***************************************************************         
0067                  89     LCD_WDATA:                                                               
0067 1186             90               CALL  CHECKBUSY                                               
0069 D2A0             91               SETB  LCD_RS                                                   
006B C2A1             92               CLR   LCD_RW                                                               
006D 119A             93               CALL  CHANGE
                      94                                                                                            
006F 854080           95               MOV  P0,HDATA        ;发送高四位                                           
0072 D2A2             96               SETB LCD_EN                                                    
0074 11F1             97               CALL  DELAYNOP                                                          
0076 C2A2             98               CLR  LCD_EN
0078 11F1             99               CALL  DELAYNOP
                     100     
007A 854180          101               MOV  P0,LDATA        ;发送低四位                                               
007D D2A2            102               SETB LCD_EN                                                    
007F 11F1            103               CALL  DELAYNOP                                                          
0081 C2A2            104               CLR  LCD_EN
0083 11F1            105               CALL  DELAYNOP                                                  
0085 22              106               RET                                                            
                     107     ;***************************************************************
                     108              
                     109     ; 检测LCD控制器忙状态                                                     
                     110     ; 读数据                                                                  
                     111     ; RS=L,RW=H,E=H,输出:D0-D7=数据    
                     112                                           
                     113     ;***************************************************************         
0086                 114     CHECKBUSY:                                                               
0086 C0E0            115               PUSH  ACC                                                      
0088 7580FF          116               MOV  P0,#0FFH                                                  
008B C2A0            117               CLR   LCD_RS                                                   
008D D2A1            118               SETB  LCD_RW                                                   
008F D2A2            119               SETB  LCD_EN                                                   
0091                 120     BUSYLOOP:                                                                
0091 00              121               NOP                                                            
0092 2087FC          122               JB P0.7,BUSYLOOP                                               
0095 C2A2            123               CLR  LCD_EN                                                    
0097 D0E0            124               POP  ACC                                                       
A51 MACRO ASSEMBLER  LCD1602_4BIT                                                         01/06/2007 11:24:02 PAGE     3

0099 22              125               RET
                     126     
                     127     ;***************************************************************
                     128     
                     129     ; 数据分离子程序
                     130     
                     131     ;***************************************************************
009A                 132     CHANGE:
009A F541            133              MOV  LDATA,A
009C 54F0            134              ANL  A,#0F0H
009E F540            135              MOV  HDATA,A       ;得到高4位数据
                     136              
00A0 E541            137              MOV  A,LDATA
00A2 C4              138              SWAP  A
00A3 54F0            139              ANL  A,#0F0H
00A5 F541            140              MOV  LDATA,A       ;得到低4位数据
00A7 22              141              RET
                     142              
                     143     ;***************************************************************

⌨️ 快捷键说明

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