st7920serial.lst

来自「这是TOPWAY公司的LCD驱动程序」· LST 代码 · 共 1,211 行 · 第 1/5 页

LST
1,211
字号
 229   1      }
 230          
 231          /******************************************************************************************
 232          * 函数名称    :Send_byte
 233          * 功能描述    :发送一个字节
 234          * 参数        :  参数名称:    输入/输出?     类型            描述
 235          * 
 236          * 返回值      :
 237          * 作者        :
 238          * 创建日期    :2006-12-19
 239          * 全局变量    :
 240          * 全局静态变量:
 241          * 局部静态变量:
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 5   

 242          *----------------------------------------修改历史------------------------------------------
 243          * 当前版本    :                         修改人:                  修改日期:
 244          * 修改说明    :
 245          ******************************************************************************************/
 246          void Send_byte(unsigned char bbyte) 
 247          {
 248   1                      unsigned char i;
 249   1                      for(i=0;i<8;i++)
 250   1              {
 251   2                      SID=bbyte&0x80; //取出最高位
 252   2                              SCLK=1;
 253   2                      SCLK=0;
 254   2                      bbyte<<=1; //左移
 255   2              }  
 256   1      }
 257          
 258          /******************************************************************************************
 259          * 函数名称    :Delaynms
 260          * 功能描述    :延时
 261          * 参数        :  参数名称:    输入/输出?     类型            描述
 262          * 
 263          * 返回值      :
 264          * 作者        :
 265          * 创建日期    :2006-12-19
 266          * 全局变量    :
 267          * 全局静态变量:
 268          * 局部静态变量:
 269          *----------------------------------------修改历史------------------------------------------
 270          * 当前版本    :                         修改人:                  修改日期:
 271          * 修改说明    :
 272          ******************************************************************************************/
 273          void Delaynms(unsigned int di) 
 274          {
 275   1                      unsigned int da,db;
 276   1                      for(da=0;da<di;da++)
 277   1                      for(db=0;db<10;db++);
 278   1      }
 279          
 280          /******************************************************************************************
 281          * 函数名称    :Disp_img
 282          * 功能描述    :图形方式12864显示字模221 横向取膜
 283          * 参数        :  参数名称:    输入/输出?     类型            描述
 284          * 
 285          * 返回值      :
 286          * 作者        :
 287          * 创建日期    :2006-12-19
 288          * 全局变量    :
 289          * 全局静态变量:
 290          * 局部静态变量:
 291          *----------------------------------------修改历史------------------------------------------
 292          * 当前版本    :                         修改人:                  修改日期:
 293          * 修改说明    :
 294          ******************************************************************************************/
 295          void Disp_img(unsigned char  *img)      
 296          { 
 297   1                      unsigned char i,j;
 298   1                      unsigned int k = 0;
 299   1      
 300   1                      Write_char(0,0x36); //图形方式
 301   1                      for(i=0;i<32;i++)
 302   1                      { 
 303   2                                      Write_char(0,0x80+i);
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 6   

 304   2                                      Write_char(0,0x80);
 305   2                      for(j=0;j<16;j++) 
 306   2                                              {
 307   3                                                      Write_char(1,img[k++]);
 308   3                                              }
 309   2                      }
 310   1      
 311   1                      for(i=0;i<32;i++)
 312   1                      { 
 313   2                                      Write_char(0,0x80+i);
 314   2                                      Write_char(0,0x88);
 315   2                      for(j=0;j<16;j++) 
 316   2                                              {
 317   3                                                      Write_char(1,img[k++]);
 318   3                                      }
 319   2                              }
 320   1      }
 321                  
 322          /******************************************************************************************
 323          * 函数名称    :Clr_Scr
 324          * 功能描述    :清屏函数
 325          * 参数        :  参数名称:    输入/输出?     类型            描述
 326          * 
 327          * 返回值      :
 328          * 作者        :
 329          * 创建日期    :2006-12-19
 330          * 全局变量    :
 331          * 全局静态变量:
 332          * 局部静态变量:
 333          *----------------------------------------修改历史------------------------------------------
 334          * 当前版本    :                         修改人:                  修改日期:
 335          * 修改说明    :
 336          ******************************************************************************************/
 337          void Clr_Scr(void)//清屏函数
 338          {
 339   1                      Write_char(0,0x01);
 340   1      }
 341          
 342          /******************************************************************************************
 343          * 函数名称    : LCD_set_xy
 344          * 功能描述    :设置LCD显示的起始位置,X为行,Y为列
 345          * 参数        :  参数名称:    输入/输出?     类型            描述
 346          * 
 347          * 返回值      :
 348          * 作者        :
 349          * 创建日期    :2006-12-19
 350          * 全局变量    :
 351          * 全局静态变量:
 352          * 局部静态变量:
 353          *----------------------------------------修改历史------------------------------------------
 354          * 当前版本    :                         修改人:                  修改日期:
 355          * 修改说明    :
 356          ******************************************************************************************/
 357          void LCD_set_xy( unsigned char x, unsigned char y )
 358          {       
 359   1          unsigned char address;
 360   1                      switch(x)
 361   1                      {
 362   2                              case 0: 
 363   2                                      address = 0x80 + y; 
 364   2                                      break;    
 365   2              case 1: 
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 7   

 366   2                      address = 0x80 + y; 
 367   2                      break; 
 368   2                              case 2: 
 369   2                                      address = 0x90 + y; 
 370   2                                      break; 
 371   2                      case 3: 
 372   2                              address = 0x88 + y; 
 373   2                              break;
 374   2                              case 4: 
 375   2                                      address = 0x98 + y; 
 376   2                                      break; 
 377   2                              default:
 378   2                                      address = 0x80 + y; 
 379   2                                      break;
 380   2                      }
 381   1          Write_char(0, address);
 382   1      }
 383          
 384          /******************************************************************************************
 385          * 函数名称    :LCD_Write_string
 386          * 功能描述    :中英文字符串显示函数
 387          * 参数        :  参数名称:    输入/输出?     类型            描述
 388          * 
 389          * 返回值      :
 390          * 作者        :
 391          * 创建日期    :2006-12-19
 392          * 全局变量    :
 393          * 全局静态变量:
 394          * 局部静态变量:
 395          *----------------------------------------修改历史------------------------------------------
 396          * 当前版本    :                         修改人:                  修改日期:
 397          * 修改说明    :
 398          ******************************************************************************************/
 399          void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
 400          {       
 401   1                      LCD_set_xy( X, Y );
 402   1          
 403   1          while (*s) 
 404   1          {
 405   2                              Write_char( 1, *s );
 406   2                  s ++;
 407   2                              Delaynms(1);
 408   2                      }
 409   1      }
 410          
 411          /******************************************************************************************
 412          * 函数名称    :LCD_Write_number
 413          * 功能描述    :数字显示函数
 414          * 参数        :  参数名称:    输入/输出?     类型            描述
 415          * 
 416          * 返回值      :
 417          * 作者        :
 418          * 创建日期    :2006-12-19
 419          * 全局变量    :
 420          * 全局静态变量:
 421          * 局部静态变量:
 422          *----------------------------------------修改历史------------------------------------------
 423          * 当前版本    :                         修改人:                  修改日期:
 424          * 修改说明    :
 425          ******************************************************************************************/
 426          void LCD_Write_number(unsigned char s)//        数字显示函数
 427          {       
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 8   

 428   1                      Write_char(1,num[s]);
 429   1                      Delaynms(1);
 430   1      }
 431          
 432          /******************************************************************************************
 433          * 函数名称    :LCD_Write_week
 434          * 功能描述    :显示星期几函数
 435          * 参数        :  参数名称:    输入/输出?     类型            描述
 436          * 
 437          * 返回值      :
 438          * 作者        :
 439          * 创建日期    :2006-12-19
 440          * 全局变量    :
 441          * 全局静态变量:
 442          * 局部静态变量:
 443          *----------------------------------------修改历史------------------------------------------
 444          * 当前版本    :                         修改人:                  修改日期:
 445          * 修改说明    :
 446          ******************************************************************************************/
 447          void LCD_Write_week(unsigned char s)
 448          {
 449   1                      switch(s)
 450   1                      {
 451   2                              case 1: 
 452   2                                      LCD_Write_string(3,2,yi);
 453   2                                      break;
 454   2                              case 2: 
 455   2                                      LCD_Write_string(3,2,er);
 456   2                                      break;
 457   2                              case 3: 
 458   2                                      LCD_Write_string(3,2,san);
 459   2                                      break;
 460   2                              case 4: 
 461   2                                      LCD_Write_string(3,2,si);
 462   2                                      break;
 463   2                              case 5: 

⌨️ 快捷键说明

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