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

📄 cgm12864b.lst

📁 主要实现在C8051F020的平台上完成在12864液晶OCMG4C8上画正弦函数特性曲线。
💻 LST
📖 第 1 页 / 共 4 页
字号:
 376          void LCD_WaitReady(void) //判断LCD控制芯片ST7920是否忙
 377          {
 378   1              LCD_DATA=0xff;
 379   1              _nop_();
 380   1              LCD_RW=1;
 381   1              LCD_RS=0;
 382   1              LCD_E=1;
 383   1              while (LCD_DATA&0x80);
 384   1      }       
 385          
 386          //-------------------------------------------------------------------------
 387          //函数名称:      void LCD_WriteCommand1(char ch)
 388          //函数功能:      向LCD控制芯片ST7920发送控制命令
 389          //入口参数:      char ch 控制命令参数
 390          //出口参数:      无
 391          //全局变量引用:  无
 392          //调用模块:      LCD_WaitReady1()
 393          //----------------------------------------------------------------------
 394          
 395          void LCD_WriteCommand(char ch) 
 396          {
 397   1              LCD_WaitReady(); //判断LCD是否处于忙状态
 398   1              LCD_RW=0;
 399   1              delay(10);
 400   1              LCD_RS=0;
 401   1              delay(10);
 402   1              LCD_DATA=ch;
 403   1              delay(10);
 404   1              LCD_E=1;
 405   1              delay(30);
 406   1              LCD_E=0;
 407   1      }
 408          //-------------------------------------------------------------------------
 409          //函数名称:      void LCD_WriteData1(char ch)
 410          //函数功能:      向LCD控制芯片KS0108发送数据
 411          //入口参数:      char ch 数据参数
 412          //出口参数:      无
 413          //全局变量引用:  无
 414          //调用模块:      LCD_WaitReady1()
 415          //----------------------------------------------------------------------
 416          void LCD_WriteData(char ch)     
 417          {
 418   1              LCD_WaitReady();                                        //判断LCD是否处于忙状态
 419   1              LCD_RW=0;
 420   1              LCD_RS=1;
 421   1              LCD_DATA=ch;
 422   1              LCD_E=1;
 423   1              delay(30);
 424   1              LCD_E=0;
 425   1      }
 426          void LCD_WriteData2(uint ch)            //连续写两个汉字
 427          {
C51 COMPILER V8.02   CGM12864B                                                             05/07/2009 22:41:02 PAGE 8   

 428   1              uchar a,b;
 429   1              a=0;
 430   1              b=0;
 431   1              a|=ch;
 432   1              ch>>=8;
 433   1              b|=ch;
 434   1              LCD_WriteData(b);
 435   1              LCD_WriteData(a);
 436   1      }
 437          
 438          void Char_Set_XY(uchar x, uchar y, uchar *p)  //X代表列,Y代表行,写字符串
 439          { 
 440   1          switch(y)
 441   1          { 
 442   2                  case 0:
 443   2                       {
 444   3                               LCD_WriteCommand(0x80+x);
 445   3                               break;
 446   3                       }
 447   2                  case 1:
 448   2                       {
 449   3                               LCD_WriteCommand(0x90+x);
 450   3                               break;
 451   3                       }
 452   2                  case 2:
 453   2                       {
 454   3                               LCD_WriteCommand(0x88+x);
 455   3                               break;
 456   3                       }
 457   2                  case 3:
 458   2                       {
 459   3                               LCD_WriteCommand(0x98+x);
 460   3                               break;
 461   3                       }
 462   2          }
 463   1      
 464   1          while(*p != '\0') 
 465   1          { 
 466   2              LCD_WriteData(*p++); 
 467   2          } 
 468   1      }       
 469          
 470          
 471          //-------------------------------------------------------------------------
 472          //函数名称:      void InitLCD(void)
 473          //函数功能:      初始化液晶并清屏
 474          //入口参数:      无
 475          //出口参数:      无
 476          //全局变量引用:  无
 477          //调用模块:      Delay1ms(1);LCD_WriteCommand1(); LCD_WriteCommand2();
 478          //               LCD_WriteData1();      LCD_WriteData1();
 479          //----------------------------------------------------------------------
 480          void InitLCD(void)      
 481          {
 482   1              //LCD_RST=0;
 483   1              //delay(10);
 484   1              //LCD_RST=1;
 485   1              LCD_WriteCommand(0x30);
 486   1              LCD_WriteCommand(0x0c);         //开显示
 487   1              LCD_WriteCommand(0x01);
 488   1              LCD_WriteCommand(0x06); 
 489   1      }                       
