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

📄 lcd.lst

📁 无线解码,用12864显示解码结果,00表示0,11表示1,01表示悬空
💻 LST
📖 第 1 页 / 共 2 页
字号:
 198   2         }
 199   1         else
 200   1         {
 201   2            set_page_R(upage);
 202   2            set_col_addr_R(ucol-64);
 203   2         }
 204   1      }
 205          
 206          //---------------行列设置函数---------------------------
 207          void SetRowCol(unsigned char urow, unsigned char ucol) 
 208          {
 209   1         unsigned char page;
 210   1         CurRow = urow;
 211   1         CurCol = ucol;
 212   1        
 213   1         switch(urow)
 214   1         {
 215   2            case 1:
 216   2                   page=0;
 217   2                   CurOffset=1;
 218   2                   break;
 219   2            case 2:
 220   2                   page=1;
 221   2                   CurOffset=2;
 222   2                   break;
 223   2            case 3:
 224   2                   page=3;
 225   2                   CurOffset=1;
 226   2                   break;
 227   2            case 4:
 228   2                   page=4;
 229   2                   CurOffset=2;
 230   2                   break;
 231   2            case 5:
 232   2                   page=6;
 233   2                   CurOffset=1;
C51 COMPILER V7.06   LCD                                                                   12/20/2008 10:18:35 PAGE 6   

 234   2                   break;
 235   2         }
 236   1         SetPageCol(page,ucol);
 237   1      }
 238          
 239          
 240          //----------------字符显示函数------------------
 241          void disp_char(unsigned char c)
 242          {
 243   1         unsigned char k,j,uPage,uCol,ch_r,ch_w;
 244   1         unsigned char width;
 245   1         unsigned char len;
 246   1         uPage = GetPage();
 247   1         uCol = GetCol();
 248   1         len=sizeof(ASC_16)/sizeof(ASC_16[0]);
 249   1         for(k=0;k<len;k++)
 250   1         {
 251   2            if(c == ASC_16[k].Index[0] )
 252   2               break;
 253   2         }
 254   1         if(k<len)
 255   1         {
 256   2            if(c=='-'||c==':')
 257   2               width=ASC_CHR_WIDTH-2;
 258   2            else if(c=='|')
 259   2               width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
 260   2            else
 261   2               width=ASC_CHR_WIDTH;
 262   2          
 263   2            if(CurOffset==1) //下半部是写半个字节
 264   2            {
 265   3               for(j=0;j<width;j++)
 266   3               {
 267   4                  SetPageCol(uPage,uCol+j);
 268   4                  ch_w=ASC_16[k].Msk[j];
 269   4                  if(uCol+j<64)
 270   4                     write_LCD(LEFT,DATA,ch_w);
 271   4                  else
 272   4                     write_LCD(RIGHT,DATA,ch_w);
 273   4               }
 274   3               SetPageCol(uPage+1,uCol);
 275   3            
 276   3               for(j=0;j<width;j++)
 277   3               {
 278   4                  SetPageCol(uPage+1,uCol+j);
 279   4                  if(uCol+j<64)
 280   4                     ch_r=read_LCD(LEFT);
 281   4                  else
 282   4                     ch_r=read_LCD(RIGHT);
 283   4                  ch_r&=0xf0;
 284   4                  ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j]&0x0f;
 285   4                  ch_w|=ch_r;
 286   4                  SetPageCol(uPage+1,uCol+j);
 287   4                  if(uCol+j<64)
 288   4                     write_LCD(LEFT,DATA,ch_w);
 289   4                  else
 290   4                     write_LCD(RIGHT,DATA,ch_w);
 291   4               }
 292   3            }
 293   2            else //上半部是写半个字节
 294   2            {
 295   3               for(j=0;j<width;j++)
C51 COMPILER V7.06   LCD                                                                   12/20/2008 10:18:35 PAGE 7   

 296   3               {
 297   4                  SetPageCol(uPage,uCol+j);
 298   4                  if(uCol+j<64)
 299   4                     ch_r=read_LCD(LEFT);
 300   4                  else
 301   4                     ch_r=read_LCD(RIGHT);
 302   4                  ch_r&=0x0f;
 303   4                  ch_w=ASC_16[k].Msk[j];
 304   4                  ch_w=ch_w<<4;
 305   4                  ch_w|=ch_r;
 306   4                  SetPageCol(uPage,uCol+j);
 307   4                  if(uCol+j<64)
 308   4                     write_LCD(LEFT,DATA,ch_w);
 309   4                  else
 310   4                     write_LCD(RIGHT,DATA,ch_w);
 311   4               }
 312   3               SetPageCol(uPage+1,uCol);
 313   3               for(j=0;j<width;j++)
 314   3               {
 315   4                  SetPageCol(uPage+1,uCol+j);
 316   4              
 317   4                  ch_r=ASC_16[k].Msk[j];
 318   4                  ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
 319   4                  ch_r=ch_r>>4;
 320   4                  ch_w=ch_w<<4;
 321   4                  ch_w|=ch_r;
 322   4                  SetPageCol(uPage+1,uCol+j);
 323   4                  if(uCol+j<64)
 324   4                     write_LCD(LEFT,DATA,ch_w);
 325   4                  else
 326   4                     write_LCD(RIGHT,DATA,ch_w);
 327   4               }
 328   3            }
 329   2         }
 330   1         SetPageCol(uPage,uCol+width);
 331   1      }
 332          
 333          
 334          //---------------汉字显示函数------------------
 335          void disp_hz(unsigned char *hz)
 336          {
 337   1         unsigned char k,j,uPage,uCol,ch_r,ch_w;
 338   1         uPage = GetPage();
 339   1         uCol = GetCol();
 340   1         for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
 341   1         {
 342   2            if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
 343   2               break;
 344   2         }
 345   1      
 346   1         if(CurOffset==1)
 347   1         {
 348   2            for(j=0;j<ASC_HZ_WIDTH;j++)
 349   2            {
 350   3               SetPageCol(uPage,uCol+j);
 351   3               ch_w=GB_16[k].Msk[j];
 352   3               if(uCol+j<64)  write_LCD(LEFT,DATA,ch_w);
 353   3               else write_LCD(RIGHT,DATA,ch_w);
 354   3            }
 355   2            SetPageCol(uPage+1,uCol);
 356   2      
 357   2            for(j=0;j<ASC_HZ_WIDTH;j++)
C51 COMPILER V7.06   LCD                                                                   12/20/2008 10:18:35 PAGE 8   

 358   2            {
 359   3               SetPageCol(uPage+1,uCol+j);
 360   3               if(uCol+j<64)
 361   3                  ch_r=read_LCD(LEFT);
 362   3               else
 363   3                  ch_r=read_LCD(RIGHT);
 364   3               ch_r&=0xf0;
 365   3               ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j]&0x0f;
 366   3               ch_w|=ch_r;
 367   3               SetPageCol(uPage+1,uCol+j);
 368   3               if(uCol+j<64)
 369   3                  write_LCD(LEFT,DATA,ch_w);
 370   3               else
 371   3                  write_LCD(RIGHT,DATA,ch_w);
 372   3            }
 373   2            SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
 374   2         }
 375   1      
 376   1         else //汉字上半部是写半个字节
 377   1         {
 378   2            for(j=0;j<ASC_HZ_WIDTH;j++)
 379   2            {
 380   3               SetPageCol(uPage,uCol+j);
 381   3               if(uCol+j<64)
 382   3                  ch_r=read_LCD(LEFT);
 383   3               else ch_r=read_LCD(RIGHT);
 384   3               ch_r&=0x0f;
 385   3               ch_w=GB_16[k].Msk[j];
 386   3               ch_w=ch_w<<4;
 387   3               ch_w|=ch_r;
 388   3               SetPageCol(uPage,uCol+j);
 389   3               if(uCol+j<64)
 390   3                  write_LCD(LEFT,DATA,ch_w);
 391   3               else
 392   3                  write_LCD(RIGHT,DATA,ch_w);
 393   3            }
 394   2            SetPageCol(uPage+1,uCol);
 395   2            for(j=0;j<ASC_HZ_WIDTH;j++)
 396   2            {
 397   3               SetPageCol(uPage+1,uCol+j);
 398   3      
 399   3               ch_r=GB_16[k].Msk[j];
 400   3               ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j];
 401   3               ch_r=ch_r>>4;
 402   3               ch_w=ch_w<<4;
 403   3               ch_w|=ch_r;
 404   3               SetPageCol(uPage+1,uCol+j);
 405   3               if(uCol+j<64)
 406   3                  write_LCD(LEFT,DATA,ch_w);
 407   3               else
 408   3                  write_LCD(RIGHT,DATA,ch_w);
 409   3            }
 410   2            SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
 411   2         }
 412   1      }
 413          
 414          
 415          //-----------字符串显示函数----------------
 416          void disp_str(unsigned char *p)
 417          {
 418   1         unsigned char i=0;
 419   1         while(p[i]>0)
C51 COMPILER V7.06   LCD                                                                   12/20/2008 10:18:35 PAGE 9   

 420   1         {
 421   2            if(p[i] < 128)
 422   2            { /* ASCII */
 423   3               disp_char(p[i]);
 424   3            }
 425   2            else
 426   2            { /* 中文 */
 427   3               disp_hz(&p[i]);
 428   3               i++;
 429   3            }
 430   2            i++;
 431   2         }
 432   1      }
 433          
 434          
 435          //-------------------绘点函数----------------------------------              
 436          //XX--(0-128) YY--(0-63) FLAG=1绘点   FLAG=0 清点
 437          void GUI_Point(unsigned char xx,unsigned char yy,unsigned char flag)
 438          {
 439   1         unsigned int y,ch;
 440   1         ch=yy%8;  //余数
 441   1      
 442   1         y=1;
 443   1         for(;ch!=0;)
 444   1         {
 445   2            y=y*2;
 446   2            ch--;
 447   2         }
 448   1         if(xx<64)
 449   1         {
 450   2            set_page_L(yy/8);
 451   2            set_col_addr_L(xx);
 452   2            ch=read_LCD(LEFT);
 453   2            set_col_addr_L(xx);
 454   2            if(flag)
 455   2               write_LCD(LEFT,DATA,ch|y);
 456   2            else
 457   2               write_LCD(LEFT,DATA,ch&(~y));
 458   2         }
 459   1         else
 460   1         {
 461   2            set_page_R(yy/8);
 462   2            set_col_addr_R(xx-64);
 463   2            ch=read_LCD(RIGHT);
 464   2            set_col_addr_R(xx-64);
 465   2            if(flag)
 466   2               write_LCD(RIGHT,DATA,ch|y);
 467   2            else
 468   2               write_LCD(RIGHT,DATA,ch&(~y));
 469   2         }
 470   1      }

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

⌨️ 快捷键说明

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