📄 cgm12864b.lst
字号:
350 2 LCD_WriteCommand2(0xB8+j); //清右半屏
351 2 LCD_WriteCommand2(0x40);
352 2 for (i=0;i<64;i++)
353 2 LCD_WriteData2(0x00);
354 2 }
355 1 }
356 //-------------------------------------------------------------------------
357 //函数名称: void DispBmp(char *buf)
358 //函数功能: 显示位图
359 //入口参数: char *buf 位图数据首地址
360 //出口参数: 无
361 //全局变量引用: 无
362 //调用模块: LCD_WriteCommand1(); LCD_WriteCommand2();
363 // LCD_WriteData1(); LCD_WriteData1();
364 //----------------------------------------------------------------------
365
C51 COMPILER V7.05 CGM12864B 02/14/2006 09:35:46 PAGE 7
366 void DispBmp(char *buf) //显示一幅位图
367 {
368 1 int i,j;
369 1 for (j=0;j<8;j++) //显示位图
370 1 {
371 2 LCD_WriteCommand1(0xB8+j);
372 2 LCD_WriteCommand1(0x40);
373 2 for (i=0;i<64;i++)
374 2 LCD_WriteData1(buf[(j*2)*64+i]);
375 2 LCD_WriteCommand2(0xB8+j);
376 2 LCD_WriteCommand2(0x40);
377 2 for (i=0;i<64;i++)
378 2 LCD_WriteData2(buf[(j*2+1)*64+i]);
379 2 }
380 1 }
381 //-------------------------------------------------------------------------
382 //函数名称: void SYSCLK_Init (void)
383 //函数功能: 系统时钟初始化;使能外部时钟:11.0592MHz
384 //入口参数: 无
385 //出口参数: 无
386 //全局变量引用: 无
387 //调用模块: 无
388 //----------------------------------------------------------------------
389 void SYSCLK_Init (void)
390 {
391 1 int i; // delay counter
392 1 OSCXCN = 0x67; // start external oscillator with
393 1 // 18.432MHz crystal
394 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
395 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
396 1 OSCICN = 0x88; // select external oscillator as SYSCLK
397 1 // source and enable missing clock
398 1 // detector
399 1 }
400 //-------------------------------------------------------------------------
401 //函数名称: PORT_Init ()
402 //函数功能: 端口初始化;使能交叉开关
403 //入口参数: 无
404 //出口参数: 无
405 //全局变量引用: 无
406 //调用模块: 无
407 //----------------------------------------------------------------------
408
409 void PORT_Init (void)
410 {
411 1 XBR2 = 0x40; // Enable crossbar and weak pull-ups
412 1 }
413
414 //-------------------------------------------------------------------------
415 //函数名称: Timer0_Init ()
416 //函数功能: 定时器0初始化;定时时间1ms
417 //入口参数: 无
418 //出口参数: 无
419 //全局变量引用: 无
420 //调用模块: 无
421 //----------------------------------------------------------------------
422
423 void Timer0_Init (void)
424 {
425 1 CKCON|=0x8;
426 1 TMOD|=0x1; //16Bit
427 1 Count1ms=10;
C51 COMPILER V7.05 CGM12864B 02/14/2006 09:35:46 PAGE 8
428 1 TR0 = 0; // STOP Timer0
429 1 TH0 = (-SYSCLK/1000) >> 8; // set Timer0 to overflow in 1ms
430 1 TL0 = -SYSCLK/1000;
431 1 TR0 = 1; // START Timer0
432 1 IE|= 0x2;
433 1 }
434
435 //-------------------------------------------------------------------------
436 //函数名称: Timer0_ISR ()
437 //函数功能: 定时器0中断服务程序
438 //入口参数: 无
439 //出口参数: 无
440 //全局变量引用: Count1ms
441 //调用模块: 无
442 //----------------------------------------------------------------------
443 void Timer0_ISR (void) interrupt 1 //1ms
444 {
445 1 TH0 = (-SYSCLK/1000) >> 8;
446 1 TL0 = -SYSCLK/1000;
447 1 if (Count1ms) Count1ms--;
448 1 }
449
450 //-------------------------------------------------------------------------
451 //函数名称: Delay1ms(unsigned char T)
452 //函数功能: 延时1ms程序
453 //入口参数: unsigned char T :定时时间常数
454 //出口参数: 无
455 //全局变量引用: Count1ms
456 //调用模块: 无
457 //----------------------------------------------------------------------
458
459 void Delay1ms(unsigned char T)
460 {
461 1 Count1ms=T;
462 1 while (Count1ms);
463 1 }
464
465 //-------------------------------------------------------------------------
466 //函数名称: void Delay1s(unsigned char T)
467 //函数功能: 延时1s程序
468 //入口参数: unsigned char T :定时时间常数
469 //出口参数: 无
470 //全局变量引用: Count1ms
471 //调用模块: Delay1ms()
472 //----------------------------------------------------------------------
473 void Delay1s(unsigned char T)
474 {
475 1 while (T)
476 1 {
477 2 Delay1ms(200);
478 2 Delay1ms(200);
479 2 Delay1ms(200);
480 2 Delay1ms(200);
481 2 Delay1ms(200);
482 2 T--;
483 2 }
484 1 }
485
486 //---------------------------------------------------------------------------
487 // 主程序
488 //----------------------------------------------------------------------------
489
C51 COMPILER V7.05 CGM12864B 02/14/2006 09:35:46 PAGE 9
490 void main (void)
491 {
492 1 WDTCN = 0xde;
493 1 WDTCN = 0xad; //关看门狗
494 1 SYSCLK_Init (); //初始化时钟
495 1 Timer0_Init(); //初始化定时器
496 1 PORT_Init (); //初始化IO口
497 1 EA=1; //开中断
498 1 InitLCD(); //清屏
499 1 Delay1s(1); //延时1S
500 1 for (;;)
501 1 {
502 2 DispBmp(screen1); //显示位图"新华龙电子-单片机推广应用急先锋!"
503 2 Delay1s(3);
504 2 DispBmp(screen2); //显示位图"换代创新后的51-高速SOC美国silicon labs 8051F"
505 2 Delay1s(3);
506 2 InitLCD(); //清屏
507 2 LCD_WriteHZ(2,1,Han); //显示16*16点阵汉字'汉'
508 2 Delay1ms(100);
509 2 LCD_WriteHZ(60,3,Zi); //显示16*16点阵汉字'字'
510 2 Delay1s(3);
511 2 }
512 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 689 ----
CONSTANT SIZE = 2112 ----
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 + -