C51 COMPILER V8.02   CGM12864B                                                             05/07/2009 22:41:02 PAGE 9   

 490          //-------------------------------------------------------------------------
 491          //函数名称:      void SYSCLK_Init (void)
 492          //函数功能:      系统时钟初始化;使能外部时钟:11.0592MHz
 493          //入口参数:      无
 494          //出口参数:      无
 495          //全局变量引用:  无
 496          //调用模块:      无
 497          //----------------------------------------------------------------------
 498          /*void SYSCLK_Init (void)
 499          {
 500             int i;                              // delay counter
 501             OSCXCN = 0x67;                      // start external oscillator with
 502                                                 // 18.432MHz crystal
 503             for (i=0; i < 256; i++) ;           // Wait for osc. to start up
 504             while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
 505             OSCICN = 0x88;                      // select external oscillator as SYSCLK
 506           }        */                              // source and enable missing clock
 507                                                 // detector
 508          /*displaybmp(uchar * x)
 509          {
 510                  uchar i=0;
 511                  while(x[i]!='\0')
 512                  {
 513                          LCD_WriteData(x[i]);
 514                          i++;
 515                   }
 516          }          */
 517          //-------------------------------------------------------------------------
 518          //函数名称:      PORT_Init ()
 519          //函数功能:      端口初始化;使能交叉开关
 520          //入口参数:      无
 521          //出口参数:      无
 522          //全局变量引用:  无
 523          //调用模块:      无
 524          //----------------------------------------------------------------------
 525          
 526          /*void PORT_Init (void)
 527          {
 528             XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
 529             P74OUT = 0XFf;
 530             P2MDOUT = 0xff;
 531          } */
 532          /*void WriteCGRAM(uchar * p,uchar CgramAdress)          //造字
 533          {
 534                  uchar i;
 535                  LCD_WriteCommand(CgramAdress);
 536                  for(i=0;i<16;i++)
 537                  {
 538                          LCD_WriteCommand(CgramAdress+i);
 539                          LCD_WriteData(p[i*2]);
 540                          LCD_WriteData(p[i*2+1]);
 541                          delay(50);
 542                  }
 543          }
 544          void ReadCGRAM(DdramAdress,CgramCode)
 545          {
 546                  LCD_WriteCommand(DdramAdress);
 547                  LCD_WriteData(0x00);
 548                  LCD_WriteData(CgramCode);
 549          }         */
 550          void SetDraw()                                                   //绘图设置
 551          {
C51 COMPILER V8.02   CGM12864B                                                             05/07/2009 22:41:02 PAGE 10  

 552   1              LCD_WriteCommand(0x01);
 553   1              delay(100);
 554   1              LCD_WriteCommand(0x34);                 //8位数据接口,扩充指令集
 555   1              delay(100);
 556   1      }
 557          
 558          //---------------------------------------------------------------------------
 559          // 主程序
 560          //----------------------------------------------------------------------------
 561          
 562          void Draw_Pic(uchar x, uchar y, const uchar *Draw)         //绘图函数
 563          { 
 564   1              uchar i, j, temp_x, temp_y;   
 565   1              temp_x = x;       
 566   1              temp_y = y;      
 567   1              temp_x |= 0x80;     

⌨️ 快捷键说明

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