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

📄 lcm_drive.lst

📁 在凌阳spce061A的开发环境ide2.0.0下
💻 LST
📖 第 1 页 / 共 2 页
字号:
 242          *          disp_cx              显示列值(0-15)
 243          *          dispdata             所要显示的字符(ASCII码)
 244          * 注:支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以
 245          *     屏幕显示为8*16(共8行,每行16个字符)。
 246          ***********************************************************************/
 247          void LCM_DispChar(uint8 disp_cy, uint8 disp_cx, char dispdata) 
 248          {  uint8  code  *pchardata;
 249   1         uint8  i;
 250   1      
 251   1         disp_cy = disp_cy&0x07;              // 参数过滤
 252   1         disp_cx = disp_cx&0x0f;
 253   1         
 254   1         /* 先要找出显示数据的类型,并设置相应的点阵数据表,然后设置指针,以取得对应的点阵数据。 */                           
 255   1         switch(dispdata&0xf0)
 256   1         {  case 0x20:
 257   2                 dispdata = (dispdata&0x0f)*5;
 258   2                 pchardata = &ASCII_TAB20[dispdata];
 259   2                 break;
 260   2      
 261   2            case 0x30:
 262   2                 dispdata = (dispdata&0x0f)*5;
 263   2                 pchardata = &ASCII_TAB30[dispdata];
 264   2                 break;
 265   2      
 266   2            case 0x40:
 267   2                 dispdata = (dispdata&0x0f)*5;
 268   2                 pchardata = &ASCII_TAB40[dispdata];
 269   2                 break;
 270   2      
 271   2            case 0x50:
 272   2                 dispdata = (dispdata&0x0f)*5;
 273   2                 pchardata = &ASCII_TAB50[dispdata];
 274   2                 break;
 275   2      
 276   2            case 0x60:
 277   2                 dispdata = (dispdata&0x0f)*5;
 278   2                 pchardata = &ASCII_TAB60[dispdata];
 279   2                 break;
 280   2      
 281   2            case 0x70:
 282   2                 dispdata = (dispdata&0x0f)*5;
 283   2                 pchardata = &ASCII_TAB70[dispdata];
 284   2                 break;
 285   2                  
 286   2            default:
 287   2                 pchardata = &ASCII_TAB20[0];
 288   2                 break;
 289   2         } // end of switch(dispdata&0xf0)...
 290   1         
 291   1         
 292   1         if( (disp_cx&0x08) == 0 )                            // 选择液晶控制芯片(即CS1--控制前8个字符,CS2--控制后8个字符)
 293   1         {  i = disp_cx<<3;
 294   2            LCM_Wr1Command(LCM_ADDRSTRX+i);                   // 设置当前列地址,即列
 295   2            LCM_Wr1Command(LCM_ADDRSTRY+disp_cy);             // 设置当前页地址,即行
 296   2            
 297   2            for(i=0; i<5; i++);
 298   2            LCM_Wr1Data(0x00);                                // 显示一列空格
 299   2            for(i=0; i<5; i++)
 300   2            {  LCM_Wr1Data(*pchardata);                       // 发送数据                                                                     */
 301   3               pchardata++;
 302   3            }
 303   2            LCM_Wr1Data(0x00);        
C51 COMPILER V7.06   LCM_DRIVE                                                             07/10/2007 10:25:57 PAGE 6   

 304   2            for(i=0; i<5; i++);
 305   2            LCM_Wr1Data(0x00);        
 306   2         }
 307   1         else
 308   1         {  i = (disp_cx&0x07)<<3;                            // 若Y>7,则选取用CS2并且地址值要先减去8,再乘以8
 309   2            LCM_Wr2Command(LCM_ADDRSTRX+i);
 310   2            LCM_Wr2Command(LCM_ADDRSTRY+disp_cy);             // 设置当前页地址,即行
 311   2            
 312   2            for(i=0; i<5; i++);
 313   2            LCM_Wr2Data(0x00);                                // 显示一列空格
 314   2            for(i=0; i<5; i++)
 315   2            {  LCM_Wr2Data(*pchardata);                       // 发送数据                                                                     */
 316   3               pchardata++;
 317   3            }
 318   2            LCM_Wr2Data(0x00);        
 319   2            for(i=0; i<5; i++);
 320   2            LCM_Wr2Data(0x00);        
 321   2         }
 322   1      }         
 323          
 324          /***********************************************************************
 325          * 名称:LCM_DispStr()
 326          * 功能:字符串显示输出。
 327          * 入口参数:disp_cy     显示起始行(0-7)
 328          *          disp_cx      显示起始列(0-15)
 329          *          disp_str     字串指针
 330          * 出口参数:无
 331          * 注:支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以屏幕显示
 332          *     为8*16(共8行,每行16个字符)。
 333          ***********************************************************************/
 334          void  LCM_DispStr(uint8 disp_cy, uint8 disp_cx, char *disp_str) 
 335          {  while( *disp_str != '\0')
 336   1         {  disp_cy = disp_cy&0x07;                           // 参数过滤
 337   2            disp_cx = disp_cx&0x0f;   
 338   2            LCM_DispChar(disp_cy, disp_cx, *disp_str);        // 显示字符
 339   2              
 340   2            disp_str++;                                       // 指向下一字符数据
 341   2            disp_cx++;
 342   2            if(disp_cx>15) disp_cy++;                         // 指向下一显示行
 343   2         }
 344   1      }
 345          
 346          /***********************************************************************
 347          * 名称:LCM_DispWord()
 348          * 功能:汉字显示输出。
 349          * 入口参数:disp_cy     显示起始行(0-7)
 350          *          disp_cx      显示起始列(0-15)
 351          * 出口参数:无
 352          * 注:支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以屏幕显示
 353          *     为8*16(共8行,每行16个字符)。
 354          ***********************************************************************/
 355          uint8 code  WORD_TAB1[256] ={ //--      文字: 上--
 356                          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,
 357                          0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
 358                          0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,
 359                          0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,
 360          
 361          //uint8 code  WORD_TAB20[32] ={ //--    文字: 大--
 362                  0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,
 363                  0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
 364                  0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,
 365                  0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,
C51 COMPILER V7.06   LCM_DRIVE                                                             07/10/2007 10:25:57 PAGE 7   

 366          
 367          //uint8 code  WORD_TAB30[32] ={ //--    文字: 机--
 368                  0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,
 369                  0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
 370                  0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,
 371                  0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,
 372          
 373          //uint8 code  WORD_TAB40[32] ={ //--    文字:自--
 374                  0x00,0x00,0x00,0xF8,0x48,0x48,0x4C,0x4B,
 375                  0x4A,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
 376                  0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,
 377                  0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,
 378          
 379          //uint8 code  WORD_TAB50[32] ={ //--    文字: 学--
 380                  0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,
 381                  0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
 382                  0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,
 383                  0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
 384          
 385          
 386          ///uint8 code  WORD_TAB60[32] ={ //--   文字: 院--
 387                  0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,
 388                  0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
 389                  0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,
 390                  0x01,0x01,0x7E,0x81,0x81,0x81,0xF1,0x00
 391                  };
 392          
 393          uint8 code  WORD_TAB2[64] ={ //--  文字:  电  --
 394            0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,
 395            0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
 396            0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,
 397            0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,
 398          
 399          //uint8 code  WORD_TAB80[32] ={ //--  文字:  压  --
 400            0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,
 401            0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,
 402            0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,
 403            0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00,
 404          };
 405          
 406          
 407          void  LCM_DispWord(uint8 disp_cy, uint8 disp_cx,uint8 code *pchardata)
 408          {       unsigned char i,j;
 409   1              uint8  code  *pchartempdata;    
 410   1              unsigned char temp_cx,temp_cy;
 411   1              disp_cy = disp_cy&0x07;                         // 参数过滤
 412   1          disp_cx = disp_cx&0x0f;     
 413   1              
 414   1              for(j=0;j<4;j++)
 415   1              {       
 416   2                      pchartempdata = pchardata + j*8;
 417   2                  temp_cx = disp_cx+j%2;
 418   2                      temp_cy = disp_cy+j/2;
 419   2                      if( (temp_cx&0x08) == 0 )                               // 选择液晶控制芯片(即CS1--控制前8个字符,CS2--控制后8个字符)
 420   2                 {
 421   3                        i = temp_cx<<3;
 422   3                    LCM_Wr1Command(LCM_ADDRSTRX+i);                   // 设置当前列地址,即列
 423   3                LCM_Wr1Command(LCM_ADDRSTRY+temp_cy);         // 设置当前页地址,即行
 424   3                    
 425   3                for(i=0; i<5; i++);
 426   3                        for(i=0; i<8; i++)
 427   3                    {  LCM_Wr1Data(*pchartempdata);                   // 发送数据                                                                     */
C51 COMPILER V7.06   LCM_DRIVE                                                             07/10/2007 10:25:57 PAGE 8   

 428   4                   pchartempdata++;
 429   4                    }
 430   3                for(i=0; i<5; i++);
 431   3             }
 432   2                 else
 433   2                 {  i = (temp_cx&0x07)<<3;                            // 若Y>7,则选取用CS2并且地址值要先减去8,再乘以8
 434   3                LCM_Wr2Command(LCM_ADDRSTRX+i);
 435   3                    LCM_Wr2Command(LCM_ADDRSTRY+temp_cy);             // 设置当前页地址,即行
 436   3            
 437   3                for(i=0; i<5; i++);
 438   3                        for(i=0; i< 8; i++)
 439   3                    {  LCM_Wr2Data(*pchartempdata);                   // 发送数据                                                                     */
 440   4                   pchartempdata++;
 441   4                    }
 442   3                for(i=0; i<5; i++);
 443   3              }
 444   2         }
 445   1      }
 446          
 447          void  LCM_DispWords(uint8 disp_cy, uint8 disp_cx)
 448          {
 449   1            uint8 i,temp_cx,temp_cy;
 450   1                uint8  code *pchardata;
 451   1                pchardata = &WORD_TAB1[0];
 452   1                temp_cx = disp_cx;
 453   1                temp_cy = disp_cy;
 454   1                for(i = 0;i<8;i++)
 455   1                {     
 456   2                      temp_cx = disp_cx + 2*(i%8);
 457   2                      temp_cy = temp_cy&0x07;                         // 参数过滤
 458   2                  temp_cx = temp_cx&0x0f;     
 459   2              LCM_DispWord(temp_cy, temp_cx, pchardata);      // 显示字符
 460   2                      pchardata = pchardata + 32;                                             // 指向下一字符数据
 461   2                 }
 462   1                 temp_cx = 0;
 463   1                 pchardata = &WORD_TAB2;
 464   1                 for(i = 0; i<2;i++)
 465   1                 {
 466   2                      temp_cx = 2*i;
 467   2                      temp_cy = disp_cy + 2;
 468   2                      temp_cy = temp_cy&0x07;                         // 参数过滤
 469   2                  temp_cx = temp_cx&0x0f;     
 470   2              LCM_DispWord(temp_cy, temp_cx, pchardata);
 471   2                      pchardata = pchardata + 32;
 472   2                      }
 473   1      }
 474             
 475          
 476          
 477          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1392    ----
   CONSTANT SIZE    =    800    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      36
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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