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

📄 lcd.lst

📁 单片机实现消息队列的例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
 169                                                                          byte YStart,
 170                                                                          byte Width,
 171                                                                          byte Height,
 172                                                                          bool bReverseDisplay,
 173                                                                          byte GraphicIndex)                        
 174          {       
 175   1              byte PageCounter;               /*页计数值*/
 176   1              byte ColumnCounter;             /*X位置计数值*/
 177   1              byte PageStart;                 /*起始页码*/
 178   1              byte PageEnd;                   /*终止页码*/
C51 COMPILER V7.10   LCD                                                                   12/14/2004 10:51:15 PAGE 4   

 179   1              byte code *pGraphic;    /*指向发送显示数据的指针*/
 180   1      
 181   1              pGraphic = g_Graphic[GraphicIndex];     /*r取出要显示的图像区头地址给指针pGraphic*/
 182   1              PageStart = YStart >> 3;                /*r由于是整页显示,不能随意位置,所以指定除8*/
 183   1              PageEnd = (YStart + Height) >> 3;
 184   1      
 185   1              
 186   1              for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
 187   1              {
 188   2                      SetColumn(XStart);
 189   2                      SetPage(PageCounter);
 190   2                      RS = 1;
 191   2                      for(ColumnCounter = 0; ColumnCounter < Width; ColumnCounter++)
 192   2                      {
 193   3                              if(!bReverseDisplay)
 194   3                              {
 195   4                                      WLCD = *pGraphic++;             /*r正常显示,白屏黑字*/
 196   4                              }
 197   3                              else
 198   3                              {
 199   4                                      WLCD = ~(*pGraphic++);  /*r反转显示,黑屏白字*/
 200   4                              }       
 201   3                      }
 202   2              }
 203   1      }
 204          
 205          
 206          /******************************************************************************************
 207          *函数名:                lcd_display_char
 208          *参数:                  XStart                          开始显示的X坐标像素值
 209                                          YStart                          开始显示的Y坐标像素值
 210                                          bReverseDisplay         标识是否反显,1为反显,0为不反显
 211                                          character                       显示字符的ASCII码表值
 212          *返回值:                无
 213          *描述:                  字符显示程序
 214          *编写:                  王绍伟
 215          *版本信息:              V1.0                            2003年8月15日
 216          ******************************************************************************************/
 217          extern void lcd_display_char(                           /*为整个PAGE显示,不能任意位置*/
 218                                                                  byte XStart,
 219                                                                  byte YStart,
 220                                                                  bool bReverseDisplay,
 221                                                                  byte character)                        
 222          {       
 223   1              byte PageCounter;               /*页标志*/
 224   1              byte ColumnCounter;             /*X位置标志*/
 225   1              byte PageStart;                 /*起始页码*/
 226   1              byte PageEnd;                   /*终止页码*/
 227   1              byte code *pChar;               /*指向字符存放数据(按page划分存储)区的指针*/
 228   1      
 229   1              pChar = g_ASCII[character-0x20];        /*r根据ASCI码表,*/
 230   1              PageStart = YStart >> 3;                /*r由于是整页显示,不能随意位置,所以指定除8*/
 231   1              PageEnd = PageStart + 2;                /*r一个字符在纵向占两个page*/
 232   1              
 233   1              for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
 234   1              {
 235   2                      SetColumn(XStart);
 236   2                      SetPage(PageCounter);
 237   2      
 238   2                      RS = 1;
 239   2                      for(ColumnCounter = 0; ColumnCounter < 8; ColumnCounter++)      /*r一个字符在横向占8列*/
 240   2                      {
C51 COMPILER V7.10   LCD                                                                   12/14/2004 10:51:15 PAGE 5   

 241   3                              if(!bReverseDisplay)
 242   3                              {
 243   4                                      WLCD = *pChar++;
 244   4                              }
 245   3                              else
 246   3                              {
 247   4                                      WLCD = ~(*pChar++);
 248   4                              }
 249   3                      }
 250   2              }
 251   1      }
 252          
 253          
 254          /******************************************************************************************
 255          *函数名:                lcd_display_text
 256          *参数:                  XStart                  字符串开始X坐标像素值
 257                                          YStart                  字符串开始Y坐标像素值,实际得按照page显示
 258                                          bReverseDisplay 标识是否反显
 259                                          pText                   指向字符串ASCII码存放首址的指针
 260          *返回值:                无
 261          *描述:                  显示小于8个字符的字符串文本
 262          *编写:                  王绍伟
 263          *版本信息:              V1.0                    2003年8月15日
 264          ******************************************************************************************/
 265          extern void lcd_display_text( byte XStart,
 266                                                                   byte YStart, 
 267                                                                   bool bReverseDisplay,
 268                                                                   byte* pText)
 269          {
 270   1              byte i;
 271   1              byte len;
 272   1              len = strlen(pText);
 273   1              if(len > 8)
 274   1              {
 275   2                      len = 8;
 276   2              }
 277   1              for(i = 0; i < len; i++)
 278   1              {
 279   2                      lcd_display_char(XStart + i * 8, YStart, bReverseDisplay, *pText++);
 280   2              }
 281   1      }
 282          
 283          
 284          /******************************************************************************************
 285          *函数名:                lcd_display_byte
 286          *参数:                  XStart
 287                                          YStart
 288                                          bHex                    标识是否为十六进制数据
 289                                          bReverseDisplay 标识是否反显
 290                                          value
 291          *返回值:                无
 292          *描述:                  在LCD液晶屏上显示一个字节的内容,若此字节中数标识用
 293                                          十六进制显示,则其中字节的高四位为                               一个字符的ASCII码
 294                                          值,低四位又是另外一个字符的ASCII码字
 295          *编写:王绍伟
 296          *版本信息:V1.0                  2003年8月15日
 297          ******************************************************************************************/
 298          extern void lcd_display_byte(byte XStart,
 299                                                                   byte YStart, 
 300                                                                   bool bHex,
 301                                                                   bool bReverseDisplay,
 302                                                                   byte value)
C51 COMPILER V7.10   LCD                                                                   12/14/2004 10:51:15 PAGE 6   

 303           {
 304   1               byte Shift;            /*暂存余数*/
 305   1               byte Result;           /*暂存除得结果值*/
 306   1      
 307   1               if(bHex)
 308   1               {
 309   2                      lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[value&0x0F]);
 310   2                      lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[value>>4]);
 311   2               }
 312   1               else
 313   1               {
 314   2                      Shift = value % 100;
 315   2                      Result = value / 100;
 316   2                      if(Result)
 317   2                      {
 318   3                              lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[Result]);
 319   3                      }
 320   2                      Result = Shift / 10;
 321   2                      Shift = Shift % 10;
 322   2                      if(Result)
 323   2                      {
 324   3                              lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[Result]);
 325   3                      }       
 326   2                      lcd_display_char(XStart + 16, YStart, bReverseDisplay, g_Data2Char[Shift]);
 327   2               }
 328   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    659    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      23
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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