📄 lcd.lst
字号:
C51 COMPILER V7.10 LCD 07/31/2008 09:54:54 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 标题: 伟纳电子ME300B单片机开发系统演示程序 - 1602LCD显示演示程序 *
3 * 文件: wl009.C *
4 * 日期: 2004-1-5 *
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 * 【版权】 Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
17 * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
18 *******************************************************************************/
19
20 //shixr, LCD显示程序,须学习
21
22 #include <reg51.h>
23 #include <intrins.h>
24
25 typedef unsigned char BYTE;
26 typedef unsigned int WORD;
27 typedef bit BOOL ;
28
29 sbit rs = P2^0; //
30 sbit rw = P2^1;
31 sbit ep = P2^2;
32
33 BYTE code dis1[] = {"welcome!"};
34 BYTE code dis2[] = {"www.willar.com"};
35
36 delay(BYTE ms)
37 { // 延时子程序
38 1 BYTE i;
39 1 while(ms--)
40 1 {
41 2 for(i = 0; i< 250; i++)
42 2 {
43 3 _nop_();
44 3 _nop_();
45 3 _nop_();
46 3 _nop_();
47 3 }
48 2 }
49 1 }
50
51 BOOL lcd_bz()
52 { // 测试LCD忙碌状态
53 1 BOOL result;
54 1 rs = 0;
55 1 rw = 1;
C51 COMPILER V7.10 LCD 07/31/2008 09:54:54 PAGE 2
56 1 ep = 1;
57 1 _nop_();
58 1 _nop_();
59 1 _nop_();
60 1 _nop_();
61 1 result = (BOOL)(P0 & 0x80);
62 1 ep = 0;
63 1 return result;
64 1 }
65
66 lcd_wcmd(BYTE cmd)
67 { // 写入指令数据到LCD
68 1 while(lcd_bz());
69 1 rs = 0;
70 1 rw = 0;
71 1 ep = 0;
72 1 _nop_();
73 1 _nop_();
74 1 P0 = cmd;
75 1 _nop_();
76 1 _nop_();
77 1 _nop_();
78 1 _nop_();
79 1 ep = 1;
80 1 _nop_();
81 1 _nop_();
82 1 _nop_();
83 1 _nop_();
84 1 ep = 0;
85 1 }
86
87 lcd_pos(BYTE pos)
88 { //设定显示位置
89 1 lcd_wcmd(pos | 0x80);
90 1 }
91
92 lcd_wdat(BYTE dat)
93 { //写入字符显示数据到LCD
94 1 while(lcd_bz());
95 1 rs = 1;
96 1 rw = 0;
97 1 ep = 0;
98 1 P0 = dat;
99 1 _nop_();
100 1 _nop_();
101 1 _nop_();
102 1 _nop_();
103 1 ep = 1;
104 1 _nop_();
105 1 _nop_();
106 1 _nop_();
107 1 _nop_();
108 1 ep = 0;
109 1 }
110
111 lcd_init()
112 { //LCD初始化设定
113 1 lcd_wcmd(0x38); //
114 1 delay(1);
115 1 lcd_wcmd(0x0c); // 0x0c
116 1 delay(1);
117 1 lcd_wcmd(0x06); // 0x06
C51 COMPILER V7.10 LCD 07/31/2008 09:54:54 PAGE 3
118 1 delay(1);
119 1 lcd_wcmd(0x01); //清除LCD的显示内容
120 1 delay(1);
121 1 }
122
123 main()
124 {
125 1 BYTE i;
126 1 lcd_init(); // 初始化LCD
127 1 delay(10);
128 1 lcd_pos(4); // 设置显示位置为第一行的第5个字符
129 1 i = 0;
130 1 while(dis1[i] != '\0')
131 1 { // 显示字符"welcome!"
132 2 lcd_wdat(dis1[i]);
133 2 i++;
134 2 }
135 1 lcd_pos(0x41); // 设置显示位置为第二行第二个字符
136 1 i = 0;
137 1 while(dis2[i] != '\0')
138 1 {
139 2 lcd_wdat(dis2[i]); // 显示字符" www.willar.com "
140 2 i++;
141 2 }
142 1 while(1); //
143 1 }
144
145
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 193 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -