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

📄 lcd.lst

📁 1602显示测试程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     1


DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN LCD.O
ASSEMBLER INVOKED BY: C:\OMF51\BIN\A51.EXE D:\C51\LCD1602\LCD.ASM DB SB XR RB(0) PR(LCD.LST) OJ(LCD.O) 

LOC  OBJ            LINE     SOURCE

                       1     ;----------------------------------------
                       2     ;               LCD DISPLAYER
                       3     ;----------------------------------------
                       4     ;----------------INSTRUCTION------------
                       5     ;--命令数据控制:LCD_RS->P1.0
                       6     ;--读写控制端口:LCD_RW->P1.1
                       7     ;--选通控制端口:LCD_EN->P1.2
                       8     ;--信号灯控制口:COMM_STATE->P3.2
                       9     ;--结束灯控制口:COMM_END->P1.7
                      10     ;--按键开关端口:KEY->P1.6
                      11     ;--P0口对应LCD数据口
                      12     
                      13     ;--命令缓冲区位于:08H           1位
                      14     ;--参数长度缓冲区位于:09H,其中高半位为发送长度,低半位为接受长度
                      15     ;--发送参数缓冲区位于:0A-11H    8位
                      16     ;--键盘缓冲区位于:12H-13H               2位
                      17     ;--接受参数缓冲区位于:14H-1BH   8位
                      18     ;--光标位置存储区位于:1CH      1位
                      19     ;--KEY_STATE=01H为按键状态
                      20     ;--SHIFT_STATE=02H为光标移动状态
                      21     ;--RETURN_STATE=03H为光标返回状态
                      22     ;LCD_CH=04H
                      23     ;LCD_CGRAM_ADD=05H,LCD_DDRAM_ADD=06H为地址寄存区
                      24     ;LCD_RAM_RD=07H为读出数据状态缓冲区
                      25     ;LCD_RAM_WR=08H为写入数据显示缓冲区
                      26     ;LCD_DISP_RAM=09H~29H为显示数据存储区
                      27     ;LCD_BUSY=2AH为检测状态位
                      28     ;MODE_NU=2BH为
                      29     ;--定义LCD控制端口
  0090                30             LCD_RS  EQU     P1.0
  0091                31             LCD_RW  EQU     P1.1    
  0092                32             LCD_EN  EQU     P1.2
                      33     
                      34     ;--定义通讯端口
  00B2                35             COMM_STATE      EQU     P3.2
  0097                36             COMM_END        EQU     P1.7
  0096                37             KEY             EQU     P1.6
                      38     
                      39     ;--定义变量
  0000                40             KEY_STATE               EQU     00H
  0001                41             SHIFT_STATE             EQU     01H
  0002                42             RERURN_STATE    EQU     02H
                      43     ;--定义RAM
  001C                44             CURSOR_POS              EQU     1CH
                      45     ;       LCD_CH          EQU     30H
                      46     ;       LCD_CGRAM_ADD   EQU     31H
                      47     ;       LCD_DDRAM_ADD   EQU     32H
                      48     ;       LCD_RAM_RD              EQU     33H
                      49     ;       LCD_RAM_WR              EQU     35H     ;33H 数据暂存区,35H~55H为显示数据存储区
  001D                50             LCD_CH          EQU     1DH     
  001E                51             LCD_CGRAM_ADD   EQU     1EH
  001F                52             LCD_DDRAM_ADD   EQU     1FH
  0020                53             LCD_RAM_RD              EQU     20H
  0021                54             LCD_RAM_WR              EQU     21H
                      55     ;--主程序
0000                  56             ORG     0000H
0000 020003           57             LJMP    MAIN
0003                  58     MAIN:
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     2

0003 758130           59             MOV     SP,#30H
0006 C2B2             60             CLR     COMM_STATE
0008 C297             61             CLR     COMM_END
000A                  62     KEYSCAN:
000A 2096FD           63             JB      KEY,KEYSCAN
000D 120030           64             LCALL   LCD_INIT                ;--LCD初始化
0010 D2B2             65             SETB    COMM_STATE
                      66     
0012 9002C3           67             MOV     DPTR,#EXP_LOGO  
0015 120206           68             LCALL   DISPLAY_STRING
0018 1202A9           69             LCALL   DL1S
                      70             
001B C2B2             71             CLR     COMM_STATE
001D D297             72             SETB    COMM_END
001F 7400             73             MOV     A,#0
0021 1201B3           74             LCALL   SET_DDRAM
                      75             
0024 9002D7           76             MOV     DPTR,#INIT_LOGO ;---初始化HOST
0027 120206           77             LCALL   DISPLAY_STRING
002A 1202A9           78             LCALL   DL1S
                      79     
002D 020003           80             LJMP    MAIN
                      81     ;----------------SUB---------------------
                      82     ;--------------LCD初始化------------------
0030                  83     LCD_INIT:
0030 C290             84             CLR     LCD_RS
0032 C291             85             CLR     LCD_RW
0034 120054           86             LCALL   CLR_LCD         ;---清屏
                      87     
0037 758006           88             MOV     P0,#00000110B   ;---设置光标移动方向,并指定显示是否移动.(增量方式,不移动)
003A D292             89             SETB    LCD_EN
003C 12027B           90             LCALL   DL40US
003F C292             91             CLR     LCD_EN
                      92     
0041 12012F           93             LCALL   HIDE_CURSOR             ;---设置显示开关(显示),光标开关(关),字符闪烁(关)
                      94     
0044 758038           95             MOV     P0,#00111000B   ;---功能设置.(8位,2行,5*7字体)
0047 D292             96             SETB    LCD_EN
0049 12027B           97             LCALL   DL40US
004C C292             98             CLR     LCD_EN
                      99     
004E 7400            100             MOV     A,#0                    ;---设置DDRAM地址(0)
0050 1201B3          101             LCALL   SET_DDRAM
0053 22              102             RET
                     103     ;---------------清屏显示------------------
0054                 104     CLR_LCD:                        ;数据指针清零,所有显示清零
0054 00              105             NOP                     ;清屏
0055 C290            106             CLR     LCD_RS
0057 C291            107             CLR     LCD_RW
0059 758001          108             MOV     P0,#00000001B
005C D292            109             SETB    LCD_EN
005E 120285          110             LCALL   DL2MS
0061 C292            111             CLR     LCD_EN
0063 120285          112             LCALL   DL2MS
0066 22              113             RET
                     114     ;-------------设置光标返回-------------
0067                 115     SET_CURSOR_RETURN:      ;数据指针清零,光标退回初始状态
0067 00              116             NOP
0068 C290            117             CLR     LCD_RS
006A C291            118             CLR     LCD_RW
006C 758002          119             MOV     P0,#00000010B
006F D292            120             SETB    LCD_EN
0071 120285          121             LCALL   DL2MS
0074 C292            122             CLR     LCD_EN
0076 120285          123             LCALL   DL2MS
0079 22              124             RET
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     3

                     125     ;--------------设置输入方式----------------
007A                 126     SET_LCD_IN:                     ;当读或写一个字符后,地址指针加一且光标加一,整屏显示不移动
007A 00              127             NOP
007B C290            128             CLR     LCD_RS
007D C291            129             CLR     LCD_RW
007F 758006          130             MOV     P0,#00000110B
0082 D292            131             SETB    LCD_EN
0084 12027B          132             LCALL   DL40US
0087 C292            133             CLR     LCD_EN
0089 12027B          134             LCALL   DL40US
008C 22              135             RET
008D                 136     SET_INPUT_MODE1:
008D 00              137             NOP
008E C290            138             CLR     LCD_RS
0090 C291            139             CLR     LCD_RW
0092 758006          140             MOV     P0,#00000110B
0095 D292            141             SETB    LCD_EN
0097 12027B          142             LCALL   DL40US
009A C292            143             CLR     LCD_EN
009C 12027B          144             LCALL   DL40US
009F 22              145             RET
00A0                 146     SET_INPUT_MODE2:
00A0 00              147             NOP
00A1 C290            148             CLR     LCD_RS
00A3 C291            149             CLR     LCD_RW
00A5 758007          150             MOV     P0,#00000111B
00A8 D292            151             SETB    LCD_EN
00AA 12027B          152             LCALL   DL40US
00AD C292            153             CLR     LCD_EN
00AF 12027B          154             LCALL   DL40US
00B2 22              155             RET
                     156     ;-------------设置显示开关---------------
00B3                 157     SET_LCD_DISP:           ;开显示,不显示光标,光标不显示
00B3 00              158             NOP
00B4 C290            159             CLR     LCD_RS
00B6 C291            160             CLR     LCD_RW
00B8 75800C          161             MOV     P0,#00001100B
00BB D292            162             SETB    LCD_EN
00BD 12027B          163             LCALL   DL40US
00C0 C292            164             CLR     LCD_EN
00C2 12027B          165             LCALL   DL40US
00C5 22              166             RET
00C6                 167     SET_DISP_CLOSE:
00C6 00              168             NOP
00C7 C290            169             CLR     LCD_RS
00C9 C291            170             CLR     LCD_RW
00CB 758008          171             MOV     P0,#00001000B
00CE D292            172             SETB    LCD_EN
00D0 12027B          173             LCALL   DL40US
00D3 C292            174             CLR     LCD_EN
00D5 12027B          175             LCALL   DL40US
00D8 22              176             RET
00D9                 177     SET_LCD_DISP1:
00D9 00              178             NOP
00DA C290            179             CLR     LCD_RS
00DC C291            180             CLR     LCD_RW
00DE 75800F          181             MOV     P0,#00001111B
00E1 D292            182             SETB    LCD_EN
00E3 12027B          183             LCALL   DL40US
00E6 C292            184             CLR     LCD_EN
00E8 12027B          185             LCALL   DL40US
00EB 22              186             RET
00EC                 187     SET_DISP_ONOFF1:                ;开显示,不显示光标,字符光标不显示
00EC 00              188             NOP
00ED C290            189             CLR     LCD_RS
00EF C291            190             CLR     LCD_RW
A51 MACRO ASSEMBLER  LCD                                                                    19/11/04 16:45:55 PAGE     4

00F1 75800C          191             MOV     P0,#00001100B
00F4 D292            192             SETB    LCD_EN
00F6 12027B          193             LCALL   DL40US
00F9 C292            194             CLR     LCD_EN
00FB 12027B          195             LCALL   DL40US
00FE 22              196             RET
00FF                 197     SET_SHOW_CURSOR:                ;开显示,光标关,字符光标闪
00FF 00              198             NOP
0100 C290            199             CLR     LCD_RS
0102 C291            200             CLR     LCD_RW
0104 75800D          201             MOV     P0,#00001101B
0107 D292            202             SETB    LCD_EN
0109 12027B          203             LCALL   DL40US
010C C292            204             CLR     LCD_EN
010E 12027B          205             LCALL   DL40US
0111 22              206             RET
0112                 207     SET_HIDE_CURSOR:                ;开显示,光标关,字符光标不闪
0112 00              208             NOP
0113 C290            209             CLR     LCD_RS
0115 C291            210             CLR     LCD_RW
0117 75800C          211             MOV     P0,#00001100B
011A D292            212             SETB    LCD_EN
011C 12027B          213             LCALL   DL40US

⌨️ 快捷键说明

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