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

📄 new.lst

📁 这是我自己写的一段程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 220   1      }
 221          
 222          void SEND_1(void)
 223          {
 224   1              /*发送1,在SCL为高电平时使SDA信号为高*/
 225   1          SDA=1;
 226   1          SCL=1;
 227   1          Delay2408(Delay2408_TIME);
 228   1          SCL=0;
 229   1          Delay2408(Delay2408_TIME);
 230   1      }
 231          
 232          bit Check_Acknowledge(void)
 233          {
 234   1              /*发送完一个字节后检验设备的应答信号*/
 235   1          SDA=1;
 236   1          SCL=1;
 237   1          Delay2408(Delay2408_TIME/2);
 238   1          F0=SDA;
 239   1          Delay2408(Delay2408_TIME/2);
 240   1          SCL=0;
 241   1          Delay2408(Delay2408_TIME);
 242   1          if(F0==1)
 243   1              return FALSE;
 244   1          return TRUE;
 245   1      }
 246          
 247          void WriteI2CByte(unsigned char b)reentrant
 248          {
 249   1              /*向I2C总线写一个字节*/
 250   1          unsigned char i;
 251   1          for(i=0;i<8;i++)
 252   1                      if((b<<i)&0x80)
 253   1                      SEND_1();
 254   1              else
 255   1                  SEND_0();
 256   1      }
 257          
 258          unsigned char ReadI2CByte(void)reentrant
 259          {
 260   1              /*从I2C总线读一个字节*/
 261   1              unsigned char b=0,i;
 262   1              for(i=0;i<8;i++)
 263   1          {
 264   2                      SDA=1;    /*释放总线*/
C51 COMPILER V8.05a   NEW                                                                  11/16/2007 20:45:07 PAGE 6   

 265   2              SCL=1;    /*接受数据*/
 266   2              Delay2408(10);
 267   2              F0=SDA;
 268   2              Delay2408(10);
 269   2              SCL=0;
 270   2              if(F0==1)
 271   2              {
 272   3                      b=b<<1;
 273   3                  b=b|0x01;
 274   3              }
 275   2              else
 276   2                  b=b<<1;
 277   2          }
 278   1          return b;
 279   1      }
 280          
 281          /**********以下为读写24c02的函数***********************************************/
 282          void Write_One_Byte(unsigned char addr,unsigned char thedata)
 283          {
 284   1              bit acktemp=1;
 285   1          /*write a byte to mem*/
 286   1          I2C_Start();
 287   1          WriteI2CByte(0xa0);
 288   1          acktemp=Check_Acknowledge();
 289   1          WriteI2CByte(addr);               /*address*/
 290   1          acktemp=Check_Acknowledge();
 291   1          WriteI2CByte(thedata);           /*thedata*/
 292   1          acktemp=Check_Acknowledge();
 293   1          I2C_Stop();
 294   1      }
 295          
 296          /******************************************************************************/
 297          char Read_One_Byte(unsigned char addr)
 298          {         
 299   1              bit acktemp=1;
 300   1          unsigned char mydata;
 301   1          /*read a byte from mem*/
 302   1          I2C_Start();
 303   1          WriteI2CByte(0xa0);
 304   1          acktemp=Check_Acknowledge();
 305   1          WriteI2CByte(addr);/*address*/
 306   1          acktemp=Check_Acknowledge();
 307   1          I2C_Start();
 308   1          WriteI2CByte(0xa1);
 309   1          acktemp=Check_Acknowledge();
 310   1          mydata=ReadI2CByte();
 311   1          acktemp=Check_Acknowledge();
 312   1          return mydata;
 313   1          I2C_Stop();
 314   1      }
 315          
 316          /******************************************************************************/
 317          void Delay(int num)//延时函数
 318          {
 319   1              while(num--) ;
 320   1      }
 321          
 322          /*12864driver.c*/
 323          /******************************************************************************/
 324          void Delay12864(unsigned int t)//
 325          {
 326   1              unsigned int i,j;
C51 COMPILER V8.05a   NEW                                                                  11/16/2007 20:45:07 PAGE 7   

 327   1              for(i=0;i<t;i++)
 328   1              {
 329   2                      for(j=0;j<10;j++);
 330   2              }
 331   1      }
 332          
 333          /******************************************************************************/
 334          void write_com(unsigned char cmdcode)//写命令到LCD
 335          {
 336   1              Di = 0;
 337   1              RW = 0;
 338   1      
 339   1              Lcd_Bus = cmdcode;
 340   1          Delay12864(0);
 341   1              Enable = 1;
 342   1              Delay12864(0);
 343   1              Enable = 0;
 344   1      }
 345          
 346          /******************************************************************************/
 347          void write_data(unsigned char Dispdata)//写数据到LCD
 348          {
 349   1              Di = 1;
 350   1              RW = 0;
 351   1      
 352   1              Lcd_Bus = Dispdata;
 353   1              Delay12864(0);
 354   1              Enable = 1;
 355   1              Delay12864(0);
 356   1              Enable = 0;
 357   1      }
 358          
 359          /*******************************************************************************/
 360          void frame(void)//显示边框
 361          {
 362   1              unsigned char i;
 363   1              Mcs = 1;
 364   1              Scs = 1;
 365   1              write_com(Page_Add+0);
 366   1              write_com(Col_Add+0);
 367   1              for(i=0;i<64;i++) 
 368   1              {
 369   2                      write_data(0x01);
 370   2              }
 371   1              write_com(Page_Add+7);
 372   1              write_com(Col_Add+0);
 373   1              for(i=0;i<64;i++)
 374   1              {
 375   2                      write_data(0x80);
 376   2              }
 377   1              for(i=0;i<8;i++)
 378   1              {
 379   2                      Mcs=0;
 380   2                      Scs=1;
 381   2                      write_com(Page_Add+i);
 382   2                      write_com(Col_Add+63);
 383   2                      write_data(0xff);
 384   2                      Mcs=1;
 385   2                      Scs=0;
 386   2                      write_com(Page_Add+i);
 387   2                      write_com(Col_Add+0);
 388   2                      write_data(0xff);
C51 COMPILER V8.05a   NEW                                                                  11/16/2007 20:45:07 PAGE 8   

 389   2              }
 390   1      }
 391          
 392          /******************************************************************************/
 393          void Clr_Scr(void)//清除内存
 394          {
 395   1              unsigned char j,k;
 396   1              Mcs=1;Scs=1;
 397   1              write_com(Page_Add+0);
 398   1              write_com(Col_Add+0);
 399   1      
 400   1              for(k=0;k<8;k++)
 401   1              {
 402   2                      write_com(Page_Add+k);
 403   2              write_com(Col_Add+0);
 404   2      
 405   2                      for(j=0;j<64;j++)
 406   2                      {
 407   3                              write_data(0x00);
 408   3                      }
 409   2              }
 410   1      }
 411          
 412          /*******************************************************************************/
 413          void Disp_Img(unsigned char code *img)//显示12864图片
 414          {
 415   1              unsigned char j,k;
 416   1              for(k=0;k<8;k++)
 417   1              {
 418   2                      Mcs=1;
 419   2                      Scs=0;
 420   2                      Delay(10);
 421   2                      write_com(Page_Add+k);
 422   2                      write_com(Col_Add+0);
 423   2                      for(j=0;j<64;j++) 
 424   2                      {
 425   3                              write_data(img[k*128+j]);
 426   3                      }
 427   2                      Mcs=0;
 428   2                      Scs=1;
 429   2                      Delay(10);
 430   2                      write_com(Page_Add+k);
 431   2                      write_com(Col_Add+0);
 432   2                      for(j=64;j<128;j++)
 433   2                  {
 434   3                              write_data(img[k*128+j]);
 435   3                      }
 436   2              }
 437   1      }
 438          
 439          /*******************************************************************************/
 440          void Disp_Chinese(unsigned char pag,unsigned char col,  char code *hzk)
 441          {   //指定位置显示汉字16*16
 442   1              unsigned char j=0,i=0;
 443   1      
 444   1              for(j=0;j<2;j++)
 445   1              {
 446   2                      write_com(Page_Add+pag+j);
 447   2                      write_com(Col_Add+col);
 448   2                      for(i=0;i<16;i++) 
 449   2                      {
 450   3                              write_data(hzk[16*j+i]);
C51 COMPILER V8.05a   NEW                                                                  11/16/2007 20:45:07 PAGE 9   

 451   3                      }
 452   2              }
 453   1      }
 454          
 455          /*******************************************************************************/
 456          void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
 457          {   //指定位置显示字母或数字8*16
 458   1              unsigned char j=0, i=0;
 459   1      
 460   1              for(j=0;j<2;j++)
 461   1              {
 462   2                      write_com(Page_Add+pag+j);
 463   2                      write_com(Col_Add+col);
 464   2                      for(i=0;i<8;i++) 
 465   2                      {
 466   3                              write_data(hzk[8*j+i]);
 467   3                      }
 468   2              }
 469   1      }
 470          
 471          /********************************************************************************/
 472          void Init_lcd(void)//初始化LCD屏
 473          {
 474   1              Lcd_Rst=0;
 475   1              Delay12864(100);
 476   1              Lcd_Rst=1;
 477   1              Delay12864(100);
 478   1      
 479   1              Mcs=1;  Scs=1;
 480   1      
 481   1              Delay12864(100);
 482   1              write_com(Disp_Off);
 483   1              write_com(Page_Add+0);
 484   1              write_com(Start_Line+0);
 485   1              write_com(Col_Add+0);
 486   1              write_com(Disp_On);

⌨️ 快捷键说明

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