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

📄 read4442.lst

📁 一个LCD2002液晶屏驱动程序,对于想对LCD想对LCD编程的朋友可以参考.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   READ4442                                                              10/21/2008 15:39:51 PAGE 4   

 180   1      
 181   1          i = 300;
 182   1          do
 183   1          {
 184   2            ;
 185   2          } while (--i != 0);
 186   1      }
 187          
 188          void  Lcd2002SendComm(INT8U Command)
 189          {
 190   1          Lcd2002Delay();
 191   1          LCD2002_SEND_COMMAND(Command);
 192   1      }
 193          
 194          void  Lcd2002SendDate(INT8U Data)
 195          {
 196   1          Lcd2002Delay();
 197   1          LCD2002_SEND_DATA(Data);
 198   1      }
 199          
 200          void  Lcd2002DispStr(INT8U x, INT8U y, INT8S *Data)
 201          {
 202   1          if (y == 1)                                                 /* 在第一行显示 */
 203   1          {
 204   2              if (x < (20 + 1))                                       /* 有效的列号   */
 205   2              {
 206   3                  Lcd2002SendComm(LCD2002_LINE1 - 1 + x);             /* 设置显示地址 */
 207   3                  for( ; x < (20 + 1) && *Data != '\0'; x++)          /* 显示到字符串结束 */
 208   3                                                                      /* 或是行结束   */
 209   3                  {
 210   4                      Lcd2002SendDate(*Data++);                       /* 显示一个字符 */
 211   4                  }
 212   3                  if (*Data != '\0')                                  /* 字符串没有结束 */
 213   3                  {
 214   4                      x = 1;                                          /* 从第二行第一列 */
 215   4                      y = 2;                                          /* 继续显示       */
 216   4                  }
 217   3              }
 218   2          }
 219   1          if (y == 2)                                                 /* 在第二行显示 */
 220   1          {
 221   2              Lcd2002SendComm(LCD2002_LINE2 - 1 + x);                 /* 设置显示地址 */
 222   2              for( ; x < (20 + 1) && *Data != '\0'; x++)              /* 显示到字符串结束 */
 223   2                                                                      /* 或是行结束   */
 224   2              {
 225   3                  Lcd2002SendDate(*Data++);                           /* 显示一个字符 */
 226   3              }
 227   2          }
 228   1      }
 229          
 230          void  Lcd2002DispCha(INT8U x, INT8U y, INT8U Data)
 231          {
 232   1          if (y == 1)                                                 /* 在第一行显示 */
 233   1          {
 234   2              if (x < (20 + 1))                                       /* 有效的列号   */
 235   2              {
 236   3                 Lcd2002SendComm(LCD2002_LINE1 - 1 + x);              /* 设置显示地址 */
 237   3                  Lcd2002SendDate(Data);                              /* 显示一个字符 */
 238   3              }
 239   2          }
 240   1          if (y == 2)                                                 /* 在第二行显示 */
 241   1          {
C51 COMPILER V8.08   READ4442                                                              10/21/2008 15:39:51 PAGE 5   

 242   2              Lcd2002SendComm(LCD2002_LINE2 - 1 + x);                 /* 设置显示地址 */
 243   2              
 244   2                  Lcd2002SendDate(Data);                              /* 显示一个字符 */
 245   2          }
 246   1      }
 247          
 248          void Lcd2002Clr(INT8U y)
 249          {
 250   1          INT8U i;
 251   1          
 252   1          if(y==1)
 253   1          {
 254   2              Lcd2002SendComm(LCD2002_LINE1);
 255   2          }
 256   1          if(y==2)
 257   1          {
 258   2              Lcd2002SendComm(LCD2002_LINE2);
 259   2          }
 260   1          for(i=0;i<20;i++)  
 261   1            {
 262   2                Lcd2002SendDate(' ');
 263   2            }
 264   1      }
 265          
 266          void  Lcd2002Init(void)
 267          {
 268   1          Lcd2002SendComm(LCD2002_MODE);          // 设置LCM模式(系统方式设置)
 269   1          Lcd2002SendComm(LCD2002_NO_FLASH);      // 打开LCM显示,无光标
 270   1          Lcd2002SendComm(LCD2002_NO_SHIFT);      // 字符向地址递增,光标移动
 271   1          Lcd2002SendComm(LCD2002_SH);            // 重新设为光标移动,向右移
 272   1          Lcd2002Clr(1);                          // 清屏
 273   1          Lcd2002Clr(2);
 274   1      }
 275          
 276          
 277          void serial_int(void) interrupt SIO_VECTOR using 3
 278          {
 279   1        uchar c;
 280   1        if(_testbit_(RI))
 281   1        c = SBUF;
 282   1        switch(recv_state)
 283   1         {
 284   2           case FSA_INIT:
 285   2                 if (c == 0xEA)
 286   2                   recv_state = FSA_ADDRESS;
 287   2                 else 
 288   2                   recv_state = FSA_INIT;
 289   2                 break;
 290   2               case FSA_ADDRESS:
 291   2                 if (c == address)
 292   2                   recv_state = FSA_DATA;
 293   2                 else 
 294   2                   recv_state = FSA_INIT;
 295   2                 break;
 296   2               case FSA_DATA:
 297   2                 {
 298   3                  command_buffer_pre[recv_ctr] = c;
 299   3                  recv_ctr ++;
 300   3                    if (recv_ctr >= BN)
 301   3                        {
 302   4                              message_flag = 1;
 303   4                              if(message_disp == 1)
C51 COMPILER V8.08   READ4442                                                              10/21/2008 15:39:51 PAGE 6   

 304   4                              memcpy(command_buffer_cur,command_buffer_pre,16);
 305   4                              recv_state = FSA_INIT;
 306   4                              recv_ctr = 0;
 307   4                }
 308   3                        else
 309   3                          recv_state = FSA_DATA;
 310   3      //              command = compare_command_buffer();
 311   3                 };
 312   2                 break;
 313   2         }
 314   1      }
 315          
 316          
 317          uchar compare_command_buffer(void) reentrant
 318          {
 319   1       //uchar compare;
 320   1      // uchar i;
 321   1      // for(compare=0;compare<6;compare++)
 322   1       // {
 323   1      //              i = strncmp(command_buffer_cur,command_buffer_OK,BN);
 324   1                      if(!strncmp(command_buffer_cur,command_buffer_OK,16))
 325   1                      {
 326   2                              return(0x02);
 327   2                      }
 328   1      //              i = strncmp(command_buffer_cur,command_buffer_Pin15ConnectPin16,BN);
 329   1      
 330   1                      else if(!strncmp(command_buffer_cur,command_buffer_Pin15ConnectPin16,16))
 331   1                      {
 332   2                              return(0x03);
 333   2                      }
 334   1      //              i = strncmp(command_buffer_cur,command_buffer_Pin4ConnectPin5,BN);
 335   1                      else if(!strncmp(command_buffer_cur,command_buffer_Pin4ConnectPin5,16))
 336   1                      {
 337   2                              return(0x04);
 338   2                      }
 339   1      //              i = strncmp(command_buffer_cur,command_buffer_Pin19ConnectPin20,BN);
 340   1                      if(!strncmp(command_buffer_cur,command_buffer_Pin19ConnectPin20,16))
 341   1                      {
 342   2                              return(0x05);
 343   2                      }
 344   1      
 345   1                      else
 346   1                              return(0x01);
 347   1      //  }
 348   1      // message_flag=1;
 349   1      // return(0x01);
 350   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    857    ----
   CONSTANT SIZE    =    147    ----
   XDATA SIZE       =    116       4
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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