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

📄 lcd.lst

📁 本程序是基于单片机C8051F020上使用SL811 USB 总线接口实现检测U 盘的功能。插上U 盘
💻 LST
📖 第 1 页 / 共 3 页
字号:
 299   1              LCD_Disp_Word(95,2,WLib_line_6x8,1,6);
 300   1              LCD_Disp_Word(101,2,WLib_8_5x8,1,5);
 301   1              LCD_Disp_Word(106,2,WLib_0_5x8,1,5);
 302   1              LCD_Disp_Word(111,2,WLib_2_5x8,1,5);
 303   1      }
C51 COMPILER V7.06   LCD                                                                   04/22/2005 13:32:48 PAGE 6   

 304          
 305          /***********************************************************************************
 306          * 函数名称:dis_clr;
 307          *
 308          * 函数功能描述: 清屏;
 309          *              
 310          * 输入参数:none;
 311          *
 312          * 返回数据:none;
 313          *
 314          * 注意:    none;
 315          ************************************************************************************/
 316          
 317          void dis_clr(void)
 318          {
 319   1            unsigned char x,y;
 320   1            for(y=0;y<8;y++)
 321   1              {
 322   2                 for(x=0;x<128;x++)                
 323   2                       lcd_wrda(x,y,0x00);
 324   2              }
 325   1      }
 326          
 327          /***********************************************************************************
 328          * 函数名称:dis_full;
 329          *
 330          * 函数功能描述: 写满屏;
 331          *              
 332          * 输入参数:none;
 333          *
 334          * 返回数据:none;
 335          *
 336          * 注意:    none;
 337          ************************************************************************************/
 338          
 339          void dis_full(void)
 340          {
 341   1            unsigned char x,y;
 342   1            for(y=0;y<8;y++)
 343   1              {
 344   2                 for(x=0;x<128;x++)                
 345   2                       lcd_wrda(x,y,0xff);
 346   2              }
 347   1      }
 348          
 349          /***********************************************************************************
 350          * 函数名称:checkbusy;
 351          *
 352          * 函数功能描述: 判断LCD忙等待;
 353          *              
 354          * 输入参数:none;
 355          *
 356          * 返回数据:none;
 357          *
 358          * 注意:    none;
 359          ************************************************************************************/
 360          
 361          void checkbusy(void)
 362          {
 363   1              addr=0x980e;
 364   1      
 365   1              _nop_();_nop_();
C51 COMPILER V7.06   LCD                                                                   04/22/2005 13:32:48 PAGE 7   

 366   1          _nop_();_nop_();
 367   1      
 368   1              do
 369   1              {
 370   2                      tp=addr;
 371   2              }while((*tp&0x80)==0x80);
 372   1      
 373   1              addr=0x180f;
 374   1      }
 375          
 376          /***********************************************************************************
 377          * 函数名称:lcd_wrct;
 378          *
 379          * 函数功能描述: 向LCD写命令;
 380          *              
 381          * 输入参数:none;
 382          *
 383          * 返回数据:none;
 384          *
 385          * 注意:    none;
 386          ************************************************************************************/
 387          
 388          void lcd_wrct(unsigned char dd)
 389          {
 390   1              DISABLE_INTERRUPTS;     
 391   1      
 392   1              addr=0x980c;
 393   1          tp=addr;
 394   1              *tp=dd;
 395   1      
 396   1              addr=0x180c;
 397   1      
 398   1              _nop_();_nop_();
 399   1          _nop_();_nop_();
 400   1      
 401   1              addr=0x180d;
 402   1      
 403   1              ENABLE_INTERRUPTS;
 404   1      }
 405          
 406          /***********************************************************************************
 407          * 函数名称:set_xy;
 408          *
 409          * 函数功能描述: LCD读写位置变换;
 410          *              
 411          * 输入参数:unsigned char类型坐标x,y;
 412          *
 413          * 返回数据:none;
 414          *
 415          * 注意:    none;
 416          ************************************************************************************/
 417          
 418          void set_xy(unsigned char x,unsigned char y)
 419          {
 420   1              DISABLE_INTERRUPTS;
 421   1        
 422   1          checkbusy();
 423   1      
 424   1              y&=0x07;
 425   1              y|=0xB8;
 426   1              lcd_wrct(y);
 427   1      
C51 COMPILER V7.06   LCD                                                                   04/22/2005 13:32:48 PAGE 8   

 428   1          x&=0x3F;
 429   1              x|=0x40;
 430   1              lcd_wrct(x);
 431   1      
 432   1              ENABLE_INTERRUPTS;
 433   1      }
 434          
 435          /***********************************************************************************
 436          * 函数名称:lcd_wrda;
 437          *
 438          * 函数功能描述:向LCD写数据;
 439          *              
 440          * 输入参数:unsigned char类型坐标x,y, unsigned char类型写入数据dd;
 441          *
 442          * 返回数据:none;
 443          *
 444          * 注意:    none;
 445          ************************************************************************************/
 446          
 447          void lcd_wrda(unsigned char x,unsigned char y,unsigned char dd)
 448            {
 449   1          
 450   1              DISABLE_INTERRUPTS;
 451   1              set_xy(x,y);
 452   1          checkbusy();
 453   1          if(x<64)
 454   1               {
 455   2                              addr=0x9805;
 456   2                              tp=0x9805;
 457   2                       }
 458   1          else
 459   1               {
 460   2                              addr=0x9809;
 461   2                              tp=0x9809;
 462   2                       }
 463   1      
 464   1      
 465   1              *tp=dd;
 466   1      
 467   1              ENABLE_INTERRUPTS;
 468   1        }
 469          
 470          /***********************************************************************************
 471          * 函数名称:lcd_rdda;
 472          *
 473          * 函数功能描述:从LCD中读数据;
 474          *              
 475          * 输入参数:unsigned char类型坐标x,y, 
 476          *
 477          * 返回数据:unsigned char类型读出数据;
 478          *
 479          * 注意:    none;
 480          ************************************************************************************/
 481          
 482          unsigned char lcd_rdda(unsigned char x,unsigned char y)
 483          {  
 484   1              unsigned char xdata readdata;
 485   1      
 486   1          set_xy(x,y);
 487   1          checkbusy();
 488   1          if(x<64)
 489   1               {
C51 COMPILER V7.06   LCD                                                                   04/22/2005 13:32:48 PAGE 9   

 490   2                              addr=0x9807;
 491   2      
 492   2                              tp=addr;
 493   2                              addr=0x1805;
 494   2                       }
 495   1          else
 496   1               {
 497   2                              addr=0x980b;
 498   2      
 499   2                              tp=addr;
 500   2                              addr=0x1809;
 501   2                       }
 502   1              readdata=*tp;
 503   1          checkbusy();
 504   1          if(x<64)
 505   1               {
 506   2                              addr=0x9807;
 507   2      
 508   2                              tp=addr;
 509   2                              addr=0x1805;
 510   2                       }
 511   1          else
 512   1               {
 513   2                              addr=0x980b;
 514   2      
 515   2                              tp=addr;
 516   2                              addr=0x1809;
 517   2                       }
 518   1              readdata=*tp;
 519   1              return readdata;
 520   1      }
 521          
 522          /***********************************************************************************
 523          * 函数名称:dis_start;
 524          *
 525          * 函数功能描述:显示开机画面;
 526          *              
 527          * 输入参数:none;
 528          *
 529          * 返回数据:none;
 530          *
 531          * 注意:    none;
 532          ************************************************************************************/
 533          
 534          void dis_start(void)
 535          {
 536   1            unsigned char x,y;
 537   1            for(y=0;y<8;y++)
 538   1              {
 539   2                 for(x=0;x<128;x++)
 540   2                    {
 541   3                       _nop_();_nop_();
 542   3                       lcd_wrda(x,y,0xAA); _nop_();_nop_();
 543   3                       lcd_wrda(x+1,y,0x55);_nop_();_nop_();
 544   3                       x+=1;
 545   3                    }
 546   2              }
 547   1      }
 548          
 549          /***********************************************************************************
 550          * 函数名称:LCD_Draw_dot;
 551          *
C51 COMPILER V7.06   LCD                                                                   04/22/2005 13:32:48 PAGE 10  

 552          * 函数功能描述:画点(x,y);
 553          *              
 554          * 输入参数:BYTE类型坐标x,y; bool类型标识flag;
 555          *
 556          * 返回数据:none;
 557          *
 558          * 注意:    none;
 559          ************************************************************************************/
 560          
 561          void  LCD_Draw_dot(BYTE x,BYTE y,bool flag)
 562          {
 563   1              R_BYTE temp,bit_x;
 564   1      
 565   1              bit_x=7-y%8;
 566   1      
 567   1              y=7-y/8;
 568   1              
 569   1              temp=lcd_rdda(x,y);
 570   1              if (flag)
 571   1                      temp|=(1<<bit_x);
 572   1              else
 573   1                      temp&=~(1<<bit_x);
 574   1      
 575   1              lcd_wrda(x,y,temp);
 576   1      }
 577          
 578          /***********************************************************************************
 579          * 函数名称:LCD_Draw_line;
 580          *
 581          * 函数功能描述:(x1,y1)--(x2,y2)处划线;
 582          *              
 583          * 输入参数:BYTE类型坐标x1,y1,x2,y2; bool类型标识flag;
 584          *
 585          * 返回数据:none;
 586          *
 587          * 注意:    none;
 588          ************************************************************************************/
 589          
 590          bool  LCD_Draw_line(BYTE x1,y1,x2,y2,bool flag)
 591          {
 592   1              R_BYTE i,temp;
 593   1              float data k,b;
 594   1              
 595   1              if ((x1>=MAX_BIT_X)||(x2>=MAX_BIT_X)||(y1>=MAX_BIT_Y)||(y2>=MAX_BIT_Y))
 596   1                      return false;
 597   1      
 598   1              if (y1==y2)                     
 599   1              {
 600   2                      if (x1>x2)
 601   2                      {
 602   3                              temp=x1;
 603   3                              x1=x2;

⌨️ 快捷键说明

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