📄 lcd.lst
字号:
C51 COMPILER V8.08 LCD 10/20/2008 15:12:06 PAGE 7
366 void LCD_Init(void) //初始化LCD
367 {
368 1 Delay1ms(60);
369 1 FUNCTION_BASIC(); //基本指令动作
370 1 Delay1us(150);
371 1 FUNCTION_BASIC();
372 1 Delay1us(60);
373 1 LCD_DISP_ON(); //开显示
374 1 Delay1us(150);
375 1 LCD_CLEAR(); //清屏
376 1 Delay1ms(20);
377 1 LCD_ENTRYMODE_INC(); //光标移动方式为增加
378 1 }
379
380
381 /**************************************************************************
382 ------坐标变换子程序-------------------------------------------------------
383 ***************************************************************************
384 说明:入口参数:坐标,坐标
385 出口参数:成功与否
386 **************************************************************************/
387 unsigned char LCD_Goto(unsigned char x,unsigned char y)
388 {unsigned char cur;
389 1 x=x-1;y=y-1;
390 1 if((y>=0)&&(y<8))
391 1 switch(x)
392 1 {case 0:
393 2 {
394 3 cur=y;
395 3 LCD_SETADD();
396 3 break;
397 3 }
398 2 case 1:
399 2 {
400 3 cur=16+y;
401 3 LCD_SETADD();
402 3 break;}
403 2 case 2:
404 2 {
405 3 cur=8+y;
406 3 LCD_SETADD();
407 3 break;
408 3 }
409 2 case 3:
410 2 {
411 3 cur=24+y;
412 3 LCD_SETADD();
413 3 break;
414 3 }
415 2 default:
416 2 {break;}
417 2 }
418 1 else
419 1 return ERR;
420 1 }
421
422
423 /**************************************************************************
424 ------向指定坐标位置写字符子程序-------------------------------------------------------
425 ***************************************************************************
426 说明:入口参数:坐标,坐标,字符
427 出口参数:成功与否
C51 COMPILER V8.08 LCD 10/20/2008 15:12:06 PAGE 8
428 **************************************************************************/
429
430 void LCD_PutChar(unsigned char x,unsigned char y, unsigned char ch)
431 {LCD_Goto(x,y);
432 1 LCD_WriteData(ch);
433 1 }
434
435 /**************************************************************************
436 ------向LCD指定位置写汉字子程序--------------------------------------------
437 ***************************************************************************
438 说明:每次只能写一个汉字
439 入口参数:坐标,坐标,待写字符
440 出口参数:成功与否
441 ***************************************************************************/
442 void LCD_PutHZ(unsigned char x,unsigned char y,char *ptr)
443 {
444 1 LCD_Goto(x,y);
445 1 LCD_WriteData(*ptr);
446 1 ptr++;
447 1 LCD_WriteData(*ptr);
448 1 }
449
450
451 /**************************************************************************
452 ------向LCD指定位置写字符串子程序------------------------------------------
453 ***************************************************************************
454 说明:入口参数:坐标,坐标,待写字符口串
455 出口参数:成功与否
456 ***************************************************************************/
457 void LCD_Printf(unsigned char x,unsigned char y,char *ptr)
458 {unsigned char i;
459 1 LCD_Goto(x,y);
460 1 for(i=0;*(ptr+i)!=0;i++)
461 1 LCD_WriteData(*(ptr+i));
462 1 }
463
464 /**************************************************************************
465 ------图形文本方式变换子程序-----------------------------------------------
466 ***************************************************************************
467 说明:入口参数:液晶显示方式0:文本;1:图形
468 出口参数:无
469 ***************************************************************************/
470 void LCD_ChangMode(unsigned char mode)
471 {
472 1 switch(mode)
473 1 {
474 2 case 0:
475 2 {
476 3 FUNCTION_BASIC();
477 3 LCD_DISP_ON();
478 3 break;
479 3 }
480 2 case 1:
481 2 {
482 3 LCD_CURSOR_OFF();
483 3 FUNCTION_EXTEND();
484 3 LCD_GRAPH_CLEAR();
485 3 LCD_GRAPH_ON();
486 3
487 3 break;
488 3 }
489 2 default:
C51 COMPILER V8.08 LCD 10/20/2008 15:12:06 PAGE 9
490 2 break;
491 2 }
492 1 }
493
494 /************************************************************************
495 -------图形方式下坐标变换子程序------------------------------------------
496 *************************************************************************
497 说明:入口参数:坐标,坐标
498 出口参数:是否成功
499 ************************************************************************/
500 unsigned char LCD_CoorShift(unsigned char x,unsigned char y)
501 {
502 1 x=x-1;y=y-1;
503 1 x=x>>4;
504 1 if(x<0||x>8) return ERR;
505 1 if(y>=0&&y<32)
506 1 {
507 2 LCD_WriteCommand(0x80+y);
508 2 LCD_WriteCommand(0x80+x);
509 2 }
510 1 else
511 1 {
512 2 LCD_WriteCommand(0x80+y-32);
513 2 LCD_WriteCommand(0x80+x+8);
514 2 }
515 1 }
516
517 code unsigned short Position[]={0x8000,0x4000,0x2000,0x1000,
518 0x0800,0x0400,0x0200,0x0100,
519 0x0080,0x0040,0x0020,0x0010,
520 0x0008,0x0004,0x0002,0x0001
521 };
522 /************************************************************************
523 -------图形方式下画点子程序------------------------------------------
524 *************************************************************************
525 说明:入口参数:坐标,坐标
526 出口参数:无
527 ************************************************************************/
528 void LCD_PutPiex(unsigned char x,unsigned char y)
529 {unsigned short temp;
530 1 unsigned char temp_H,temp_L;
531 1 LCD_CoorShift(x,y);
532 1 x=x-1;
533 1 x=x%16;
534 1 temp=Position[x];
535 1 temp_L=temp&0x00ff;
536 1 temp_H=(temp>>8)&0x00ff;
537 1 // temp_H|=LCD_ReadData();
538 1 // temp_L|=LCD_ReadData();
539 1 LCD_WriteData(temp_H);
540 1 LCD_WriteData(temp_L);
541 1 }
542
543
544
545
546
547
548 /************************************************************************
549 -------图形方式下打印BMP图画子程序------------------------------------------
550 *************************************************************************
551 说明:入口参数:图画的点数组指针
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -