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

📄 lcd.lst

📁 flash_download.C8051中的应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
 300   1         LCD_Disp_Word(85,2,WLib_9_5x8,1,5);
 301   1         LCD_Disp_Word(90,2,WLib_7_5x8,1,5);
 302   1         LCD_Disp_Word(95,2,WLib_line_6x8,1,6);
 303   1         LCD_Disp_Word(101,2,WLib_8_5x8,1,5);
C51 COMPILER V7.02b   LCD                                                                  03/06/2006 15:41:23 PAGE 6   

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

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

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

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

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

⌨️ 快捷键说明

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