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

📄 s1d1335.lst

📁 0834实现数据的采集
💻 LST
📖 第 1 页 / 共 2 页
字号:
 284          //================================================================
 285          void Delay(unsigned int MS)
 286          {
 287   1              unsigned char us,usn;
 288   1              while(MS!=0)
 289   1              {
 290   2                      usn = 2;        //for 12M
 291   2                      while(usn!=0)
 292   2                      {
 293   3                              us=0xf6;
 294   3                              while (us!=0){us--;};
 295   3                              usn--;
 296   3                      }
 297   2                      MS--;
 298   2              }
 299   1      }
 300          /********************************************************************
 301          * 名称: void Displaytime(uchar col,uchar row,uchar hzcode)
 302          * 功能: 显示27*14点阵汉字
 303          * 调用:
C51 COMPILER V7.00  S1D1335                                                                05/22/2007 16:53:19 PAGE 6   

 304          * 输入:
 305          * 说明: 入口参数:       横坐标col       纵坐标row       汉字位置HZcode
 306          * 返回值:
 307          ***********************************************************************/
 308          //出口参数: 无  (HZcode表示汉字在字模表中的位置)
 309          void Displaytime(uchar col,uchar row,uchar hzcode)
 310          {
 311   1              uchar i,j;
 312   1              uint  x;
 313   1              x = 42*hzcode;
 314   1              WriteCommand( CsrDirR );
 315   1              for(i=0;i<14;i++)
 316   1              {
 317   2                      Locatexy(col,row);
 318   2                      WriteCommand(mWrite);
 319   2                      for(j=0;j<3;j++)
 320   2                      {
 321   3                              WriteData(timedata[x]);
 322   3                              x++;
 323   3                      }
 324   2                      row++;
 325   2              }
 326   1      
 327   1      }
 328          /********************************************************************
 329          * 名称: Displayspeed(uchar col,uchar row,uchar hzcode)
 330          * 功能: 显示24*18点阵汉字
 331          * 调用:
 332          * 输入:
 333          * 说明: 入口参数:       横坐标col       纵坐标row       汉字位置HZcode
 334          * 返回值:
 335          ***********************************************************************/
 336          //出口参数: 无  (HZcode表示汉字在字模表中的位置)
 337          void Displayspeed(uchar col,uchar row,uchar hzcode)
 338          {
 339   1              uchar i,j;
 340   1              uint  x;
 341   1              x = 54*hzcode;
 342   1              WriteCommand( CsrDirR );
 343   1              for(i=0;i<18;i++)
 344   1              {
 345   2                      Locatexy(col,row);
 346   2                      WriteCommand(mWrite);
 347   2                      for(j=0;j<3;j++)
 348   2                      {
 349   3                              WriteData(speed[x]);
 350   3                              x++;
 351   3                      }
 352   2                      row++;
 353   2              }
 354   1      
 355   1      }
 356          /********************************************************************
 357          * 名称: DisplayTotal(uchar col,uchar row,uchar hzcode)
 358          * 功能: 显示27*40点阵汉字
 359          * 调用:
 360          * 输入:
 361          * 说明: 入口参数:       横坐标col       纵坐标row       汉字位置HZcode
 362          * 返回值:
 363          ***********************************************************************/
 364          //出口参数: 无  (HZcode表示汉字在字模表中的位置)
 365          void DisplayTotal(uchar col,uchar row,uchar hzcode)
C51 COMPILER V7.00  S1D1335                                                                05/22/2007 16:53:19 PAGE 7   

 366          {
 367   1              uchar i,j;
 368   1              Uint  x;
 369   1              x = 84*hzcode;
 370   1              WriteCommand( CsrDirR );
 371   1              for(i=0;i<21;i++)
 372   1              {
 373   2                      Locatexy(col,row);
 374   2                      WriteCommand(mWrite);
 375   2                      for(j=0;j<4;j++)
 376   2                      {
 377   3                              WriteData(Total[x]);
 378   3                              x++;
 379   3                      }
 380   2                      row++;
 381   2              }
 382   1      
 383   1      }
 384          //=========清屏==========================
 385          void LcmClear( void )
 386          {
 387   1              Uint i1=32768;
 388   1              WriteCommand( CsrDirR );
 389   1              WriteCommand( CsrW );
 390   1              WriteData( 0 );
 391   1              WriteData( 0 );
 392   1              WriteCommand( mWrite );
 393   1              while(i1--)     {
 394   2      
 395   2                      WriteData( 0x0 );
 396   2              }
 397   1      }
 398          
 399          //========写入当前地址======================*/
 400          void Locateaddr(uint addr)
 401          {
 402   1              uint temp;
 403   1              temp=addr;
 404   1              WriteCommand( CsrW );
 405   1              WriteData( (uchar)(temp & 0xff) );
 406   1              WriteData( (uchar)(temp /256 ) );
 407   1      }
 408          /*--------------------------------------------------------------------------------
 409          调用方式:void extbmp(Byte x0,Byte y0,Byte *bmp) 
 410          
 411          函数版本:V1.0 2003.9.2 加注释
 412          
 413          函数说明:extbmp()在左上角坐标(x,y)解压显示bmp所指向的图形,图形压缩工具采用“字模3.3”
 414                    
 415                    x0必须为8的整数倍。该解压算法适合显存横向排列的液晶。纵向解压算法可参照编写。
 416                    
 417                    该算法的疑问或修改建议,请E-mail:c51bbs@vip.163.com
 418          ---------------------------------------------------------------------------------*/
 419          
 420          void extbmp(uchar x0,uchar y0,uchar *bmp)
 421          {
 422   1              uint n=2,num;
 423   1              uint begin,add1,end;
 424   1              uchar tmp;
 425   1              uint bmp_h,bmp_v;//BMP的宽和高
 426   1              
 427   1              bmp_h=bmp[0];bmp_v=bmp[1];
C51 COMPILER V7.00  S1D1335                                                                05/22/2007 16:53:19 PAGE 8   

 428   1              begin=x0+y0*H_BYTE;
 429   1              end=begin+(bmp_v-1)*H_BYTE+bmp_h-1;
 430   1          add1=begin;
 431   1              Locateaddr(add1);
 432   1              WriteCommand(mWrite);
 433   1              while (add1<=end)
 434   1              {           
 435   2              if (bmp[n]==0x00||bmp[n]==0xFF) //解压缩画黑白点
 436   2                      {
 437   3                      tmp=bmp[n++];
 438   3                      if (bmp[n]!=0x00) num=bmp[n++];
 439   3                              else {n++;num=bmp[n++];num|=(bmp[n++]<<8);} //算出了0x00重复的次数
 440   3                      
 441   3                      while(num--) //把0x00都画出来
 442   3                              {
 443   4                              //display_buff[add1]|=tmp; //display_buff是显存映射在XRAM上的镜象
 444   4      
 445   4                              WriteData(tmp);
 446   4                              if (add1==end) {return;}//UpdataAll();完成显存镜象到显存的刷新过程
 447   4                              if (add1==begin+bmp_h-1) 
 448   4                    {
 449   5                      begin+=H_BYTE;
 450   5                      add1=begin;     
 451   5                              Locateaddr(add1);
 452   5                                  WriteCommand(mWrite);
 453   5                      }
 454   4                              else add1++;
 455   4                              }
 456   3                      }
 457   2              
 458   2              else //直接画,不解压缩
 459   2                      {
 460   3                              //display_buff[add1]|=bmp[n++];
 461   3                              WriteData(bmp[n++]);
 462   3                              if (add1==end) {return;}
 463   3                              if (add1==begin+bmp_h-1) 
 464   3                                      {begin+=H_BYTE;
 465   4                                      add1=begin;
 466   4                                      Locateaddr(add1);
 467   4                                      WriteCommand(mWrite);
 468   4                                      }
 469   3                          else add1++;
 470   3                      }
 471   2              }
 472   1      
 473   1      }
 474          /********************************************************************
 475          * 名称: void Displayonebmp(uchar x,uchar y,uchar *adr)
 476          * 功能: 显示任意点阵图标
 477          * 调用: WriteCommand(mWrite);
 478          * 输入: x,y,*adr
 479          * 说明: x为显示图标纵向地址,y为显示图标横向地址
 480          * 返回值:无
 481          ***********************************************************************/
 482          void Displayonebmp(uchar x,uchar y,uchar *adr)
 483          {
 484   1          uchar col,row;
 485   1              uchar i,j;
 486   1              uchar *p;
 487   1          p=adr;
 488   1          p++;
 489   1          row=*p;
C51 COMPILER V7.00  S1D1335                                                                05/22/2007 16:53:19 PAGE 9   

 490   1          p++;
 491   1          col=*p;
 492   1          p++;
 493   1              for(i=0;i<row;i++)
 494   1              {
 495   2                      Locatexy(x,y);
 496   2                      WriteCommand(mWrite);
 497   2                      for(j=0;j<col;j++)
 498   2                      {
 499   3                              WriteData(*p);
 500   3                              p++;
 501   3                      }
 502   2                      y++;
 503   2              }
 504   1      }
 505          //=======画点=====================
 506          void LcdDrawPoint(int x,int y,bit Point)
 507          {
 508   1        uint temp;
 509   1        uchar t1,t2,WrData;
 510   1        if((x>=0)&&(y>=0)&&(x<321)&&(y<241))
 511   1        {
 512   2        t1=x/8;
 513   2        t2=x%8;
 514   2      
 515   2        temp=t1+(uint)y*paraP9;
 516   2        WriteCommand( CsrW );
 517   2        WriteData( (uchar)(temp & 0xff) );
 518   2        WriteData( (uchar)(temp /256 ) );
 519   2        WriteCommand(mRead);
 520   2        WrData=ReadData();
 521   2        WriteCommand( CsrW );
 522   2        WriteData( (uchar)(temp & 0xff) );
 523   2        WriteData( (uchar)(temp /256 ) );
 524   2        if(Point)
 525   2        {
 526   3              switch(t2)
 527   3              {
 528   4              case 0: WrData|=0x80;  break;
 529   4                      case 1: WrData|=0x40;  break;
 530   4                      case 2: WrData|=0x20;  break;
 531   4                      case 3: WrData|=0x10;  break;
 532   4                      case 4: WrData|=0x08;  break;
 533   4                      case 5: WrData|=0x04;  break;
 534   4                      case 6: WrData|=0x02;  break;
 535   4                      case 7: WrData|=0x01;  break;
 536   4                      default:               break;
 537   4                  }
 538   3        }
 539   2        else
 540   2        {
 541   3                  switch(t2)
 542   3              {
 543   4              case 0: WrData&=0x7f;  break;
 544   4                      case 1: WrData&=0xbf;  break;
 545   4                      case 2: WrData&=0xdf;  break;
 546   4                      case 3: WrData&=0xef;  break;
 547   4                      case 4: WrData&=0xf7;  break;
 548   4                      case 5: WrData&=0xfb;  break;
 549   4                      case 6: WrData&=0xfd;  break;
 550   4                      case 7: WrData&=0xfe;  break;
 551   4                      default:               break;
C51 COMPILER V7.00  S1D1335                                                                05/22/2007 16:53:19 PAGE 10  

 552   4                  }
 553   3        }
 554   2        WriteCommand(mWrite);
 555   2        WriteData(WrData);
 556   2        }
 557   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1575    ----
   CONSTANT SIZE    =   4674    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      64
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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