⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lst

📁 c8051f020的fyd12864 c程序 keilc
💻 LST
📖 第 1 页 / 共 4 页
字号:
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 + -