📄 gdlcd.lst
字号:
A51 MACRO ASSEMBLER GDLCD 03/29/2009 20:14:38 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN gdLCD.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE gdLCD.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;/********************************************************************************
2
3 ;* 描述: LCD1602 滚动显示 *
4 ;* 显示方式: *
5 ;* 1、从左到右逐字显示,闪动二次,清屏。 *
6 ;* 2、再从右到左逐字显示,闪动二次,清屏。 *
7 ;* 3、周期性地重复上述显示方式。 *
8 ;********************************************************************************/
9
00A6 10 LCD_RS EQU P2.6
00A5 11 LCD_RW EQU P2.5
00A7 12 LCD_EN EQU P2.7
13
14 ;*******************************************************************
15
0000 16 ORG 0000H
0000 0130 17 AJMP MAIN
0030 18 ORG 0030H
19
20 ;*******************************************************************
0030 21 MAIN:
0030 758160 22 MOV SP,#60H
0033 7C02 23 MOV R4,#02H ;设置闪烁次数
0035 1165 24 ACALL LCD_INIT
0037 25 MAIN1:
0037 118E 26 ACALL LCDSET1
0039 90012F 27 MOV DPTR,#CHAR1
003C 11C5 28 ACALL WRITE1 ;显示“WELCOME TO”
003E 74C0 29 MOV A,#0C0H ;显示第二行左边第一位位置
0040 11B4 30 ACALL LCD_CMD
0042 90013F 31 MOV DPTR,#CHAR2 ;显示
0045 11C5 32 ACALL WRITE1
0047 3110 33 ACALL DELAY4 ;延时
0049 3110 34 ACALL DELAY4
004B 11F6 35 ACALL SHAN ;闪烁两次
36
004D 11A1 37 ACALL LCDSET2
004F 900150 38 MOV DPTR,#CHAR3 ;显示“WELCOME TO”
0052 11C5 39 ACALL WRITE1
0054 74CF 40 MOV A,#0CFH ;显示第二行右边第一位位置
0056 11B4 41 ACALL LCD_CMD
0058 900160 42 MOV DPTR,#CHAR4 ;显示WWW.PRECHIN.COM
005B 11C5 43 ACALL WRITE1
005D 3110 44 ACALL DELAY4 ;延时
005F 3110 45 ACALL DELAY4
0061 11F6 46 ACALL SHAN ;闪烁两次
0063 1137 47 ACALL MAIN1
48
49 ;***************************************************************
50 ;LCD初始化设定子程序
51 ;***************************************************************
0065 52 LCD_INIT:
0065 311D 53 ACALL DELAY5MS ;延时15MS
0067 311D 54 ACALL DELAY5MS ;等待LCD电源稳定
0069 311D 55 ACALL DELAY5MS
56
006B 7438 57 MOV A,#38H ;16*2显示,5*7点阵,8位数据
A51 MACRO ASSEMBLER GDLCD 03/29/2009 20:14:38 PAGE 2
006D 11B6 58 ACALL LCD_CMD_NC ;不进行LCD忙检测
006F 311D 59 ACALL DELAY5MS
60
0071 7438 61 MOV A,#38H ;16*2显示,5*7点阵,8位数据
0073 11B6 62 ACALL LCD_CMD_NC ;不进行LCD忙检测
0075 311D 63 ACALL DELAY5MS
64
0077 7438 65 MOV A,#38H ;16*2显示,5*7点阵,8位数据
0079 11B6 66 ACALL LCD_CMD_NC ;不进行LCD忙检测
007B 311D 67 ACALL DELAY5MS
68
007D 7408 69 MOV A,#08H ;显示关
007F 11B4 70 ACALL LCD_CMD ;进行LCD忙检测
71
0081 7401 72 MOV A,#01H ;清除屏幕
0083 11B4 73 ACALL LCD_CMD ;进行LCD忙检测
74
0085 7406 75 MOV A,#06H ;移动光标
0087 11B4 76 ACALL LCD_CMD ;进行LCD忙检测
77
0089 740C 78 MOV A,#0CH ;显示开,关光标
008B 11B4 79 ACALL LCD_CMD ;进行LCD忙检测
008D 22 80 RET
81 ;***************************************************************
82 ;显示位置与移动光标设定
83 ;***************************************************************
008E 84 LCDSET1:
008E 7401 85 MOV A,#01H ;清除屏幕
0090 11B4 86 ACALL LCD_CMD
0092 311D 87 ACALL DELAY5MS
0094 7406 88 MOV A,#06H ;移动光标(光标加1)
0096 11B4 89 ACALL LCD_CMD
0098 311D 90 ACALL DELAY5MS
009A 7480 91 MOV A,#80H ;显示第一行左边第一位位置
009C 11B4 92 ACALL LCD_CMD
009E 311D 93 ACALL DELAY5MS
00A0 22 94 RET
00A1 95 LCDSET2:
00A1 7401 96 MOV A,#01H ;清除屏幕
00A3 11B4 97 ACALL LCD_CMD
00A5 311D 98 ACALL DELAY5MS
00A7 7404 99 MOV A,#04H ;移动光标(光标减1)
00A9 11B4 100 ACALL LCD_CMD
00AB 311D 101 ACALL DELAY5MS
00AD 748F 102 MOV A,#8FH ;显示第一行右边第一位位置
00AF 11B4 103 ACALL LCD_CMD
00B1 311D 104 ACALL DELAY5MS
00B3 22 105 RET
106 ;***************************************************************
107 ;写指令数据到LCD
108 ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
109 ;***************************************************************
00B4 110 LCD_CMD:
00B4 11E2 111 ACALL CHECKBUSY
00B6 112 LCD_CMD_NC:
00B6 C2A6 113 CLR LCD_RS
00B8 C2A5 114 CLR LCD_RW
00BA F580 115 MOV P0,A
00BC D2A7 116 SETB LCD_EN
00BE 00 117 NOP
00BF 00 118 NOP
00C0 00 119 NOP
00C1 00 120 NOP
00C2 C2A7 121 CLR LCD_EN
00C4 22 122 RET
123 ;***************************************************************
A51 MACRO ASSEMBLER GDLCD 03/29/2009 20:14:38 PAGE 3
124 ; 发送字符串子程序
125 ;***************************************************************
00C5 126 WRITE1:
00C5 7810 127 MOV R0,#16
00C7 128 WRITE0:
00C7 E4 129 CLR A
00C8 93 130 MOVC A,@A+DPTR
00C9 A3 131 INC DPTR
00CA 11D1 132 ACALL LCD_WDATA
00CC 3107 133 CALL DELAY ;加延时形成滚动效果
00CE D8F7 134 DJNZ R0,WRITE0
00D0 22 135 RET
136 ;***************************************************************
137 ;写显示数据到LCD
138 ;RS=H,RW=L,D0-D7=数据,E=高脉冲
139 ;***************************************************************
00D1 140 LCD_WDATA:
00D1 11E2 141 ACALL CHECKBUSY
00D3 D2A6 142 SETB LCD_RS
00D5 C2A5 143 CLR LCD_RW
00D7 F580 144 MOV P0,A
00D9 D2A7 145 SETB LCD_EN
00DB 00 146 NOP
00DC 00 147 NOP
00DD 00 148 NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -