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

📄 cgm12864b.lst

📁 C8051F系列
💻 LST
📖 第 1 页 / 共 3 页
字号:
 322   3                              LCD_WriteCommand1(0xB8+y+i/16);
 323   3                              LCD_WriteCommand1(0x40+x+i%16);
 324   3                              LCD_WriteData1(Dot[i]);
 325   3                      }
 326   2                      else
 327   2                      {
 328   3                              LCD_WriteCommand2(0xB8+y+i/16);
 329   3                              LCD_WriteCommand2(0x40+x-64+i%16);
 330   3                              LCD_WriteData2(Dot[i]);
 331   3                      }
 332   2              }
 333   1      }
 334          
 335          void InitLCD(void)      //初始化LCD
 336          {
 337   1              char i,j;
 338   1              LCD_RST=0;
 339   1              Delay1ms(1);
 340   1              LCD_RST=1;
 341   1      
 342   1              LCD_WriteCommand1(0xc0);        
 343   1              LCD_WriteCommand2(0xc0);
 344   1              LCD_WriteCommand1(0x3f);        //开显示
 345   1              LCD_WriteCommand2(0x3f);
 346   1      
 347   1              for (j=0;j<8;j++)                       //清屏
 348   1              {
 349   2                      LCD_WriteCommand1(0xB8+j);      //清左半屏
 350   2                      LCD_WriteCommand1(0x40);
 351   2                      for (i=0;i<64;i++)
 352   2                              LCD_WriteData1(0x00);
 353   2      
 354   2                      LCD_WriteCommand2(0xB8+j);      //清右半屏
 355   2                      LCD_WriteCommand2(0x40);
 356   2                      for (i=0;i<64;i++)
 357   2                              LCD_WriteData2(0x00);
 358   2              }
 359   1      }
 360          
 361          void DispBmp(char *buf) //显示一幅位图
 362          {
 363   1      int i,j;
 364   1              for (j=0;j<8;j++)                       //显示位图
 365   1              {
C51 COMPILER V7.20   CGM12864B                                                             10/18/2005 11:13:45 PAGE 7   

 366   2                      LCD_WriteCommand1(0xB8+j);      
 367   2                      LCD_WriteCommand1(0x40);
 368   2                      for (i=0;i<64;i++)
 369   2                              LCD_WriteData1(buf[(j*2)*64+i]);
 370   2                      LCD_WriteCommand2(0xB8+j);      
 371   2                      LCD_WriteCommand2(0x40);
 372   2                      for (i=0;i<64;i++)
 373   2                              LCD_WriteData2(buf[(j*2+1)*64+i]);
 374   2              }
 375   1      }
 376          
 377          void SYSCLK_Init (void)
 378          {
 379   1         int i;                              // delay counter
 380   1         OSCXCN = 0x67;                      // start external oscillator with
 381   1                                             // 18.432MHz crystal
 382   1         for (i=0; i < 256; i++) ;           // Wait for osc. to start up
 383   1         while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
 384   1         OSCICN = 0x88;                      // select external oscillator as SYSCLK
 385   1                                             // source and enable missing clock
 386   1                                             // detector
 387   1      }
 388          
 389          void PORT_Init (void)
 390          {
 391   1         XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
 392   1      }
 393          
 394          
 395          unsigned char Count1ms;
 396          void Timer0_Init (void)
 397          {
 398   1              CKCON|=0x8;
 399   1              TMOD|=0x1;      //16Bit
 400   1              Count1ms=10;
 401   1              TR0 = 0;                                // STOP Timer0
 402   1              TH0 = (-SYSCLK/1000) >> 8;              // set Timer0 to overflow in 1ms
 403   1              TL0 = -SYSCLK/1000;
 404   1              TR0 = 1;        // START Timer0
 405   1              IE|= 0x2; 
 406   1      }
 407          
 408          void Timer0_ISR (void) interrupt 1  //1ms
 409          {
 410   1              TH0 = (-SYSCLK/1000) >> 8;  
 411   1              TL0 = -SYSCLK/1000;
 412   1              if (Count1ms) Count1ms--;
 413   1      }
 414          
 415          void Delay1ms(unsigned char T)
 416          {
 417   1              Count1ms=T;
 418   1              while (Count1ms);
 419   1      }
 420          
 421          void Delay1s(unsigned char T)
 422          {
 423   1              while (T)
 424   1              {
 425   2                      Delay1ms(200);
 426   2                      Delay1ms(200);
 427   2                      Delay1ms(200);
C51 COMPILER V7.20   CGM12864B                                                             10/18/2005 11:13:45 PAGE 8   

 428   2                      Delay1ms(200);
 429   2                      Delay1ms(200);
 430   2                      T--;
 431   2              }
 432   1      }
 433          
 434          void TestLCD(void)
 435          {
 436   1              char i;
 437   1              InitLCD();
 438   1              DispBmp(screen);
 439   1              for (i=0;i<64;i++)
 440   1              {
 441   2                      Delay1ms(50);
 442   2                      LCD_WriteCommand1(0xc0+i%64);   //设置起始行,实现向上滚动
 443   2                      LCD_WriteCommand2(0xc0+i%64);
 444   2              }
 445   1              Delay1s(3);
 446   1              for (;;)
 447   1              {
 448   2                      DispBmp(screen1);
 449   2                      Delay1s(5);
 450   2                      DispBmp(screen2);
 451   2                      Delay1s(6);
 452   2                      InitLCD();
 453   2                      LCD_WriteHZ(2,1,Han); //显示16*16点阵汉字'汉'
 454   2              Delay1ms(100);
 455   2                      LCD_WriteHZ(60,3,Zi); //显示16*16点阵汉字'字'
 456   2                      Delay1s(5);
 457   2              }
 458   1      }
 459          
 460          void main (void) 
 461          {
 462   1              WDTCN = 0xde;
 463   1              WDTCN = 0xad;           //关看门狗
 464   1              SYSCLK_Init ();         //初始化时钟
 465   1              Timer0_Init();                  //初始化定时器
 466   1              PORT_Init ();           //初始化IO口
 467   1              EA=1;                                   //开中断
 468   1              TestLCD();
 469   1      }
 470          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    744    ----
   CONSTANT SIZE    =   3136    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       8
   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 + -