📄 lcd.lst
字号:
42 2 Delay(1);
43 2 LCD_EN = 1;
44 2 BusyFlag = (bit)((LCD_DATA && 0x80)>>7);
45 2 if(!BusyFlag)break;
46 2 LCD_EN =0;
47 2 }
48 1 }
49
50 /************************************************
51 ** 函数名称: LCD_Wr_Command
52 ** 功能描述: 给LCD写指令
53 ** 输 入: 命令com
54 ** 输 出: 无
55 ** 全局变量:
56 ** 设 计: 简小木 时间:2008-10-12
57 *************************************************/
58 void LCD_Wr_Command(unsigned char com)
59 {
60 1 LCD_Busy();
61 1 LCD_DATA = com;
62 1 LCD_RS = 0;
63 1 Delay(1);
64 1 LCD_RW = 0;
65 1 Delay(1);
66 1 LCD_EN = 0;
67 1 }
68
69 /************************************************
70 ** 函数名称: LCD_Wr_Data
71 ** 功能描述: 给LCD写数据
72 ** 输 入: 数据dat
73 ** 输 出: 无
74 ** 全局变量:
75 ** 设 计: 简小木 时间:2008-10-12
76 *************************************************/
77 void LCD_Wr_Data(unsigned char dat)
78 {
79 1 LCD_Busy();
80 1 LCD_DATA = dat;
C51 COMPILER V8.02 LCD 03/26/2009 15:06:07 PAGE 6
81 1 LCD_RS = 1;
82 1 Delay(1);
83 1 LCD_RW = 0;
84 1 Delay(1);
85 1 LCD_EN = 0;
86 1 }
87
88 /************************************************
89 ** 函数名称: LCD_Wr_Char
90 ** 功能描述: 写字符
91 ** 输 入: 列:x, 行:y, 字符:c
92 ** 输 出: 无
93 ** 全局变量:
94 ** 设 计: 简小木 时间:2008-10-12
95 *************************************************/
96 void LCD_Wr_Char(unsigned char x,unsigned char y,unsigned char c)
97 {
98 1 if(y==0)
99 1 LCD_Wr_Command(0x80+x);
100 1 else if(y==1)
101 1 LCD_Wr_Command(0xc0+x);
102 1
103 1 else if(y>1){}
104 1
105 1 LCD_Wr_Data(c);
106 1 }
107
108 /************************************************
109 ** 函数名称: LCD_Wr_String
110 ** 功能描述: 写字符串
111 ** 输 入: 列:x, 行:y, 字符串指针:str
112 ** 输 出: 无
113 ** 全局变量:
114 ** 设 计: 简小木 时间:2008-10-12
115 *************************************************/
116 void LCD_Wr_String(unsigned char x,unsigned char y,unsigned char *str)
117 {
118 1 unsigned int i;
119 1 i=strlen(str);
120 1
121 1 while(i!=0)
122 1 {
123 2 if(x>=16)
124 2 {
125 3 y++;
126 3 x = 0;
127 3 }
128 2 if(y>=2)break;
129 2
130 2 LCD_Wr_Char(x,y,*str);
131 2 x++;
132 2 str++;
133 2 i--;
134 2 }
135 1 }
136
137 void Print(unsigned char x,unsigned char y,unsigned char *str)
138 {
139 1 while(*str!='\0')
140 1 {
141 2 if(x>=16)
142 2 {
C51 COMPILER V8.02 LCD 03/26/2009 15:06:07 PAGE 7
143 3 y++;
144 3 x = 0;
145 3 }
146 2 if(y>=2)break;
147 2
148 2 LCD_Wr_Char(x,y,*str);
149 2 x++;
150 2 str++;
151 2 }
152 1 }
153
154 /************************************************
155 ** 函数名称: LCD_Init
156 ** 功能描述: 液晶初始化
157 ** 输 入: 无
158 ** 输 出: 无
159 ** 全局变量:
160 ** 设 计: 简小木 时间:2008-10-12
161 *************************************************/
162 void LCD_Init(void)
163 {
164 1 LCD_RS = 0;
165 1 LCD_RW = 0;
166 1 LCD_EN = 0;
167 1 LCD_Wr_Command(0x30|0x28|0x20);
168 1 Delay(2);
169 1 LCD_Wr_Command(0x0c);
170 1 LCD_Wr_Command(0x01);
171 1 LCD_Wr_Command(0x80);
172 1 }
173
174 /************************************************
175 ** 函数名称: write_CGRAM
176 ** 功能描述: 向CGRAM写入数据
177 ** 输 入: add为首地址,size为字符的个数
178 ** 输 出: 无
179 ** 全局变量:
180 ** 设 计: 简小木 时间:2009-02-02
181 *************************************************/
182 void write_CGRAM(unsigned char add,unsigned char *p_tab,unsigned char size)
183 {
184 1 unsigned char lenth=0;
185 1 lenth=size*8; //每个字符,8个码
186 1 add=0x40+8*add; //CGRAM的地址D5位要为1
187 1 while(lenth!=0)
188 1 {
189 2 if(add>=0x80) //CGRAM的地址到顶
190 2 break;
191 2 LCD_Wr_Command(add); //写CGRAM地址
192 2 LCD_Wr_Data(*p_tab); //写CGRAM数据
193 2 lenth--; //下一个码
194 2 add++; //下个地址
195 2 p_tab++; //下个字符
196 2 }
197 1 }
198
199 /************************************************
200 ** 函数名称: GotoXY
201 ** 功能描述: 指定坐标的位置
202 ** 输 入: 无
203 ** 输 出: 无
204 ** 全局变量:
C51 COMPILER V8.02 LCD 03/26/2009 15:06:07 PAGE 8
205 ** 设 计: 简小木 时间:2008-10-12
206 *************************************************/
207 /*
208 void GoTo_XY(unsigned char x, unsigned char y)
209 {
210 if(y==0)
211 LCD_Wr_Command(0x80|x);
212 if(y==1)
213 LCD_Wr_Command(0x80|(x-0x40));
214 }
215 */
216 /************************************************
217 ** 函数名称: num_to_char
218 ** 功能描述:
219 ** 输 入: 无
220 ** 输 出: 无
221 ** 全局变量:
222 ** 设 计: 简小木 时间:2008-10-12
223 *************************************************/
224 //unsigned char num_to_char(unsigned char num)
225 //{
226 // return(num+'0');
227 //}
228
229 /************************************************
230 ** 函数名称: LCD_Clear_ALL
231 ** 功能描述:
232 ** 输 入: 无
233 ** 输 出: 无
234 ** 全局变量:
235 ** 设 计: 简小木 时间:2008-10-12
236 *************************************************/
237 void LCD_Clear_All(void)
238 {
239 1 unsigned char i,j;
240 1
241 1 if(fTemp)
242 1 {
243 2 for(j=0;j<2;j++)
244 2 {
245 3 for(i=0;i<16;i++)
246 3 LCD_Wr_Char(i,j,0x00);
247 3 }
248 2 }
249 1 }
C51 COMPILER V8.02 LCD 03/26/2009 15:06:07 PAGE 9
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
fTemp. . . . . . . . . . . . . . . . . PUBLIC DATA BIT 0000H 1
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
_LCD_Wr_Command. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
com. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
LCD_Clear_All. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
_LCD_Wr_String . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
y. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
str. . . . . . . . . . . . . . . . . AUTO DATA PTR 0002H 3
i. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0005H 2
_LCD_Wr_Data . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
dat. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
_LCD_Wr_Char . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
y. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
c. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
LCD_EN . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A2H 1
LCD_Init . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_Delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0009H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
LCD_Busy . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
BusyFlag . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
LCD_RS . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A0H 1
_write_CGRAM . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
add. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
p_tab. . . . . . . . . . . . . . . . AUTO DATA PTR 0001H 3
size . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
lenth. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0005H 1
LCD_RW . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A1H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
_Print . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
y. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
str. . . . . . . . . . . . . . . . . AUTO DATA PTR 0002H 3
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
_strlen. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 391 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 18
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -