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

📄 lcd.lst

📁 UCOS操作系统在C8051F上移植程序代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 403          /***********************************************************************************
 404          * 函数名称:LCDC_WrData;
 405          *
 406          * 函数功能描述:向LCD写数据;
 407          *              
 408          * 输入参数:unsigned char类型坐标x,y, unsigned char类型写入数据dd;
 409          *
 410          * 返回数据:none;
 411          *
 412          * 注意:    none;
 413          ************************************************************************************/
 414          void LCDC_WrData (unsigned char x, unsigned char y, unsigned char dd)
 415          {    
 416   1              DISABLE_INTERRUPTS;             //关中断
 417   1              LCDC_SetXY (x,y);               //设置屏上的写入位置
 418   1          LCDC_CheckBusy ();          //等待Lcd空闲
 419   1          if (x<64)                           //块1使用 
 420   1                      tp = Lcd_Cs  | 
 421   1                               Lcd_Cs1 | 
 422   1                               Lcd_WrDat;             //写入数据命令
 423   1          else                                        //块2使用 
 424   1                      tp = Lcd_Cs  | 
C51 COMPILER V8.08   LCD                                                                   01/08/2009 16:11:58 PAGE 8   

 425   1                               Lcd_Cs2 | 
 426   1                               Lcd_WrDat;             //写入数据命令
 427   1              *tp = dd;                               //数据写入
 428   1              ENABLE_INTERRUPTS;              //关中断
 429   1      }
 430          
 431          /***********************************************************************************
 432          * 函数名称:LCDC_RdData;
 433          *
 434          * 函数功能描述:从LCD中读数据;
 435          *              
 436          * 输入参数:unsigned char类型坐标x,y, 
 437          *
 438          * 返回数据:unsigned char类型读出数据;
 439          *
 440          * 注意:    none;
 441          ************************************************************************************/
 442          unsigned char LCDC_RdData (unsigned char x, unsigned char y)
 443          {  
 444   1              unsigned char xdata readdata;
 445   1              LCDC_SetXY (x, y);                      //设置屏上的写入位置
 446   1              LCDC_CheckBusy ();                      //等待Lcd空闲
 447   1              if (x<64)                                       //块1使用 
 448   1              {
 449   2                      addr = Lcd_Cs  |
 450   2                                 Lcd_Cs1 |
 451   2                                 Lcd_RdDat;           //读取数据命令
 452   2                      tp   = Lcd_Cs  |
 453   2                                 Lcd_Cs1 |
 454   2                                 Lcd_RdDat;
 455   2              }
 456   1              else                                            //块2使用
 457   1              {
 458   2                      addr = Lcd_Cs  |
 459   2                                 Lcd_Cs2 |
 460   2                                 Lcd_RdDat;           //读取数据命令                          
 461   2                      tp   = Lcd_Cs  |
 462   2                                 Lcd_Cs2 |
 463   2                                 Lcd_RdDat;   
 464   2              }
 465   1              readdata = *tp;                         //数据读出
 466   1              LCDC_CheckBusy ();                      //等待Lcd空闲
 467   1              if (x<64)                                       //块1使用 
 468   1              {
 469   2                      addr = Lcd_Cs  |
 470   2                                 Lcd_Cs1 |
 471   2                                 Lcd_RdDat;           //读取数据命令
 472   2                      tp   = Lcd_Cs  |
 473   2                                 Lcd_Cs1 |
 474   2                                 Lcd_RdDat;
 475   2              }
 476   1              else                                            //块2使用
 477   1              {
 478   2                      addr = Lcd_Cs  |
 479   2                                 Lcd_Cs2 |
 480   2                                 Lcd_RdDat;           //读取数据命令                          
 481   2                      tp   = Lcd_Cs  |
 482   2                                 Lcd_Cs2 |
 483   2                                 Lcd_RdDat;   
 484   2              }
 485   1              readdata = *tp;                         //数据读出
 486   1      
C51 COMPILER V8.08   LCD                                                                   01/08/2009 16:11:58 PAGE 9   

 487   1              return readdata;
 488   1      }
 489          
 490          /***********************************************************************************
 491          * 函数名称:LCDC_DrawByte;
 492          *
 493          * 函数功能描述:向LCD写一个字节数据;
 494          *              
 495          * 输入参数:BYTE类型坐标x,y;BYTE类型字节数据value;
 496          *
 497          * 返回数据:none;
 498          *
 499          * 注意:    数据显示在液晶点(x,y)(x,y+1)(x,y+2)(x,y+3)(x,y+4)(x,y+5)(x,y+6)(x,y+7)上,
 500          *           请参考DMC12864.pdf;
 501          ***********************************************************************************/
 502          void  LCDC_DrawByte (unsigned char x, y, value)
 503          {
 504   1              unsigned char data temp,bit_x;
 505   1      
 506   1              bit_x = y%8;                                            //计算数据写入目标地址起点所在显示字节内的位置
 507   1              y     = y/8;                                            //计算数据写入目标地址起点所在显示字节
 508   1              if (bit_x==0)                                           //如果起点在显示字节的"0"位则数据直接写入
 509   1                      LCDC_WrData (x, y, value);
 510   1              else                                                            //如果起点不在显示字节的"0"位
 511   1              {       
 512   2                      temp  = LCDC_RdData (x, y);             //读出数据写入目标地址起点所在显示字节内的数据          
 513   2                      temp &= (0xff>>(8-bit_x));              //保留新数据写如不占用位的数据
 514   2                      temp |= (value<<bit_x);                 //新数据与原数据组合
 515   2                      LCDC_WrData (x, y, temp);               //更新LCD上此位置的数据显示
 516   2                      temp  = LCDC_RdData(x, y+1);    //读出数据写入目标地址末点所在显示字节内的数据
 517   2                      temp &= (0xff<<bit_x);                  //保留新数据写如不占用位的数据
 518   2                      temp |= (value>>(8-bit_x));             //新数据与原数据组合
 519   2                      LCDC_WrData (x, y+1, temp);             //更新LCD上此位置的数据显示
 520   2              }
 521   1      }
 522          
 523          /***********************************************************************************
 524          * 函数名称:LCDC_DispWord;
 525          *
 526          * 函数功能描述:向LCD写一组数据,显示黑字符;
 527          *              
 528          * 输入参数:unsiggned char类型写入起始坐标x,y,unsigned char类型写入数据code区指针p;
 529          *           unsigned char类型占用空间line*8行,length列,图形颜色取反标志位;
 530          *
 531          * 返回数据:none;
 532          *
 533          * 注意:    none;
 534          ************************************************************************************/
 535          void LCDC_DispWord (unsigned char x, y, unsigned char code *p, unsigned char line, length, Flag)
 536          {
 537   1              unsigned char data i,j; 
 538   1      
 539   1              y += (4<<line); 
 540   1              if (y>64)
 541   1                      y = 64;
 542   1              y = 64-y;
 543   1              if (Flag)
 544   1              {
 545   2                      for (i=0; i<line;   i++)
 546   2                      for (j=0; j<length; j++)
 547   2                              LCDC_DrawByte (x+j, y+i*8, *p++);
 548   2              }
C51 COMPILER V8.08   LCD                                                                   01/08/2009 16:11:58 PAGE 10  

 549   1              else
 550   1              {
 551   2                      for (i=0; i<line;   i++)
 552   2                      for (j=0; j<length; j++)
 553   2                              LCDC_DrawByte (x+j, y+i*8, ~*p++);
 554   2              }
 555   1      }
 556          
 557          /***********************************************************************************
 558          * 函数名称:LCDC_DispFWord;
 559          *
 560          * 函数功能描述:向LCD写一组数据,显示黑字符;
 561          *              
 562          * 输入参数:BYTE类型写入起始坐标x,y; BYTE类型写入数据xdata区指针p;
 563          *           BYTE类型占用空间line*8行,length列;BYTE类型显示数据取反标志位
 564          *               (非零为正常显示,零为取反)
 565          *
 566          * 返回数据:none;
 567          *
 568          * 注意:    none;
 569          ************************************************************************************/
 570          void LCDC_DispFWord (unsigned char x, y, unsigned char xdata *p, unsigned char line, length, Flag)
 571          {
 572   1              unsigned char data i,j;
 573   1      
 574   1              y += (4<<line); 
 575   1              if (y>64)
 576   1                      y=64;
 577   1              y = 64-y;               
 578   1              if (Flag)
 579   1              {
 580   2                      for (i=0; i<line;   i++)
 581   2                      for (j=0; j<length; j++)
 582   2                              LCDC_DrawByte(x+j, y+i*8, *p++);
 583   2              }
 584   1              else
 585   1              {
 586   2                      for (i=0; i<line;   i++)
 587   2                      for (j=0; j<length; j++)
 588   2                              LCDC_DrawByte (x+j, y+i*8, ~*p++);
 589   2              }       
 590   1      }
 591          
 592          /***********************************************************************************/
 593          // 文件结束
 594          /***********************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2375    ----
   CONSTANT SIZE    =    771    ----
   XDATA SIZE       =      4      27
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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