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

📄 mykey.lst

📁 实现单片机与键盘和液晶的人机交互
💻 LST
📖 第 1 页 / 共 2 页
字号:
 349   2                 case 6:
 350   2                 if((FLASHDATA[FLASHTAB]>'4')&&(FLASHDATA[FLASHTAB]<='6'))
 351   2                 {
 352   3                 FLASHDATA[FLASHTAB]=FLASHDATA[FLASHTAB]-1;
 353   3             return;
 354   3                 }
 355   2                 else return;
 356   2      
 357   2                 case 7:
 358   2                 if((FLASHDATA[FLASHTAB]>'0')&&(FLASHDATA[FLASHTAB]<='9')&&(FLASHDATA[FLASHTAB-1]>='4')&&(FLASHDATA[FLA
             -SHTAB-1]<'6'))
 359   2                 {
 360   3                 FLASHDATA[FLASHTAB]=FLASHDATA[FLASHTAB]-1;
 361   3             return;
 362   3                 }
 363   2                 if((FLASHDATA[FLASHTAB]=='0')&&(FLASHDATA[FLASHTAB-1]>'4')&&(FLASHDATA[FLASHTAB-1]<='6'))
 364   2                 {
C51 COMPILER V8.02   MYKEY                                                                 05/17/2008 16:44:41 PAGE 7   

 365   3                 FLASHDATA[FLASHTAB]='9';
 366   3                 FLASHDATA[FLASHTAB-1]=FLASHDATA[FLASHTAB-1]-1;
 367   3                 DATALCD[FLASHPOS[FLASHTAB-1]]= FLASHDATA[FLASHTAB-1];
 368   3             return;
 369   3                 }
 370   2                 if((FLASHDATA[FLASHTAB]=='0')&&(FLASHDATA[FLASHTAB-1]=='4'))
 371   2                 {
 372   3                 FLASHDATA[FLASHTAB]='0';
 373   3                 FLASHDATA[FLASHTAB-1]='6';
 374   3                 DATALCD[FLASHPOS[FLASHTAB-1]]= FLASHDATA[FLASHTAB-1];
 375   3             return;
 376   3                 }
 377   2                 else return;
 378   2         }
 379   1      }
 380          void set_CLEAR(void)
 381          {
 382   1        FLASHADDR=0x00FF;
 383   1        CPRST=NORM;      
 384   1        Page1();
 385   1      }
 386          
 387          
 388          
 389          
 390           
 391           
 392           
 393          
 394          
 395          
 396          
 397          
 398          
 399          
 400          
 401          
 402          
 403          
 404          
 405          
 406          
 407          
 408          
 409          
 410          
 411          
 412          
 413          
 414            
 415           
 416          
 417          
 418          /***************************************/
 419          // 延时子程序    延时t秒
 420          /***************************************/
 421          void delay(uint t)
 422          {
 423   1              uint i;
 424   1              uint j;
 425   1              for(j=0;j<t;j++)
 426   1                      for(i=0;i<109;i++)
C51 COMPILER V8.02   MYKEY                                                                 05/17/2008 16:44:41 PAGE 8   

 427   1                              _nop_();
 428   1      }
 429          
 430          
 431          /***************************************/
 432          //写寄存器命令
 433          /***************************************/
 434          void CmdWrite(uchar cmdreg,uchar cmddata)
 435          {
 436   1         
 437   1              LCD_BUS=cmdreg;  //写入寄存器地址
 438   1              CS=0;
 439   1              _RD=1;
 440   1              RS=0;
 441   1              _WR=0;
 442   1              _nop_();
 443   1              _WR=1;
 444   1              _nop_();
 445   1              RS=1;
 446   1              CS=1;
 447   1      
 448   1              LCD_BUS=cmddata;        //写入参数
 449   1      
 450   1              CS=0;
 451   1              _RD=1;
 452   1              RS=0;
 453   1              _WR=0;
 454   1              _nop_();
 455   1              _WR=1;
 456   1              _nop_();
 457   1              RS=1;
 458   1              CS=1;
 459   1              _RD=1;
 460   1      }
 461          
 462          /******************************************/
 463          //数据写操作
 464          /******************************************/
 465          void DataWrite(uchar wrdata)
 466          {
 467   1              _RD=1;
 468   1              _WR=1;
 469   1              RS=1;
 470   1      
 471   1              LCD_BUS=wrdata;  //写入数据
 472   1              
 473   1              CS=0;
 474   1              _WR=0;
 475   1              _nop_();
 476   1              _WR=1;
 477   1              _nop_();
 478   1              RS=0;
 479   1              CS=1;
 480   1      }
 481          
 482          /******************************************/
 483          //写入字符串
 484          /******************************************/
 485          void Printstr(uchar code *pstr)
 486          {
 487   1              while(*pstr!=0)
 488   1              {
C51 COMPILER V8.02   MYKEY                                                                 05/17/2008 16:44:41 PAGE 9   

 489   2                      DataWrite(*pstr);
 490   2                      pstr++;
 491   2                      delay(1);
 492   2              }
 493   1      }
 494          
 495          /******************************************/
 496          //整屏幕写入数据
 497          /******************************************/
 498          void FullScreenFill(uchar fill_data)
 499          {
 500   1              uchar i,j;
 501   1              CmdWrite(0x60,0x00);
 502   1              CmdWrite(0x70,0x00);
 503   1              for(i=0;i<24;i++)
 504   1                      for(j=0;j<128;j++)
 505   1                              DataWrite(fill_data);
 506   1      }
 507          
 508          /******************************************/
 509          //模块复位与初始化
 510          /******************************************/
 511          void LCD_Initial()
 512          {
 513   1              _RST=0;                  //复位开始
 514   1              delay(10);
 515   1              _RST=1;                  
 516   1              delay(10);               //复位结束
 517   1      
 518   1          CmdWrite(0x00,0xcd); //电源、软件正常模式,文本正向模式,开显示     ,屏幕不闪烁
 519   1              //CmdWrite(0x00,0xc5);
 520   1              CmdWrite(0x90,0x0d);
 521   1              CmdWrite(0xf0,0xa0); 
 522   1              CmdWrite(0x11,0x00); //光标高度和行距
 523   1              CmdWrite(0x03,0x80); //移动控制
 524   1              CmdWrite(0x10,0x6f); //光标和字体控制
 525   1          CmdWrite(0x12,0x91); //光标自动右移,显示PAGE1
 526   1                                               
 527   1          CmdWrite(0x20,0x17);          //工作视窗右边参数的设定
 528   1              CmdWrite(0x30,0x7f);
 529   1              CmdWrite(0x40,0x00);
 530   1              CmdWrite(0x50,0x00);
 531   1      
 532   1              CmdWrite(0x21,0x17);      //显示视窗参数的设定
 533   1              CmdWrite(0x31,0x80);
 534   1              CmdWrite(0x41,0x00);
 535   1              CmdWrite(0x51,0x00);
 536   1                                                      
 537   1              CmdWrite(0x60,0x00);       //设定X坐标
 538   1              CmdWrite(0x70,0x00);       //设定Y坐标
 539   1              CmdWrite(0xe0,0x00);
 540   1              CmdWrite(0xf0,0xa0);     //简体自型
 541   1              CmdWrite(0xf1,0x0f);
 542   1      }
 543          
 544          
 545          void Page1(void)
 546          {
 547   1       
 548   1              CmdWrite(0x60,0x00);              //设定X坐标
 549   1              CmdWrite(0x70,0x00);              //设定Y坐标   
 550   1          Printstr("请设定值:");
C51 COMPILER V8.02   MYKEY                                                                 05/17/2008 16:44:41 PAGE 10  

 551   1          
 552   1              CmdWrite(0x60,0x00);              //设定X坐标
 553   1              CmdWrite(0x70,0x20);              //设定Y坐标   
 554   1          Printstr("电压幅度:");
 555   1      
 556   1          CmdWrite(0x60,0x4a);
 557   1              CmdWrite(0x70,0x20);
 558   1              Printstr("0");
 559   1      
 560   1              CmdWrite(0x60,0x4b);
 561   1              CmdWrite(0x70,0x20);
 562   1              Printstr(".");
 563   1      
 564   1              CmdWrite(0x60,0x4c);
 565   1              CmdWrite(0x70,0x20);
 566   1              Printstr("1");
 567   1      
 568   1              CmdWrite(0x60,0x4d);
 569   1              CmdWrite(0x70,0x20);
 570   1              Printstr("V");
 571   1      
 572   1          CmdWrite(0x60,0x00);  //设定X坐标
 573   1              CmdWrite(0x70,0x40);  //设定Y坐标
 574   1              Printstr("电流幅度:");
 575   1      
 576   1      
 577   1          CmdWrite(0x60,0x4a);
 578   1              CmdWrite(0x70,0x40);
 579   1              Printstr("1");
 580   1      
 581   1              CmdWrite(0x60,0x4b);
 582   1              CmdWrite(0x70,0x40);
 583   1              Printstr(".");
 584   1      
 585   1              CmdWrite(0x60,0x4c);
 586   1              CmdWrite(0x70,0x40);
 587   1              Printstr("0");
 588   1      
 589   1              CmdWrite(0x60,0x4d);
 590   1              CmdWrite(0x70,0x40);
 591   1              Printstr("m");
 592   1      
 593   1              CmdWrite(0x60,0x4e);
 594   1              CmdWrite(0x70,0x40);
 595   1              Printstr("A");
 596   1      
 597   1      
 598   1      
 599   1      
 600   1              CmdWrite(0x60,0x00);              //设定X坐标
 601   1              CmdWrite(0x70,0x60);              //设定Y坐标   
 602   1              Printstr("频率:");      
 603   1      
 604   1              CmdWrite(0x60,0x46);
 605   1              CmdWrite(0x70,0x60);
 606   1              Printstr("5");
 607   1      
 608   1          CmdWrite(0x60,0x47);
 609   1              CmdWrite(0x70,0x60);
 610   1              Printstr("0");
 611   1      
 612   1              CmdWrite(0x60,0x48);
C51 COMPILER V8.02   MYKEY                                                                 05/17/2008 16:44:41 PAGE 11  

 613   1              CmdWrite(0x70,0x60);
 614   1              Printstr("H");
 615   1                
 616   1              CmdWrite(0x60,0x49);
 617   1              CmdWrite(0x70,0x60);
 618   1              Printstr("z");
 619   1      
 620   1      
 621   1      }
 622           void WriteTextScreen(unsigned char *TxtData)
 623          {
 624   1          
 625   1            unsigned char TempData;
 626   1            unsigned char i=0; 
 627   1                CmdWrite(0x60,0x00);            //设定X坐标
 628   1               CmdWrite(0x70,0x00);             //设定Y坐标   
 629   1            Printstr("请设定值:");
 630   1                     CmdWrite(0x60,0x00);               //设定X坐标
 631   1                 CmdWrite(0x70,0x20);           //设定Y坐标
 632   1                 for(i=0; i<14; i++)
 633   1                          { 
 634   2                              TempData=(*(TxtData+i));
 635   2                              DataWrite(TempData);
 636   2                          }
 637   1                 CmdWrite(0x60,0x00);           //设定X坐标
 638   1                 CmdWrite(0x70,0x40);           //设定Y坐标
 639   1                for(i=14; i<29; i++)
 640   1                          { 
 641   2                          TempData=(*(TxtData+i));
 642   2                              DataWrite(TempData);
 643   2                          }
 644   1                        CmdWrite(0x60,0x00);            //设定X坐标
 645   1                CmdWrite(0x70,0x60);            //设定Y坐标
 646   1             for(i=29; i<39; i++)
 647   1                         { 
 648   2                          TempData=(*(TxtData+i));
 649   2                              DataWrite(TempData);
 650   2                      }  
 651   1      }
 652          void ncstrcpy(unsigned char *dst, const unsigned char *src)
 653          {
 654   1              while (*src!=0x00)
 655   1                 *dst++=*src++;
 656   1      }
 657          void dis_Page2(void)
 658          {
 659   1          sprintf(FLASHDATA,"%3.1f",vp);
 660   1              ncstrcpy(DATALCD,"电压幅度: ");
 661   1          sprintf(DATALCD+10, "%3.1f",vp);
 662   1              sprintf(DATALCD+13, "V");
 663   1      
 664   1              sprintf(FLASHDATA+3,"%3.1f",ip);
 665   1              ncstrcpy(DATALCD+14,"电流幅度: ");
 666   1              sprintf(DATALCD+24, "%3.1f",ip);
 667   1              sprintf(DATALCD+27, "mA");
 668   1      
 669   1              sprintf(FLASHDATA+6,"%2d",freq);
 670   1              ncstrcpy(DATALCD+29,"频率: ");                                                                   
 671   1              sprintf(DATALCD+35, "%2d",freq);
 672   1              sprintf(DATALCD+37, "Hz");
 673   1      
 674   1              WriteTextScreen(DATALCD);                
C51 COMPILER V8.02   MYKEY                                                                 05/17/2008 16:44:41 PAGE 12  

 675   1      } 
 676           
 677           
 678           
 679          
 680          
 681          
 682          
 683          
 684          
 685          
 686          
 687           


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