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

📄 12864.lst

📁 LCD12864程序及Protues仿真
💻 LST
📖 第 1 页 / 共 3 页
字号:
 259   4                 n++;
 260   4                 tmp=m;
 261   4                 m=HZK_12[n];
 262   4             Wt=tmp>>(8-offset)|(m<<offset);
 263   4             WriteData(Wt);
 264   4             Page++;
 265   4             n++;
 266   4             Rd=ReadData();
 267   4             Rd=ReadData();
 268   4             Wt=m>>(8-offset)|(Rd&(0xff<<(offset-4)));
 269   4              WriteData(Wt);
 270   4             Page=Page-2;//恢复位置
 271   4             Col++; //修正下一个汉字的起始位置
 272   4             }
 273   3              }
 274   2         }
 275   1      }
 276          uchar * uchartostr(uchar unm)
 277          {
 278   1      uchar x00,xx,x0,x,n;
 279   1      x00=unm/100;
 280   1      xx=unm%100;
 281   1      x0=xx/10;
 282   1      x=xx%10;
 283   1      n=0;
 284   1      if(x00!=0)
 285   1      { str[n]=x00+48; //值加48即为字符
 286   2          n++;
 287   2      }
 288   1      if(!(x00==0&x0==0))
 289   1      { str[n]=x0+48;
 290   2          n++;
 291   2      }
 292   1      str[n]=x+48;
 293   1      n++;
 294   1      str[n]='\0';
 295   1         return str;
 296   1      }
 297          void LcmPutAsc( uchar asc )
 298          {
 299   1              uchar j;
 300   1              uint x;
 301   1              x = 5*(asc-32);
 302   1                  for(j=0;j<5;j++)
 303   1                      {
C51 COMPILER V7.07   12864                                                                 09/12/2008 07:31:04 PAGE 6   

 304   2                              WriteData(ASC_5x7[x]);
 305   2                              x++;
 306   2                              Col++;
 307   2                      }
 308   1                  WriteData(0x00); 
 309   1                  Col++;
 310   1      }
 311          void LcmPutstr( uchar row,uchar y,uchar * str )
 312          { unsigned char * x;
 313   1         x=str;
 314   1      Page=row;
 315   1      Col=y;
 316   1      while(*x!='\0')
 317   1      { LcmPutAsc( *x );
 318   2          x++;
 319   2      }
 320   1      }
 321          
 322          void LcmPutpoint( uchar ro,uchar lie,uchar colour )   //画点函数
 323          {
 324   1          if((ro<64)&(lie<128))
 325   1         {
 326   2              uchar modbyte,outByte;
 327   2              uchar offsetbit;
 328   2          Col=lie;                  //列等于lie
 329   2              Page=(ro & 0x38)>>3;     //页等于行数row与00111000B再右移3位
 330   2              offsetbit=ro&0x07;       //偏移量为行数与00000111
 331   2              modbyte=1;
 332   2          modbyte<<= offsetbit;     //输出位的模00000001左移offsetbit位
 333   2          outByte=ReadData();
 334   2          outByte=ReadData();
 335   2          if(colour==0)
 336   2          {
 337   3                modbyte=~modbyte;
 338   3            outByte=modbyte&outByte;     //输出位不影响其它位
 339   3          }
 340   2          else outByte=modbyte|ReadData();     //输出位不影响其它位
 341   2              WriteData(outByte);
 342   2         }
 343   1      }
 344          
 345          void Delay(uint MS)
 346          {
 347   1              uchar us,usn;
 348   1              while(MS!=0)
 349   1              {
 350   2                      usn = 2;        //for 12M
 351   2                      while(usn!=0)
 352   2                      {
 353   3                              us=0xf6;
 354   3                              while (us!=0){us--;};
 355   3                              usn--;
 356   3                      }
 357   2                      MS--;
 358   2              }
 359   1      } 
 360          
 361          /*************************************8888
 362          数字转化成字符
 363          *******************************************/
 364          uchar *conv(uint shuzi)
 365          {
C51 COMPILER V7.07   12864                                                                 09/12/2008 07:31:04 PAGE 7   

 366   1              uchar *zifu;
 367   1              switch (shuzi)
 368   1              {
 369   2                      case 0 :
 370   2                      {
 371   3                      zifu="0";
 372   3                      break;
 373   3                      }
 374   2                      case 1 :
 375   2                      {
 376   3                      zifu="1";
 377   3                      break;
 378   3                      }
 379   2                      case 2 :
 380   2                      {
 381   3                      zifu="2";
 382   3                      break;
 383   3                      }
 384   2                      case 3 :
 385   2                      {
 386   3                      zifu="3";
 387   3                      break;
 388   3                      }
 389   2                      case 4 :
 390   2                      {
 391   3                      zifu="4";
 392   3                      break;
 393   3                      }
 394   2                      case 5 :
 395   2                      {
 396   3                      zifu="5";
 397   3                      break;
 398   3                      }
 399   2                      case 6 :
 400   2                      {
 401   3                      zifu="6";
 402   3                      break;
 403   3                      }
 404   2                      case 7 :
 405   2                      {
 406   3                      zifu="7";
 407   3                      break;
 408   3                      }
 409   2                      case 8 :
 410   2                      {
 411   3                      zifu="8";
 412   3                      break;
 413   3                      }
 414   2                      case 9 :
 415   2                      {
 416   3                      zifu="9";
 417   3                      break;
 418   3                      }
 419   2                      default :break;
 420   2              }
 421   1              return zifu;
 422   1      }
 423          
 424          uint skey() //简易小按键
 425          {       
 426   1              uint keyval;
 427   1              Key1=0;
C51 COMPILER V7.07   12864                                                                 09/12/2008 07:31:04 PAGE 8   

 428   1              Key2=0; 
 429   1              if(Key1)
 430   1              {
 431   2                      Delay(10);
 432   2                      if(Key1)
 433   2                              keyval=1;
 434   2              }
 435   1              else
 436   1                      if(Key2)
 437   1                      {
 438   2                              Delay(10);
 439   2                              if(Key2)
 440   2                                      keyval=2;
 441   2                      }
 442   1                      else keyval=0;
 443   1              return keyval;
 444   1      }
 445          
 446          void Main( void )
 447          {
 448   1                      uint isec,imin,ihour,temp;
 449   1              uchar x,i;
 450   1                      uint keyvalue=0;
 451   1                      uchar sec[]="00";
 452   1                      uchar min[]="00";
 453   1                      uchar hour[]="00";
 454   1                      uchar year[]="2008";
 455   1                      uchar month[]="09";
 456   1                      uchar day[]="10";
 457   1              LcmInit();
 458   1              LcmClear();
 459   1                LcmClear();
 460   1                    LcmPutBMP(BMP1);
 461   1                    Delay(1000);
 462   1            LcmClear();
 463   1                    //LcmReverseBMP();
 464   1                    Delay(1000);
 465   1                //LcmClear();
 466   1            x=0;
 467   1            for(i=0;i<8;i++)
 468   1            {
 469   2                      LcmPutHZ_12(x,i*7,i);
 470   2            x=x+16;
 471   2            }
 472   1            LcmPutstr( 4,2,"Good" );
 473   1            LcmPutstr( 6,35,"Job" );
 474   1          Delay(500);
 475   1              LcmClear();
 476   1              LcmPutstr(2,0,year);
 477   1              LcmPutstr(2,30,month);
 478   1              LcmPutstr(2,60,day);
 479   1              LcmPutstr(4,0,min);
 480   1              LcmPutstr(4,13,":");
 481   1              LcmPutstr(4,20,min);
 482   1              LcmPutstr(4,35,":");
 483   1              LcmPutstr(4,40,sec);
 484   1              isec=58;imin=58;ihour=22;
 485   1              while(1)
 486   1              {       
 487   2                      keyvalue=skey();
 488   2                      switch (keyvalue)
 489   2                      {
C51 COMPILER V7.07   12864                                                                 09/12/2008 07:31:04 PAGE 9   

 490   3                      case 1: LcmPutstr(6,90,"1");break;
 491   3                      case 2: LcmPutstr(6,90,"2");break;
 492   3                      default:LcmPutstr(6,90,"0");break;
 493   3                      }
 494   2                      isec++;
 495   2                      if(isec>59) 
 496   2                      {
 497   3                              isec=0;
 498   3                              imin++;
 499   3                              if(imin>59) 
 500   3                              {       
 501   4                                      imin=0;
 502   4                                      ihour++;
 503   4                                      if(ihour>23) ihour=0;
 504   4                                      temp=ihour/10;
 505   4                                      hour[0]=*conv(temp);
 506   4                                      temp=ihour%10;
 507   4                                      hour[1]=*conv(temp);
 508   4                                      LcmPutstr(4,0,hour);
 509   4                              }
 510   3                              temp=imin/10;
 511   3                              min[0]=*conv(temp);
 512   3                              temp=imin%10;
 513   3                              min[1]=*conv(temp);
 514   3                              LcmPutstr(4,20,min);
 515   3                      }
 516   2                      temp=isec/10;
 517   2                      sec[0]=*conv(temp);
 518   2                      temp=isec%10;
 519   2                      sec[1]=*conv(temp);
 520   2                      Delay(100);
 521   2                      LcmPutstr(4,40,sec);
 522   2          }
 523   1      }
 524          
 525          unsigned char code BMP1[]={             //字节倒序

⌨️ 快捷键说明

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