📄 lcd12864.lst
字号:
261 3 }
262 2 }
263 1 else
264 1 {
265 2 x1 = x1 / 2;
266 2 for(a = 0;a < 16;a++)
267 2 {
268 3 y = y1;
269 3 x = x1;
270 3 /**/
271 3 if(y < 16)
272 3 {
273 4 x = x + 0x80;
274 4 y = y + 0x80;
275 4 }
276 3 if((y >= 16) && (y < 32))
277 3 {
278 4 x = x + 0x90;
279 4 y = y + 0x80;
280 4 }
281 3 if((y >= 32) && (y < 48))
282 3 {
283 4 x = x + 0x88;
284 4 y = (y - 32) + 0x80;
285 4 }
286 3 if((y >= 48) && (y < 64))
287 3 {
288 4 x = x + 0x98;
289 4 y = (y - 32) + 0x80;
290 4 }
291 3
292 3 w_code(y);
293 3 w_code(x);
294 3 z = r_data();
295 3 w_code(y);
296 3 w_code(x);
297 3 w_data(z);
298 3 if(fanbai == 0)
299 3 {
300 4 w_data(zz[i]);
301 4 }
302 3 else
303 3 {
C51 COMPILER V8.08 LCD12864 11/20/2008 22:02:48 PAGE 6
304 4 w_data(~zz[i]);
305 4 }
306 3 y1++;
307 3 i++;
308 3 }
309 2 }
310 1 }
311 /************************************************************************************
312 /************************************************************************************
313 ---------------------------写16*16阵数据
314 ************************************************************************************/
315 void write_lcd_1616(uchar x1,uchar y1,uchar code * zz,bit fanbai)
316 {
317 1 data uchar a,y,x,i = 0;
318 1
319 1 for(a = 0;a < 16;a++)
320 1 {
321 2 y = y1;
322 2 x = x1;
323 2 /**/
324 2 if(y < 16)
325 2 {
326 3 x = x + 0x80;
327 3 y = y + 0x80;
328 3 }
329 2 if((y >= 16) && (y < 32))
330 2 {
331 3 x = x + 0x90;
332 3 y = y + 0x80;
333 3 }
334 2 if((y >= 32) && (y < 48))
335 2 {
336 3 x = x + 0x88;
337 3 y = (y - 32) + 0x80;
338 3 }
339 2 if((y >= 48) && (y < 64))
340 2 {
341 3 x = x + 0x98;
342 3 y = (y - 32) + 0x80;
343 3 }
344 2
345 2 w_code(y);
346 2 y1++;
347 2 w_code(x);
348 2 if(fanbai == 0)
349 2 {
350 3 w_data(zz[i]);
351 3 i++;
352 3 w_data(zz[i]);
353 3 i++;
354 3 }
355 2 else
356 2 {
357 3 w_data(~zz[i]);
358 3 i++;
359 3 w_data(~zz[i]);
360 3 i++;
361 3 }
362 2
363 2 }
364 1 }
365 /************************************************************************************
C51 COMPILER V8.08 LCD12864 11/20/2008 22:02:48 PAGE 7
366 ---------------------------清0 16*16阵数据
367 ************************************************************************************/
368 void write_lcd_1616_clr(uchar x1,uchar y1)
369 {
370 1 data uchar a,y,x,i = 0;
371 1
372 1 for(a = 0;a < 16;a++)
373 1 {
374 2 y = y1;
375 2 x = x1;
376 2 if(y < 16)
377 2 {
378 3 x = x + 0x80;
379 3 y = y + 0x80;
380 3 }
381 2
382 2 if((y >= 16) && (y < 32))
383 2 {
384 3 x = x + 0x90;
385 3 y = y + 0x80;
386 3 }
387 2
388 2 if((y >= 32) && (y < 48))
389 2 {
390 3 x = x + 0x88;
391 3 y = (y - 32) + 0x80;
392 3 }
393 2
394 2 if((y >= 48) && (y < 64))
395 2 {
396 3 x = x + 0x98;
397 3 y = (y - 32) + 0x80;
398 3 }
399 2
400 2 w_code(y);
401 2 y1++;
402 2 w_code(x);
403 2 w_data(0);
404 2 i++;
405 2 w_data(0);
406 2 i++;
407 2 }
408 1
409 1 }
410 /************************************************************************************
411
412 写整屏点阵数据
413
414 ************************************************************************************/
415
416 void write_lcd_full(uchar * img )
417 {
418 1 uint x2 = 0;
419 1 idata uchar i,j,a;
420 1 j = 0x80;
421 1 for(a = 0;a < 32;a++)
422 1 {
423 2 w_code(j);
424 2 j++;
425 2 w_code(0x80);
426 2 for(i = 0;i < 16;i ++)
427 2 {
C51 COMPILER V8.08 LCD12864 11/20/2008 22:02:48 PAGE 8
428 3 w_data(img[x2]);
429 3 x2++;
430 3 }
431 2 }
432 1
433 1 j = 0x80;
434 1 for(a = 0;a < 32;a++)
435 1 {
436 2 w_code(j);
437 2 j++;
438 2 w_code(0x88);
439 2 for(i = 0;i < 16;i ++)
440 2 {
441 3 w_data(img[x2]);
442 3 x2++;
443 3 }
444 2 }
445 1 }
446 /************************************************************************************
447 ---------------------------清屏函数
448 ---------------------------把所有的点都写0
449 ************************************************************************************/
450
451 void lcd_clr()
452 {
453 1 idata uchar i,j,a;
454 1 j = 0x80;
455 1 for(a = 0;a < 32;a++)
456 1 {
457 2 w_code(j);
458 2 j++;
459 2 w_code(0x80);
460 2 for(i = 0;i < 16;i ++)
461 2 {
462 3 w_data(0x00);
463 3 }
464 2 }
465 1
466 1 j = 0x80;
467 1 for(a = 0;a < 32;a++)
468 1 {
469 2 w_code(j);
470 2 j++;
471 2 w_code(0x88);
472 2 for(i = 0;i < 16;i ++)
473 2 {
474 3 w_data(0x00);
475 3 }
476 2 }
477 1 }
478 /************************************************************************************
479
480 设置绘图模式
481
482 ************************************************************************************/
483 void set_huitu(void)
484 {
485 1 w_code(0x32);//32
486 1 w_code(0x36);//36
487 1 }
488
489 /************************************************************************************
C51 COMPILER V8.08 LCD12864 11/20/2008 22:02:48 PAGE 9
490
491 设置字符模式
492
493 ************************************************************************************/
494 void set_zifu(void)
495 {
496 1 w_code(0x30);//30
497 1 }
498
499 /************************************************************************************
500
501 //向LCM发送一个字符串,长度64字符之内。
502
503 ************************************************************************************/
504 void lcm_w_word(uchar x,uchar y,uchar *str)
505 {
506 1 x = x+y;
507 1 w_code(x);
508 1 while(*str != '\0')
509 1 {
510 2 w_data(*str++);
511 2 }
512 1 *str = 0;
513 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1091 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- 6
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -