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

📄 lcm_drive.lst

📁 DP_51PRO实验仪图形液晶显示实验。先在屏幕上的随机位置显示随机数字(0--9)
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   LCM_DRIVE                                                             09/17/2004 11:31:15 PAGE 4   

 180                                          0xFE, 0x08, 0x10, 0x20, 0xFE,                   
 181                                          0x7C, 0x82, 0x82, 0x82, 0x7C
 182                                         };
 183          
 184          uint8 code  ASCII_TAB50[80] = { 0xFE, 0x12, 0x12, 0x12, 0x0C,
 185                                          0x7C, 0x82, 0xA2, 0x42, 0xBC,
 186                                          0xFE, 0x12, 0x32, 0x52, 0x8C,                   
 187                                          0x8C, 0x92, 0x92, 0x92, 0x62,                   
 188                                          0x02, 0x02, 0xFE, 0x02, 0x02,   
 189                                          0x7E, 0x80, 0x80, 0x80, 0x7E,
 190                                          0x3E, 0x40, 0x80, 0x40, 0x3E,
 191                                          0x7E, 0x80, 0x70, 0x80, 0x7E,
 192                                          0xC6, 0x28, 0x10, 0x28, 0xC6,
 193                                          0x0E, 0x10, 0xE0, 0x10, 0x0E,
 194                                          0xC2, 0xA2, 0x92, 0x8A, 0x86,
 195                                          0x00, 0xFE, 0x82, 0x82, 0x00,
 196                                          0x04, 0x08, 0x10, 0x20, 0x40,
 197                                          0x00, 0x82, 0x82, 0xFE, 0x00,
 198                                          0x08, 0x04, 0x02, 0x04, 0x08,
 199                                          0x80, 0x80, 0x80, 0x80, 0x80
 200                                         };
 201          
 202          uint8 code  ASCII_TAB60[80] = { 0x00, 0x02, 0x04, 0x08, 0x00,
 203                                          0x40, 0xA8, 0xA8, 0xA8, 0xF0,
 204                                          0xFE, 0x90, 0x88, 0x88, 0x70,
 205                                          0x70, 0x88, 0x88, 0x88, 0x40,
 206                                          0x70, 0x88, 0x88, 0x90, 0xFE,
 207                                          0x70, 0xA8, 0xA8, 0xA8, 0x30,
 208                                          0x10, 0xFC, 0x12, 0x02, 0x04,
 209                                          0x18, 0xA4, 0xA4, 0xA4, 0x7C,
 210                                          0xFE, 0x10, 0x08, 0x08, 0xF0,
 211                                          0x00, 0x88, 0xFA, 0x80, 0x00,
 212                                          0x40, 0x80, 0x88, 0x7A, 0x00,
 213                                          0xFE, 0x20, 0x50, 0x88, 0x00,
 214                                          0x00, 0x82, 0xFE, 0x80, 0x00,
 215                                          0xF8, 0x08, 0x30, 0x08, 0xF8,
 216                                          0xF8, 0x10, 0x08, 0x08, 0xF0,
 217                                          0x70, 0x88, 0x88, 0x88, 0x70
 218                                         };
 219          
 220          uint8 code  ASCII_TAB70[80] = { 0xF8, 0x28, 0x28, 0x28, 0x10,
 221                                          0x10, 0x28, 0x28, 0x30, 0xF8,
 222                                          0xF8, 0x10, 0x08, 0x08, 0x10,
 223                                          0x90, 0xA8, 0xA8, 0xA8, 0x40,
 224                                          0x08, 0x7E, 0x88, 0x80, 0x40,
 225                                          0x78, 0x80, 0x80, 0x40, 0xF8,
 226                                          0x38, 0x40, 0x80, 0x40, 0x38,
 227                                          0x78, 0x80, 0x60, 0x80, 0x78,
 228                                          0x88, 0x50, 0x20, 0x50, 0x88,
 229                                          0x18, 0xA0, 0xA0, 0xA0, 0x78,
 230                                          0x88, 0xC8, 0xA8, 0x98, 0x88,
 231                                          0x00, 0x10, 0x6C, 0x82, 0x00,
 232                                          0x00, 0x00, 0xFE, 0x00, 0x00,
 233                                          0x00, 0x82, 0x6C, 0x10, 0x00,
 234                                          0x10, 0x10, 0x54, 0x38, 0x10,
 235                                          0x10, 0x38, 0x54, 0x10, 0x10
 236                                         };
 237                                         
 238          /***********************************************************************
 239          * 名称:LCM_DispChar()
 240          * 功能:指定地址显示字符。
 241          * 入口参数:disp_cy             显示行值(0-7)   
C51 COMPILER V7.09   LCM_DRIVE                                                             09/17/2004 11:31:15 PAGE 5   

 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.09   LCM_DRIVE                                                             09/17/2004 11:31:15 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          /***********************************************************************
 326          * 名称:LCM_DispStr()
 327          * 功能:字符串显示输出。
 328          * 入口参数:disp_cy     显示起始行(0-7)
 329          *          disp_cx      显示起始列(0-15)
 330          *          disp_str     字串指针
 331          * 出口参数:无
 332          * 注:支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以屏幕显示
 333          *     为8*16(共8行,每行16个字符)。
 334          ***********************************************************************/
 335          void  LCM_DispStr(uint8 disp_cy, uint8 disp_cx, char *disp_str) 
 336          {  while( *disp_str != '\0')
 337   1         {  disp_cy = disp_cy&0x07;                           // 参数过滤
 338   2            disp_cx = disp_cx&0x0f;   
 339   2            LCM_DispChar(disp_cy, disp_cx, *disp_str);        // 显示字符
 340   2              
 341   2            disp_str++;                                       // 指向下一字符数据
 342   2            disp_cx++;
 343   2            if(disp_cx>15) disp_cy++;                         // 指向下一显示行
 344   2         }
 345   1      }
 346             
 347          
 348          
 349          
 350          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    977    ----
   CONSTANT SIZE    =    480    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      19
   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 + -