📄 lcdlong.lst
字号:
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 LCDLONG 10/20/2008 18:56:03 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 ------向LCD指定位置写汉字子程序--------------------------------------------
452 ***************************************************************************
453 说明:每次只能写一个汉字
454 入口参数:坐标,坐标,待写字符
455 出口参数:成功与否
456 ***************************************************************************/
457 void LCD_PutAD(unsigned char x,unsigned char y,char ptr)
458 {
459 1 LCD_Goto(x,y);
460 1 LCD_WriteData(ptr);
461 1 ptr++;
462 1 LCD_WriteData(ptr);
463 1 }
464
465 /**************************************************************************
466 ------向LCD指定位置写字符串子程序------------------------------------------
467 ***************************************************************************
468 说明:入口参数:坐标,坐标,待写字符口串
469 出口参数:成功与否
470 ***************************************************************************/
471 void LCD_Printf(unsigned char x,unsigned char y,char *ptr)
472 {unsigned char i;
473 1 LCD_Goto(x,y);
474 1 for(i=0;*(ptr+i)!=0;i++)
475 1 LCD_WriteData(*(ptr+i));
476 1 }
477
478
479
480 /**************************************************************************
481 ------图形文本方式变换子程序-----------------------------------------------
482 ***************************************************************************
483 说明:入口参数:液晶显示方式0:文本;1:图形
484 出口参数:无
485 ***************************************************************************/
486 void LCD_ChangMode(unsigned char mode)
487 {
488 1 switch(mode)
489 1 {
C51 COMPILER V8.08 LCDLONG 10/20/2008 18:56:03 PAGE 9
490 2 case 0:
491 2 {
492 3 FUNCTION_BASIC();
493 3 LCD_DISP_ON();
494 3 break;
495 3 }
496 2 case 1:
497 2 {
498 3 LCD_CURSOR_OFF();
499 3 FUNCTION_EXTEND();
500 3 LCD_GRAPH_CLEAR();
501 3 LCD_GRAPH_ON();
502 3
503 3 break;
504 3 }
505 2 default:
506 2 break;
507 2 }
508 1 }
509
510 /************************************************************************
511 -------图形方式下坐标变换子程序------------------------------------------
512 *************************************************************************
513 说明:入口参数:坐标,坐标
514 出口参数:是否成功
515 ************************************************************************/
516 unsigned char LCD_CoorShift(unsigned char x,unsigned char y)
517 {
518 1 x=x-1;y=y-1;
519 1 x=x>>4;
520 1 if(x<0||x>8) return ERR;
521 1 if(y>=0&&y<32)
522 1 {
523 2 LCD_WriteCommand(0x80+y);
524 2 LCD_WriteCommand(0x80+x);
525 2 }
526 1 else
527 1 {
528 2 LCD_WriteCommand(0x80+y-32);
529 2 LCD_WriteCommand(0x80+x+8);
530 2 }
531 1 }
532
533 code unsigned short Position[]={0x8000,0x4000,0x2000,0x1000,
534 0x0800,0x0400,0x0200,0x0100,
535 0x0080,0x0040,0x0020,0x0010,
536 0x0008,0x0004,0x0002,0x0001
537 };
538 /************************************************************************
539 -------图形方式下画点子程序------------------------------------------
540 *************************************************************************
541 说明:入口参数:坐标,坐标
542 出口参数:无
543 ************************************************************************/
544 void LCD_PutPiex(unsigned char x,unsigned char y)
545 {unsigned short temp;
546 1 unsigned char temp_H,temp_L;
547 1 LCD_CoorShift(x,y);
548 1 x=x-1;
549 1 x=x%16;
550 1 temp=Position[x];
551 1 temp_L=temp&0x00ff;
C51 COMPILER V8.08 LCDLONG 10/20/2008 18:56:03 PAGE 10
552 1 temp_H=(temp>>8)&0x00ff;
553 1 // temp_H|=LCD_ReadData();
554 1 // temp_L|=LCD_ReadData();
555 1 LCD_WriteData(temp_H);
556 1 LCD_WriteData(temp_L);
557 1 }
558
559
560
561
562
563
564 /************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -