📄 lcm_drive.lst
字号:
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 4
180 0xFE, 0x08, 0x10, 0x20, 0xFE,
181 0x7C, 0x82, 0x82, 0x82, 0x7C
182 };
183
184 uint8 code ASCII_TAB50[80] = { 0xFE, 0x12, 0x12, 0x12, 0x0C,
185 0x7C, 0x82, 0xA2, 0x42, 0xBC,
186 0xFE, 0x12, 0x32, 0x52, 0x8C,
187 0x8C, 0x92, 0x92, 0x92, 0x62,
188 0x02, 0x02, 0xFE, 0x02, 0x02,
189 0x7E, 0x80, 0x80, 0x80, 0x7E,
190 0x3E, 0x40, 0x80, 0x40, 0x3E,
191 0x7E, 0x80, 0x70, 0x80, 0x7E,
192 0xC6, 0x28, 0x10, 0x28, 0xC6,
193 0x0E, 0x10, 0xE0, 0x10, 0x0E,
194 0xC2, 0xA2, 0x92, 0x8A, 0x86,
195 0x00, 0xFE, 0x82, 0x82, 0x00,
196 0x04, 0x08, 0x10, 0x20, 0x40,
197 0x00, 0x82, 0x82, 0xFE, 0x00,
198 0x08, 0x04, 0x02, 0x04, 0x08,
199 0x80, 0x80, 0x80, 0x80, 0x80
200 };
201
202 uint8 code ASCII_TAB60[80] = { 0x00, 0x02, 0x04, 0x08, 0x00,
203 0x40, 0xA8, 0xA8, 0xA8, 0xF0,
204 0xFE, 0x90, 0x88, 0x88, 0x70,
205 0x70, 0x88, 0x88, 0x88, 0x40,
206 0x70, 0x88, 0x88, 0x90, 0xFE,
207 0x70, 0xA8, 0xA8, 0xA8, 0x30,
208 0x10, 0xFC, 0x12, 0x02, 0x04,
209 0x18, 0xA4, 0xA4, 0xA4, 0x7C,
210 0xFE, 0x10, 0x08, 0x08, 0xF0,
211 0x00, 0x88, 0xFA, 0x80, 0x00,
212 0x40, 0x80, 0x88, 0x7A, 0x00,
213 0xFE, 0x20, 0x50, 0x88, 0x00,
214 0x00, 0x82, 0xFE, 0x80, 0x00,
215 0xF8, 0x08, 0x30, 0x08, 0xF8,
216 0xF8, 0x10, 0x08, 0x08, 0xF0,
217 0x70, 0x88, 0x88, 0x88, 0x70
218 };
219
220 uint8 code ASCII_TAB70[80] = { 0xF8, 0x28, 0x28, 0x28, 0x10,
221 0x10, 0x28, 0x28, 0x30, 0xF8,
222 0xF8, 0x10, 0x08, 0x08, 0x10,
223 0x90, 0xA8, 0xA8, 0xA8, 0x40,
224 0x08, 0x7E, 0x88, 0x80, 0x40,
225 0x78, 0x80, 0x80, 0x40, 0xF8,
226 0x38, 0x40, 0x80, 0x40, 0x38,
227 0x78, 0x80, 0x60, 0x80, 0x78,
228 0x88, 0x50, 0x20, 0x50, 0x88,
229 0x18, 0xA0, 0xA0, 0xA0, 0x78,
230 0x88, 0xC8, 0xA8, 0x98, 0x88,
231 0x00, 0x10, 0x6C, 0x82, 0x00,
232 0x00, 0x00, 0xFE, 0x00, 0x00,
233 0x00, 0x82, 0x6C, 0x10, 0x00,
234 0x10, 0x10, 0x54, 0x38, 0x10,
235 0x10, 0x38, 0x54, 0x10, 0x10
236 };
237
238 /***********************************************************************
239 * 名称:LCM_DispChar()
240 * 功能:指定地址显示字符。
241 * 入口参数:disp_cy 显示行值(0-7)
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 5
242 * disp_cx 显示列值(0-15)
243 * dispdata 所要显示的字符(ASCII码)
244 * 注:支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以
245 * 屏幕显示为8*16(共8行,每行16个字符)。
246 ***********************************************************************/
247 void LCM_DispChar(uint8 disp_cy, uint8 disp_cx, char dispdata)
248 { uint8 code *pchardata;
249 1 uint8 i;
250 1
251 1 disp_cy = disp_cy&0x07; // 参数过滤
252 1 disp_cx = disp_cx&0x0f;
253 1
254 1 /* 先要找出显示数据的类型,并设置相应的点阵数据表,然后设置指针,以取得对应的点阵数据。 */
255 1 switch(dispdata&0xf0)
256 1 { case 0x20:
257 2 dispdata = (dispdata&0x0f)*5;
258 2 pchardata = &ASCII_TAB20[dispdata];
259 2 break;
260 2
261 2 case 0x30:
262 2 dispdata = (dispdata&0x0f)*5;
263 2 pchardata = &ASCII_TAB30[dispdata];
264 2 break;
265 2
266 2 case 0x40:
267 2 dispdata = (dispdata&0x0f)*5;
268 2 pchardata = &ASCII_TAB40[dispdata];
269 2 break;
270 2
271 2 case 0x50:
272 2 dispdata = (dispdata&0x0f)*5;
273 2 pchardata = &ASCII_TAB50[dispdata];
274 2 break;
275 2
276 2 case 0x60:
277 2 dispdata = (dispdata&0x0f)*5;
278 2 pchardata = &ASCII_TAB60[dispdata];
279 2 break;
280 2
281 2 case 0x70:
282 2 dispdata = (dispdata&0x0f)*5;
283 2 pchardata = &ASCII_TAB70[dispdata];
284 2 break;
285 2
286 2 default:
287 2 pchardata = &ASCII_TAB20[0];
288 2 break;
289 2 } // end of switch(dispdata&0xf0)...
290 1
291 1
292 1 if( (disp_cx&0x08) == 0 ) // 选择液晶控制芯片(即CS1--控制前8个字符,CS2--控制后8个字符)
293 1 { i = disp_cx<<3;
294 2 LCM_Wr1Command(LCM_ADDRSTRX+i); // 设置当前列地址,即列
295 2 LCM_Wr1Command(LCM_ADDRSTRY+disp_cy); // 设置当前页地址,即行
296 2
297 2 for(i=0; i<5; i++);
298 2 LCM_Wr1Data(0x00); // 显示一列空格
299 2 for(i=0; i<5; i++)
300 2 { LCM_Wr1Data(*pchardata); // 发送数据 */
301 3 pchardata++;
302 3 }
303 2 LCM_Wr1Data(0x00);
C51 COMPILER V7.09 LCM_DRIVE 09/17/2004 11:31:15 PAGE 6
304 2 for(i=0; i<5; i++);
305 2 LCM_Wr1Data(0x00);
306 2 }
307 1 else
308 1 { i = (disp_cx&0x07)<<3; // 若Y>7,则选取用CS2并且地址值要先减去8,再乘以8
309 2 LCM_Wr2Command(LCM_ADDRSTRX+i);
310 2 LCM_Wr2Command(LCM_ADDRSTRY+disp_cy); // 设置当前页地址,即行
311 2
312 2 for(i=0; i<5; i++);
313 2 LCM_Wr2Data(0x00); // 显示一列空格
314 2 for(i=0; i<5; i++)
315 2 { LCM_Wr2Data(*pchardata); // 发送数据 */
316 3 pchardata++;
317 3 }
318 2 LCM_Wr2Data(0x00);
319 2 for(i=0; i<5; i++);
320 2 LCM_Wr2Data(0x00);
321 2 }
322 1 }
323
324
325 /***********************************************************************
326 * 名称:LCM_DispStr()
327 * 功能:字符串显示输出。
328 * 入口参数:disp_cy 显示起始行(0-7)
329 * disp_cx 显示起始列(0-15)
330 * disp_str 字串指针
331 * 出口参数:无
332 * 注:支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以屏幕显示
333 * 为8*16(共8行,每行16个字符)。
334 ***********************************************************************/
335 void LCM_DispStr(uint8 disp_cy, uint8 disp_cx, char *disp_str)
336 { while( *disp_str != '\0')
337 1 { disp_cy = disp_cy&0x07; // 参数过滤
338 2 disp_cx = disp_cx&0x0f;
339 2 LCM_DispChar(disp_cy, disp_cx, *disp_str); // 显示字符
340 2
341 2 disp_str++; // 指向下一字符数据
342 2 disp_cx++;
343 2 if(disp_cx>15) disp_cy++; // 指向下一显示行
344 2 }
345 1 }
346
347
348
349
350
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 977 ----
CONSTANT SIZE = 480 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 19
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -