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

📄 lcd.lst

📁 c8051f020+CH375读写U盘文件的程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 211                  }
 212          */
 213          /********************************************************************
 214          ------图形界面初始化子程序----------------------------------------------
 215          ********************************************************************/
 216          /*void LCD_GRAPH_CLEAR(void)
 217          {
 218                          unsigned char i,j;
 219                  for(i=0;i<0x20;i++)
 220                  {
 221          
 222                          for(j=0;j<0x10;j++)
 223                                  {
 224                                  LCD_WriteCommand(0x80+i);
 225                                  LCD_WriteCommand(0x80+j);
 226                                  //Delay1ms(1);
 227                                  _nop_();
 228                                  LCD_WriteData(0x00);
 229                                  LCD_WriteData(0x00);
 230                                  }
 231                  }        
 232                   
 233          }       */
 234          
 235          /********************************************************************
 236          ------向LCD初始化子程序----------------------------------------------
 237          *********************************************************************
 238          说明:入口参数:无
 239                    出口参数:无
 240          *********************************************************************/
 241          void LCD_Init(void)                                             //初始化LCD
C51 COMPILER V8.02   LCD                                                                   07/21/2008 09:40:00 PAGE 5   

 242                  {
 243   1              Delay1ms(120);
 244   1              FUNCTION_BASIC();                                       //基本指令动作
 245   1              Delay1us(300);
 246   1              FUNCTION_BASIC();
 247   1              Delay1us(120);
 248   1              LCD_DISP_ON();                                  //开显示
 249   1              Delay1us(300);
 250   1              LCD_CLEAR();                                            //清屏
 251   1              Delay1ms(40);
 252   1              LCD_ENTRYMODE_INC();                        //光标移动方式为增加
 253   1              }
 254          
 255          
 256          /**************************************************************************
 257          ------坐标变换子程序-------------------------------------------------------
 258          ***************************************************************************
 259          说明:入口参数:坐标,坐标
 260                    出口参数:成功与否
 261          **************************************************************************/
 262          unsigned char LCD_Goto(unsigned char x,unsigned char y)
 263                  {unsigned char cur;
 264   1              x=x-1;y=y-1;
 265   1              if((y>=0)&&(y<8))
 266   1                      switch(x)
 267   1                              {case 0:         
 268   2                                      {
 269   3                                      cur=y;
 270   3                                      LCD_SETADD();
 271   3                                      break;
 272   3                                      }
 273   2                              case 1:
 274   2                                      {
 275   3                                      cur=16+y;
 276   3                                      LCD_SETADD();
 277   3                                      break;}
 278   2                              case 2:
 279   2                                      {
 280   3                                      cur=8+y;
 281   3                                      LCD_SETADD();
 282   3                                      break;
 283   3                                      }
 284   2                              case 3:
 285   2                                      {
 286   3                                      cur=24+y;
 287   3                                      LCD_SETADD();
 288   3                                      break;
 289   3                                      }
 290   2                              default:
 291   2                                      {break;}
 292   2                              }
 293   1              else    
 294   1                      return  ERR;
 295   1              }
 296          
 297          
 298          /**************************************************************************
 299          ------向指定坐标位置写字符子程序-------------------------------------------------------
 300          ***************************************************************************
 301          说明:入口参数:坐标,坐标,字符
 302                    出口参数:成功与否
 303          **************************************************************************/
C51 COMPILER V8.02   LCD                                                                   07/21/2008 09:40:00 PAGE 6   

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

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

⌨️ 快捷键说明

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