📄 wl009.lst
字号:
A51 MACRO ASSEMBLER WL009 04/05/2005 09:56:15 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN wl009.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE wl009.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2 ;* 标题: 伟纳电子ME300B单片机开发系统演示程序 - 1602LCD显示演示程序 *
3 ;* 文件: wl009.asm *
4 ;* 日期: 2005-1-20 *
5 ;* 版本: 1.0 *
6 ;* 作者: 伟纳电子 - Freeman *
7 ;* 邮箱: freeman@willar.com *
8 ;* 网站: http://www.willar.com *
9 ;********************************************************************************
10 ;* 描述: *
11 ;* 1602字符型LCD显示演示程序 *
12 ;* 在第一行显示 welcome *
13 ;* 在第一行显示 www.willar.com *
14 ;* *
15 ;* *
16 ;********************************************************************************
17 ;* 【版权】 Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
18 ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
19 ;********************************************************************************
20
21
22 ; 端口定义
00A0 23 RS EQU P2.0
00A1 24 RW EQU P2.1
00A2 25 EP EQU P2.2
26
0000 27 ORG 0000H
0000 020003 28 LJMP MAIN
29
30
0003 31 MAIN:
0003 120060 32 LCALL LCD_INIT ; 初始化LCD
0006 740F 33 MOV A,#15
0008 1200EB 34 LCALL DELAY_MS ;
35
000B 36 MAIN_LOOP:
37 ; 在第一行显示字符串"welcome!"
000B 7404 38 MOV A,#4
000D 12009C 39 LCALL SET_LCD_POS ; 设置LCD光标到第一行的第5个字符
40
0010 900104 41 MOV DPTR,#TAB_WELCOME ; "welcome!"字串表格地址
0013 120050 42 LCALL DISPLAY_STRING ; 显示字符串
43 ; 在第二行显示字符串"www.willar.com"
0016 7441 44 MOV A,#41H ;
0018 12009C 45 LCALL SET_LCD_POS ; 设置LCD光标到第二行第二个字符
46
001B 9000F5 47 MOV DPTR,#TAB_WILLAR
001E 120050 48 LCALL DISPLAY_STRING
49
50 ; 闪烁显示内容
0021 74C8 51 MOV A,#200 ;
0023 1200EB 52 LCALL DELAY_MS ;
53
0026 120086 54 LCALL LCD_TURN_OFF
0029 74C8 55 MOV A,#200 ;
002B 1200EB 56 LCALL DELAY_MS ;
57
002E 12007B 58 LCALL LCD_TURN_ON
A51 MACRO ASSEMBLER WL009 04/05/2005 09:56:15 PAGE 2
59
0031 74C8 60 MOV A,#200 ;
0033 1200EB 61 LCALL DELAY_MS ;
62
0036 120086 63 LCALL LCD_TURN_OFF
64
0039 74C8 65 MOV A,#200 ;
003B 1200EB 66 LCALL DELAY_MS ;
67
003E 12007B 68 LCALL LCD_TURN_ON
69
0041 74C8 70 MOV A,#200 ;
0043 1200EB 71 LCALL DELAY_MS ;
72 ;清屏
0046 120091 73 LCALL LCD_CLEAR
0049 7401 74 MOV A,#1
004B 1200EB 75 LCALL DELAY_MS
76 ; 重新显示
004E 80BB 77 JMP MAIN_LOOP
78
79 ;显示字符串函数
80 ;传入参数:DPTR(字符串表格地址)
81 ;返回值:无
0050 82 DISPLAY_STRING:
0050 E4 83 CLR A
0051 93 84 MOVC A,@A+DPTR ;
0052 600B 85 JZ END_DISPLAY_STRING ; 如果遇到00H表示表格结束
0054 1200BC 86 LCALL LCD_WRITE_DATA ; 写数据到LCD
0057 A3 87 INC DPTR ; 指向表格的下一字符
0058 74C8 88 MOV A, #200 ;
005A 1200EB 89 LCALL DELAY_MS ;
005D 80F1 90 SJMP DISPLAY_STRING ; 循环直到字符串结束
005F 91 END_DISPLAY_STRING:
005F 22 92 RET
93
94
95 ; 初始化LCD
0060 96 LCD_INIT:
97
98 ; 设置显示格式---
0060 7438 99 MOV A,#38H ; 38H --- 16*2行显示,5*7点阵,8位数据接口
0062 1200A2 100 LCALL LCD_WRITE_COMMAND
0065 7401 101 MOV A,#1
0067 1200EB 102 LCALL DELAY_MS
103 ;开显示
006A 12007B 104 LCALL LCD_TURN_ON
105 ;读写后指针加1
006D 7406 106 MOV A,#06H ; 06H --- 读写后指针加1
006F 1200A2 107 LCALL LCD_WRITE_COMMAND
0072 7401 108 MOV A,#1
0074 1200EB 109 LCALL DELAY_MS
110 ; 清除LCD屏幕
0077 120091 111 LCALL LCD_CLEAR
007A 22 112 RET
113
114
115 ;开显示
007B 116 LCD_TURN_ON:
007B 740C 117 MOV A,#0CH ; 0CH --- 开显示,无光标
007D 1200A2 118 LCALL LCD_WRITE_COMMAND
0080 7401 119 MOV A,#1
0082 1200EB 120 LCALL DELAY_MS
0085 22 121 RET
122
123 ; 关显示
0086 124 LCD_TURN_OFF:
A51 MACRO ASSEMBLER WL009 04/05/2005 09:56:15 PAGE 3
0086 7408 125 MOV A,#08H ; 08H --- 关显示
0088 1200A2 126 LCALL LCD_WRITE_COMMAND
008B 7401 127 MOV A,#1
008D 1200EB 128 LCALL DELAY_MS
0090 22 129 RET
130
131 ; 清除LCD屏幕
0091 132 LCD_CLEAR:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -