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

📄 12864.lst

📁 在Keil uVision3环境下开发的
💻 LST
📖 第 1 页 / 共 2 页
字号:
 281          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 282          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 283          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 284          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 285          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 286          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 287          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 288          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 289          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 290          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 291          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 292          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 293          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 294          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 295          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 296          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 297          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 298          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 299          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 300          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 301          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 302          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 303          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V8.02   12864                                                                 11/18/2008 19:24:31 PAGE 6   

 304          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 305          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 306          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 307          };
 308          
 309          /*软件延时 Delay()*/
 310          void Delay(unsigned int count)
 311          {
 312   1              unsigned char i;
 313   1              while(--count != 0)
 314   1              {
 315   2                      for(i = 0; i < 125; i++); // ";" 表示空语句,CPU空转。
 316   2              } // i 从0加到125,在12M晶体下CPU大概耗时1毫秒
 317   1      }
 318          
 319          /*LCM12864测忙函数 LCM12864_TestBusy()*/
 320          void LCM12864_TestBusy(void)
 321          {
 322   1              LCM12864_RW = 1;
 323   1              LCM12864_RS = 0;
 324   1              LCM12864_E = 0;
 325   1              LCM12864_E = 1;
 326   1              while(LCM12864_DB7_DB0 & LCM12864_STATUS_BUSY);
 327   1      }
 328          
 329          /*写指令到LCM12864 LCM12864_WriteCMD()*/
 330          void LCM12864_WriteCMD(unsigned char LCM12864_command)
 331          { //LCM12864_command 欲写入指令
 332   1              LCM12864_TestBusy();
 333   1              LCM12864_RW = 0; LCM12864_RS = 0;
 334   1              LCM12864_DB7_DB0 = LCM12864_command;
 335   1              LCM12864_E = 0;
 336   1              LCM12864_E = 1;
 337   1              LCM12864_TestBusy();
 338   1      }
 339          
 340          /*写数据到LCM12864 LCM12864_WriteData()*/
 341          void LCM12864_WriteData(unsigned char LCM12864_data)
 342          { //LCM12864_command 欲写入数据
 343   1              LCM12864_RW = 0; LCM12864_RS = 1;
 344   1              LCM12864_DB7_DB0 = LCM12864_data;
 345   1              LCM12864_E = 0;
 346   1              LCM12864_E = 1;
 347   1              LCM12864_TestBusy(); //读LCM忙
 348   1      }
 349          
 350          /*向LCM12864填充数据 LCM12864_Fill_Screen()*/
 351          void LCM12864_Fill_Screen( unsigned char t, //设置涮屏速度(为1不涮屏,默认为60)
 352          unsigned char LCM12864_FillData)//欲写入的数据
 353          { 
 354   1              unsigned char x,y;
 355   1              LCM12864_CS1 = 0;LCM12864_CS2 = 0; // 选中左半屏及右半屏
 356   1              LCM12864_WriteCMD(LCM12864_START_ROW+0); // 设置显示起始行为0
 357   1              for(x=0;x<8;x++)
 358   1              {
 359   2                      Delay(t); // 涮屏速度延时
 360   2                      LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+x); // 设置页地址
 361   2                      // // 设置列地址
 362   2                      for(y=0;y<64;y++)
 363   2                      {
 364   3                              LCM12864_WriteCMD(LCM12864_COL_START_ADDR+y); 
 365   3                              LCM12864_WriteData(LCM12864_FillData);
C51 COMPILER V8.02   12864                                                                 11/18/2008 19:24:31 PAGE 7   

 366   3                      }
 367   2              }
 368   1              LCM12864_CS1 = 1; // 不选中右半屏
 369   1              LCM12864_CS2 = 1; // 不选中右半屏
 370   1      }
 371          
 372          /*LCM12864清屏 LCM12864_Clear_Screen()*/
 373          void LCM12864_Clear_Screen(void)
 374          {
 375   1              LCM12864_Fill_Screen(60,0x00); //写入0到每个显示区
 376   1      }
 377          
 378          /*显示128*64图片 LCM12864_Disp_Bitmap_12864()*/
 379          void LCM12864_Disp_Bitmap_12864( unsigned char t, //设置涮屏速度(为1不涮屏,默认为60)
 380          unsigned char code *bitmap_12864)//128*64点阵图像所在数组表
 381          { 
 382   1              unsigned char j,k;
 383   1              for(k=0;k<8;k++)
 384   1              { //设置8页的显示
 385   2                      Delay(t);
 386   2                      LCM12864_CS1 = 0;LCM12864_CS2 = 1; //半屏选中
 387   2                      LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+k); //选中页
 388   2                      //选中列
 389   2                      for(j=0;j<64;j++)
 390   2                      {
 391   3                      LCM12864_WriteCMD(LCM12864_COL_START_ADDR+j);
 392   3                      LCM12864_WriteData(bitmap_12864[k*128+j]); //开始写入数据
 393   3                      }
 394   2                      LCM12864_CS1 = 1;LCM12864_CS2 = 0;
 395   2                      LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+k);
 396   2                      for(j=64;j<128;j++)
 397   2                      {
 398   3                      LCM12864_WriteCMD(LCM12864_COL_START_ADDR+j-64);
 399   3                      LCM12864_WriteData(bitmap_12864[k*128+j]);
 400   3                      }
 401   2              }
 402   1      }
 403          
 404          /*在LCM12864的指定点显示16*16点阵汉字 LCM12864_Disp_Chinese_16_16()*/
 405          void LCM12864_Disp_Char_x_16( 
 406          unsigned char t, //设置书写速度(为1直接显示,默认为12)
 407          unsigned char b, //输入8:8*16字符,16:16*16字符
 408          unsigned char LCM12864_page, //LCM12864的页地址(0~7)
 409          unsigned char LCM12864_col, //LCM12864的列地址(0~128)注意:右半屏起始是64
 410          unsigned char  *Char_x_16) //16*16点阵汉字字模(纵向取模,字节倒序)    
 411          {
 412   1              unsigned char j=0,i=0;
 413   1              if(LCM12864_col < 64 )
 414   1              {
 415   2                      LCM12864_CS1 = 0; LCM12864_CS2 = 1; //判断屏幕使能
 416   2              }
 417   1              else
 418   1              {
 419   2                      LCM12864_CS1 = 1; LCM12864_CS2 = 0;
 420   2                      LCM12864_col = LCM12864_col - 64;
 421   2              }
 422   1              for(j=0;j<2;j++)
 423   1              {
 424   2                      LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+LCM12864_page+j);
 425   2                      for(i=0;i<b;i++)
 426   2                      {
 427   3                              LCM12864_WriteCMD(LCM12864_COL_START_ADDR+LCM12864_col+i);
C51 COMPILER V8.02   12864                                                                 11/18/2008 19:24:31 PAGE 8   

 428   3                              LCM12864_WriteData(Char_x_16[b*j+i]);
 429   3                              Delay(t);
 430   3                      }
 431   2              }
 432   1      }
 433          
 434          /*用一个一维数组time[]来存储时间,时间格式00:00:00*/
 435          /*void disbuftime(void)
 436          {
 437              time[7]=second%10;
 438                  time[6]=second/10;
 439                  time[5]=10;
 440                  time[4]=minute%10;
 441                  time[3]=minute/10;
 442                  time[2]=10;
 443                  time[1]=hour%10;
 444                  time[0]=hour/10;
 445          }*/
 446          
 447          /*写时间*/
 448          /*void distime(unsigned char timecode) 
 449          {
 450              unsigned char j=0,i=0;
 451                  LCM12864_CS1 = 0; LCM12864_CS2 = 1; //左屏
 452                  disbuftime();
 453              for(j=6;j<8;j++)//页
 454              {
 455                LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+j);
 456                    for(i=0;i<8;i++)
 457                    {   
 458                       LCM12864_WriteCMD(LCM12864_COL_START_ADDR+i);
 459                   LCM12864_WriteData(timecode[time[i]][16]);
 460                    }
 461              }
 462          } */ 
 463          
 464          /*LCM12864初始化 LCM12864_Init()*/
 465          void LCM12864_Init(void)
 466          {
 467   1              LCM12864_RESET = 0; //复位
 468   1              Delay(300);
 469   1              LCM12864_RESET = 1;
 470   1              Delay(300);
 471   1              LCM12864_Clear_Screen(); //清除屏幕
 472   1              LCM12864_CS1 = 0; LCM12864_CS2 = 0; //选中双屏
 473   1              LCM12864_WriteCMD(LCM12864_DISP_OFF); //关显示
 474   1              LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+0); //第0页位置
 475   1              LCM12864_WriteCMD(LCM12864_START_ROW+0); //第0行
 476   1              LCM12864_WriteCMD(LCM12864_COL_START_ADDR+0); //第0列
 477   1              LCM12864_WriteCMD(LCM12864_DISP_ON); //开显示
 478   1      /*      TMOD = 0x01;            // 定时器0,, 16位定时方式
 479   1              TH0=(65536-50000)/256;
 480   1          TL0=(65536-50000)%256;
 481   1              hour=00;
 482   1              minute=00;
 483   1              second=00;
 484   1          EA=1;
 485   1          ET0=1;
 486   1          TR0=1;      */
 487   1      }
 488          /* 以上是 LCM12864液晶模块驱动程序*/
 489          
C51 COMPILER V8.02   12864                                                                 11/18/2008 19:24:31 PAGE 9   

 490          /*LCM12864液晶模块驱动演示 main()*/
 491          void main (void)
 492          {
 493   1              unsigned char /*lx = 32,*/i;
 494   1              LCM12864_Init(); // LCM12864初始化
 495   1              while(1)
 496   1              {
 497   2      
 498   2                      LCM12864_Disp_Bitmap_12864(60,tuxin); //显示图像
 499   2                      Delay(3000); //延时3秒
 500   2                      LCM12864_Clear_Screen(); //清除屏幕
 501   2                      LCM12864_Disp_Char_x_16(12,16,0,5,chuang); 
 502   2                      Delay(500);
 503   2                      LCM12864_Disp_Char_x_16(12,16,0,25,xin); 
 504   2                      Delay(500);
 505   2                      LCM12864_Disp_Char_x_16(12,16,0,45,shi); 
 506   2                      Delay(500);
 507   2                      LCM12864_Disp_Char_x_16(12,16,0,65,ya); 
 508   2                      Delay(500);
 509   2                      LCM12864_Disp_Char_x_16(12,16,0,85,si); 
 510   2                      Delay(500);
 511   2                  for(i=0;i<3;i++)
 512   2                      { //显示字符串“Dy1286
 513   3                              LCM12864_Disp_Char_x_16(1,16,2,32+16*i,nAsciiDot+32*i); //显示"12864",从第二行32列开始
 514   3                      //      Delay(1000);
 515   3              }
 516   2                      for(i=0;i<15;i++)
 517   2                      {
 518   3                          LCM12864_Disp_Char_x_16(12,8,4,8*i,Tel+16*i);
 519   3                              Delay(100);
 520   3                      }
 521   2             // LCM12864_Disp_Char_x_8(6,0,timecode[time[i]][16]);
 522   2                      //Delay(1000);
 523   2          }
 524   1      }
 525          /*定时器中断0的方式1来处理时钟显示*/
 526          /*void timer0() interrupt 1
 527          {
 528            TH0=(65536-50000)/256;
 529            TL0=(65536-50000)%256;
 530            count++;
 531            if(count==18)//每进入一次为1秒
 532            {
 533              count=0;
 534                  second++;
 535                  if(second==60)
 536                  {
 537                    second=0;
 538                    minute++;
 539                    if(minute==60)
 540                    {
 541                      minute=0;
 542                          hour++;
 543                          if(hour==24)
 544                          {
 545                            hour=0;
 546                  }
 547                    }
 548                  }
 549            }
 550          } */
 551          
C51 COMPILER V8.02   12864                                                                 11/18/2008 19:24:31 PAGE 10  



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    620    ----
   CONSTANT SIZE    =   1696    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12      12
   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 + -