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

📄 olcd.lst

📁 无线单片机CC1110的一些使用源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 313   1      }
 314          
 315          
 316          
 317          
 318          /*******************************************************************************
 319          //函数名:void Printn8(uchar xx ,uchar yy , INT32U no,uchar yn,uchar le)
 320          //功能:显示8*8一个无符号数据
 321          //输入:xx , yy屏幕当中位置,no待显示数据 yn=0正常显示 yn=1反黑显示  le有效位
 322          //输出:无
 323          ********************************************************************************/
 324          void Printn8(uchar xx ,uchar yy , unsigned long no,uchar yn,uchar le)
 325          {
 326   1              uchar ch2[6];
 327   1              uchar ii;
 328   1      
 329   1              for(ii = 1 ; ii <= le ;){
 330   2                      ch2[le - ii] = no % 10 + 0x30;
 331   2                      no /= 10;
 332   2                      ii += 1;
 333   2              }
 334   1              ch2[le] = '\0';
 335   1              Print(xx ,yy ,ch2 ,yn);
 336   1      }
 337          
 338          
 339          
 340          /*******************************************************************************
 341          //函数名:void Print6(uchar xx, uchar yy, uchar ch1[], uchar yn)
 342          //功能:显示6*8字符串
 343          //输入:xx ,yy 坐标,ch1待显示的字符串,yn是否反黑
 344          //输出:无
 345          ********************************************************************************/
 346          void Print6(uchar xx, uchar yy, uchar ch1[], uchar yn)          
 347          {
 348   1              uchar ii = 0;
 349   1              uchar bb = 0;
 350   1              unsigned int index = 0 ;        
 351   1      
 352   1              SetRamAddr(xx , yy);            
 353   1              while(ch1[bb] != '\0')
 354   1              {
 355   2                      index = (unsigned int)(ch1[bb] - 0x20);
 356   2                      index = (unsigned int)index*6;          
 357   2                      for(ii=0;ii<6;ii++)
 358   2                      {
 359   3                              if(yn)
 360   3                              {
 361   4                                      Lcdwritedata(FontSystem6x8[index]);
 362   4                              }
 363   3                              else
C51 COMPILER V8.08   OLCD                                                                  01/08/2008 15:04:07 PAGE 7   

 364   3                              {
 365   4                                      Lcdwritedata(~FontSystem6x8[index]);
 366   4                              }               
 367   3                              index += 1;
 368   3                      }               
 369   2                      bb += 1;
 370   2              }
 371   1      }
 372          
 373          
 374          /*******************************************************************************
 375          //函数名:void Print8(uint y,uint x, uchar ch[],uint yn)
 376          //功能:显示8*8字符串
 377          //输入:xx ,yy 坐标,ch1待显示的字符串,yn是否反黑
 378          //输出:无
 379          ********************************************************************************/
 380          void Print8(uint y,uint x, uchar ch[],uint yn)
 381          {
 382   1              uchar wm ,ii = 0;
 383   1              uint adder;
 384   1      
 385   1              while(ch[ii] != '\0')
 386   1              {
 387   2                      adder = (ch[ii] - 0x20) * 16;
 388   2      
 389   2                      SetRamAddr(y , x);
 390   2                      for(wm = 0;wm < 8;wm++)
 391   2                      {
 392   3                              if(yn == 0)
 393   3                              {
 394   4                                      Lcdwritedata(~Font8X8[adder]);
 395   4                              }
 396   3                              else
 397   3                              {
 398   4                                      Lcdwritedata(Font8X8[adder]);
 399   4                              }
 400   3                              adder += 1;
 401   3                      }
 402   2                      SetRamAddr(y + 1 , x);
 403   2                      for(wm = 0;wm < 8;wm++)
 404   2                      {
 405   3                              if(yn == 0)
 406   3                              {
 407   4                                      Lcdwritedata(~Font8X8[adder]);  
 408   4                              }
 409   3                              else
 410   3                              {
 411   4                                      Lcdwritedata(Font8X8[adder]);   
 412   4                              }
 413   3                              adder += 1;
 414   3                      }
 415   2                      ii += 1;
 416   2                      x += 8;
 417   2              }
 418   1      
 419   1      }
 420          
 421          
 422          /*******************************************************************************
 423          //函数名:void Print16(uint y,uint x,uchar ch[],uint yn)
 424          //功能:在屏幕上显示汉字
 425          //输入:x ,y 坐标,ch[]待显示的汉字,yn是否反黑
C51 COMPILER V8.08   OLCD                                                                  01/08/2008 15:04:07 PAGE 8   

 426          //输出:无
 427          ********************************************************************************/
 428          void Print16(uint y,uint x,uchar ch[],uint yn)
 429          {
 430   1              uchar wm ,ii = 0;
 431   1              uint adder;
 432   1      
 433   1              wm = 0;
 434   1              adder = 1;
 435   1              while(FontNew8X16_Index[wm] > 100)
 436   1              {
 437   2                      if(FontNew8X16_Index[wm] == ch[ii])
 438   2                      {
 439   3                              if(FontNew8X16_Index[wm + 1] == ch[ii + 1])
 440   3                              {
 441   4                                      adder = wm * 14;
 442   4                                      break;
 443   4                              }
 444   3                      }
 445   2                      wm += 2;                                //找到汉字在索引中的位置
 446   2              }
 447   1              SetRamAddr(y , x);
 448   1      
 449   1              if(adder != 1)                                  //找到汉字,显示出来    
 450   1              {
 451   2                      SetRamAddr(y , x);
 452   2                      for(wm = 0;wm < 14;wm++)
 453   2                      {
 454   3                              if(yn == 0)
 455   3                              {
 456   4                                      Lcdwritedata(~FontNew16X16[adder]);
 457   4                              }
 458   3                              else
 459   3                              {
 460   4                                      Lcdwritedata(FontNew16X16[adder]);
 461   4                              }
 462   3                              adder += 1;
 463   3                      }
 464   2                      for(wm = 0;wm < 2;wm++)
 465   2                      {
 466   3                              if(yn == 0)
 467   3                              {
 468   4                                      Lcdwritedata(0xff);
 469   4                              }
 470   3                              else
 471   3                              {
 472   4                                      Lcdwritedata(0x00);
 473   4                              }
 474   3                      }
 475   2                      SetRamAddr(y + 1 , x);
 476   2      
 477   2                      for(wm = 0;wm < 14;wm++)
 478   2                      {
 479   3                              if(yn == 0)
 480   3                              {
 481   4                                      Lcdwritedata(~FontNew16X16[adder]);
 482   4                              }
 483   3                              else
 484   3                              {
 485   4                                      Lcdwritedata(FontNew16X16[adder]);
 486   4                              }
 487   3                              adder += 1;
C51 COMPILER V8.08   OLCD                                                                  01/08/2008 15:04:07 PAGE 9   

 488   3                      }
 489   2                      for(wm = 0;wm < 2;wm++)
 490   2                      {
 491   3                              if(yn == 0)
 492   3                              {
 493   4                                      Lcdwritedata(0xff);
 494   4                              }
 495   3                              else
 496   3                              {
 497   4                                      Lcdwritedata(0x00);
 498   4                              }
 499   3                      }
 500   2      
 501   2      
 502   2              }
 503   1              else                                            //找不到字显示空格                      
 504   1              {
 505   2                      ii += 1;SetRamAddr(y , x);
 506   2                      for(wm = 0;wm < 16;wm++)
 507   2                      {
 508   3                              if(yn == 0)
 509   3                              {
 510   4                                      Lcdwritedata(0xff);
 511   4                              }
 512   3                              else
 513   3                              {
 514   4                                      Lcdwritedata(0x00);
 515   4                              }
 516   3                      }
 517   2                      SetRamAddr(y + 1 , x);
 518   2                      for(wm = 0;wm < 16;wm++)
 519   2                      {
 520   3                              if(yn == 0)
 521   3                              {
 522   4                                      Lcdwritedata(0xff);
 523   4                              }
 524   3                              else
 525   3                              {
 526   4                                      Lcdwritedata(0x00);
 527   4                              }
 528   3                      }
 529   2              }
 530   1      }
 531          /*******************************************************************************
 532          //函数名:void Print(uchar y, uchar x, uchar ch[], uint yn)
 533          //功能:实现汉字及字母混合显示
 534          //输入:x ,y 坐标,ch[]待显示的汉字或字母,yn是否反黑
 535          //输出:无
 536          ********************************************************************************/
 537          void Print(uchar y, uchar x, uchar ch[], uint yn)
 538          {
 539   1              uchar ch2[3];
 540   1              uchar ii;
 541   1              ii = 0;
 542   1              while(ch[ii] != '\0')
 543   1              {
 544   2                      if(ch[ii] > 120)
 545   2                      {
 546   3                              ch2[0] = ch[ii];
 547   3                              ch2[1] = ch[ii + 1];
 548   3                              ch2[2] = '\0';                  //汉字为两个字节
 549   3                              Print16(y , x , ch2 , yn);      //显示汉字
C51 COMPILER V8.08   OLCD                                                                  01/08/2008 15:04:07 PAGE 10  

 550   3                              x += 16;
 551   3                              ii += 2;
 552   3                      }
 553   2                      else
 554   2                      {
 555   3                              ch2[0] = ch[ii];        
 556   3                              ch2[1] = '\0';                  //字母占一个字节
 557   3                              Print8(y , x , ch2 , yn);       //显示字母
 558   3                              x += 8;
 559   3                              ii += 1;
 560   3                      }
 561   2              }
 562   1      }
 563          
 564          /*******************************************************************************
 565          //函数名:void ClearCol(uchar Begin , uchar End)
 566          //功能:清除列
 567          //输入:Begin开始处   End结束处
 568          //输出:无
 569          ********************************************************************************
 570          void ClearCol(uchar Begin , uchar End)
 571          {
 572                  uchar i;
 573                  for(i=Begin;i <= End ; i++)
 574                  {
 575                          Print6(Begin , 0 ,"                   ", 1);
 576                  }
 577          }*/
 578          
 579          /*******************************************************************************
 580          //函数名:void Rectangle(uchar x1,uchar y1,uchar x2,uchar y2)
 581          //功能:画直线函数,本函数目前只能画水平和垂直线
 582          //输入:x1,y1(第一个点)   x2,y2第二个点
 583          //输出:无
 584          ********************************************************************************/
 585          void Rectangle(uchar x1,uchar y1,uchar x2,uchar y2)
 586          {
 587   1      
 588   1              uchar ii;
 589   1      
 590   1              for(ii=x1; ii<x2; ii++)
 591   1              {               
 592   2                      SetRamAddr(y1,ii);
 593   2                      Lcdwritedata(0x08);
 594   2                      SetRamAddr(y2,ii);
 595   2                      Lcdwritedata(0x08);             //画横线
 596   2              }
 597   1              SetRamAddr(y1,x1);
 598   1              Lcdwritedata(0xF0);
 599   1              SetRamAddr(y1,x2);
 600   1              Lcdwritedata(0xF0);
 601   1      
 602   1              for(ii = y1+1;ii<y2;ii++)
 603   1              {               
 604   2                      SetRamAddr(ii,x1);
 605   2                      Lcdwritedata(0xff);
 606   2                      SetRamAddr(ii,x2);
 607   2                      Lcdwritedata(0xff);             //画竖线
 608   2              }
 609   1      
 610   1              SetRamAddr(y2,x1);
 611   1              Lcdwritedata(0x0F);
C51 COMPILER V8.08   OLCD                                                                  01/08/2008 15:04:07 PAGE 11  

 612   1              SetRamAddr(y2,x2);
 613   1              Lcdwritedata(0x0F);
 614   1      }
 615          
 616          
 617                  
 618          
 619                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1446    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      77
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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