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

📄 lcd.lst

📁 8051单片机结合BU2614的PLL程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 251                  {unsigned char cur;
 252   1              x=x-1;y=y-1;
 253   1              if((y>=0)&&(y<8))
 254   1                      switch(x)
 255   1                              {case 0:         
 256   2                                      {
 257   3                                      cur=y;
 258   3                                      LCD_SETADD();
 259   3                                      break;
 260   3                                      }
 261   2                              case 1:
 262   2                                      {
 263   3                                      cur=16+y;
 264   3                                      LCD_SETADD();
 265   3                                      break;}
 266   2                              case 2:
 267   2                                      {
 268   3                                      cur=8+y;
 269   3                                      LCD_SETADD();
 270   3                                      break;
 271   3                                      }
 272   2                              case 3:
 273   2                                      {
 274   3                                      cur=24+y;
 275   3                                      LCD_SETADD();
 276   3                                      break;
 277   3                                      }
 278   2                              default:
 279   2                                      {break;}
 280   2                              }
 281   1              else    
 282   1                      return  ERR;
 283   1              }
 284          
 285          
 286          /**************************************************************************
 287          ------向指定坐标位置写字符子程序-------------------------------------------------------
 288          ***************************************************************************
 289          说明:入口参数:坐标,坐标,字符
 290                    出口参数:成功与否
 291          **************************************************************************/
 292          
 293          void LCD_PutChar(unsigned char x,unsigned char y, unsigned char ch)
 294                  {LCD_Goto(x,y);
 295   1               LCD_WriteData(ch);
 296   1              }
 297                                  
 298          /**************************************************************************
 299          ------向LCD指定位置写汉字子程序--------------------------------------------
 300          ***************************************************************************
 301          说明:每次只能写一个汉字
 302                    入口参数:坐标,坐标,待写字符
 303                    出口参数:成功与否
C51 COMPILER V8.02   LCD                                                                   06/07/2008 19:32:58 PAGE 6   

 304          ***************************************************************************/    
 305          void LCD_PutHZ(unsigned char x,unsigned char y,unsigned int *ptr)
 306                  {
 307   1              unsigned char *temp,i;
 308   1              LCD_Goto(x,y);
 309   1              _nop_();
 310   1              temp=(unsigned char *)ptr;
 311   1              for(i=0;*temp!=0;i++)
 312   1                {
 313   2                 LCD_WriteData(*temp);
 314   2             temp++;
 315   2                 LCD_WriteData(*temp);
 316   2                 temp++;
 317   2                }
 318   1              Delay1us(40);
 319   1              }
 320          
 321          
 322          /**************************************************************************
 323          ------向LCD指定位置写字符串子程序------------------------------------------
 324          ***************************************************************************
 325          说明:入口参数:坐标,坐标,待写字符口串
 326                    出口参数:成功与否
 327          ***************************************************************************/
 328          void LCD_Printf(unsigned char x,unsigned char y,char *ptr)
 329                  {unsigned char i;
 330   1              LCD_Goto(x,y);
 331   1              _nop_();
 332   1              for(i=0;*(ptr+i)!=0;i++)
 333   1                      LCD_WriteData(*(ptr+i));
 334   1              Delay1us(40);
 335   1              }
 336          //********************************************************************
 337          //向lcd中连续写入半角字符,主要用于十进制数值的字符显示
 338          //入口参数:x坐标,y坐标,半角(数字字符)      
 339          //*********************************************************************
 340          void LCD_PutData(unsigned char x,unsigned char y,  char *ch)
 341          {static char chh[2];
 342   1       if (cc==0)     
 343   1          {LCD_Goto(x,y);
 344   2               LCD_WriteData(*ch);
 345   2               chh[0]=*ch;
 346   2               cc=1;
 347   2          }
 348   1       else
 349   1         {chh[1]=*ch;
 350   2              cc=0;
 351   2          LCD_Goto(x,y);
 352   2              LCD_WriteData(*chh);
 353   2              LCD_WriteData(*(chh+1));
 354   2         }    
 355   1              
 356   1      }
 357          
 358          //*********************************************** 
 359          //显示十进制数字
 360          //入口参数:坐标,坐标,显示的数据
 361          //由于定义的数据的限制,十进制数据长度最长为9位
 362          //****************************
 363          void LCD_PutDec(unsigned char x,unsigned char y,  unsigned long decdata)
 364          {unsigned char dat[Declenth];
 365   1       unsigned char i,j;
C51 COMPILER V8.02   LCD                                                                   06/07/2008 19:32:58 PAGE 7   

 366   1       for(i=0;i<Declenth;i++)
 367   1          {dat[i]=decdata%10;
 368   2           decdata=decdata/10;
 369   2          }
 370   1       for(i=Declenth;i>0;i--)
 371   1          {if(dat[i-1]>0){j=i;break;}
 372   2              }
 373   1       for(i=Declenth;i>j;i--){LCD_PutData(x,(Declenth-i)/2+y,character+11);Delay1ms(1);
 374   2                              }
 375   1      
 376   1       for(i=j;i>0;i--)
 377   1          {LCD_PutData(x,(Declenth-i)/2+y,character+dat[i-1]);Delay1ms(1);
 378   2              }
 379   1       cc=0;
 380   1      
 381   1      } 
 382          //*****************************************************************
 383          //显示浮点型的十进制数值
 384          //入口参数:坐标,坐标,数值
 385          //整数和小数部分的长度在lcd.h文件中定义 ,由于定义的数据的限制,小数和整数的长度最长为9位
 386          //N=(unsigned long)floatdata;floatdata赋予小数部分的值再将小数点移至右边;Dp=(unsigned long)floatdata;
 387          //******************************************
 388          void LCD_PutFloat(unsigned char x,unsigned char y,  float floatdata)
 389          {unsigned char datN[FloatNlenth];
 390   1       unsigned char datDp[FloatDplenth];
 391   1       unsigned char datNDp[FloatLenth];
 392   1       unsigned char i,j;
 393   1       unsigned long N;
 394   1       unsigned long Dp;
 395   1      
 396   1       N=(unsigned long)floatdata;
 397   1       floatdata=floatdata-N;   //取出小数部分
 398   1       for(i=0;i<FloatNlenth;i++)     //取出整数部分按由高到低的顺序存入datN[0]到datN[FloatNlenth-1]
 399   1          {datN[FloatNlenth-i-1]=N%10;N=N/10;}
 400   1      
 401   1       for(i=0;i<FloatDplenth;i++) //将小数数部分按由高到低的顺序存入datDp[0]到datDp[FloatDplenth-1]
 402   1       {floatdata=10*floatdata;}
 403   1       Dp=(unsigned long)floatdata; //Dp最多为9位
 404   1       for(i=0;i<FloatDplenth;i++){datDp[FloatDplenth-i-1]=Dp%10;Dp=Dp/10;}
 405   1      
 406   1       for(i=0;i<FloatNlenth;i++){datNDp[i]=datN[i];}//按整数 小数点 小数     的连接顺序存入datNDp数组中
 407   1       datNDp[i]=10; i=i+1;
 408   1       for(;i<FloatNlenth+FloatDplenth+1;i++)
 409   1          {j=i-FloatNlenth-1;
 410   2               datNDp[i]=datDp[j];
 411   2              }
 412   1      
 413   1       //在指定位置依次显示数字
 414   1       j=0;
 415   1       for(i=0;i<FloatNlenth-1;i++){if(datNDp[i]>0){j=i;break;}}
 416   1       if(j>0)
 417   1         {for(i=0;i<j;i++){datNDp[i]=11;}}
 418   1       for(i=1;i<FloatLenth+1;i++){LCD_PutData(x,(i-1)/2+y,character+datNDp[i-1]);Delay1ms(1);}
 419   1       cc=0;//cc=0初始化函数 LCD_PutData;
 420   1      
 421   1      } 
 422                          
 423          
 424          /**************************************************************************
 425          ------图形文本方式变换子程序-----------------------------------------------
 426          ***************************************************************************
 427          说明:入口参数:液晶显示方式0:文本;1:图形
C51 COMPILER V8.02   LCD                                                                   06/07/2008 19:32:58 PAGE 8   

 428                    出口参数:无
 429          ***************************************************************************/
 430          void LCD_ChangMode(unsigned char mode)
 431                  {
 432   1              switch(mode)
 433   1                      {
 434   2                      case 0:
 435   2                              {
 436   3                              FUNCTION_BASIC();
 437   3                              LCD_DISP_ON();
 438   3                              break;
 439   3                              }
 440   2                      case 1:
 441   2                              {
 442   3                              LCD_CURSOR_OFF();
 443   3                              FUNCTION_EXTEND();
 444   3                              LCD_GRAPH_CLEAR();
 445   3                              LCD_GRAPH_ON();
 446   3                              
 447   3                              break;
 448   3                              }
 449   2                      default:
 450   2                              break;
 451   2                      }
 452   1         }
 453          
 454          /************************************************************************
 455          -------图形方式下坐标变换子程序------------------------------------------
 456          *************************************************************************
 457          说明:入口参数:坐标,坐标
 458                    出口参数:是否成功
 459          ************************************************************************/  
 460          unsigned char LCD_CoorShift(unsigned char x,unsigned char y)
 461                  {
 462   1              x=x-1;y=y-1;
 463   1              x=x>>4;
 464   1              if(x<0||x>8)    return  ERR;
 465   1              if(y>=0&&y<32)
 466   1                              {
 467   2                              LCD_WriteCommand(0x80+y);
 468   2                              LCD_WriteCommand(0x80+x);
 469   2                              }
 470   1              else
 471   1                              {
 472   2                              LCD_WriteCommand(0x80+y-32);
 473   2                              LCD_WriteCommand(0x80+x+8);
 474   2                              }
 475   1              }
 476          
 477          code unsigned short Position[]={0x8000,0x4000,0x2000,0x1000,
 478                                                                     0x0800,0x0400,0x0200,0x0100,
 479                                                                     0x0080,0x0040,0x0020,0x0010,
 480                                                                     0x0008,0x0004,0x0002,0x0001
 481                                                                     };
 482          /************************************************************************
 483          -------图形方式下画点子程序------------------------------------------
 484          *************************************************************************
 485          说明:入口参数:坐标,坐标
 486                    出口参数:无
 487          ************************************************************************/ 
 488          void LCD_PutPiex(unsigned char x,unsigned char y)
 489                  {unsigned short temp;
C51 COMPILER V8.02   LCD                                                                   06/07/2008 19:32:58 PAGE 9   

 490   1              unsigned char   temp_H,temp_L;
 491   1              LCD_CoorShift(x,y);
 492   1              x=x-1;
 493   1              x=x%16;
 494   1              temp=Position[x];
 495   1              temp_L=temp&0x00ff;
 496   1              temp_H=(temp>>8)&0x00ff;
 497   1      //      temp_H|=LCD_ReadData();
 498   1      //      temp_L|=LCD_ReadData();
 499   1              LCD_WriteData(temp_H);
 500   1              LCD_WriteData(temp_L);
 501   1              }
 502          
 503          
 504          
 505          
 506          
 507          
 508          /************************************************************************
 509          -------图形方式下打印BMP图画子程序------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -