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

📄 lcd.lst

📁 CF8051F040开发板的 flash_gb程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 309   1         LCD_Disp_Word(111,2,WLib_2_5x8,1,5);
 310   1      }
 311          
 312          /***********************************************************************************
 313          * 函数名称:dis_clr;
 314          *
 315          * 函数功能描述: 清屏;
 316          *              
 317          * 输入参数:none;
 318          *
 319          * 返回数据:none;
 320          *
 321          * 注意:    none;
 322          ************************************************************************************/
 323          
 324          void dis_clr(void)
 325          {
 326   1            unsigned char x,y;
 327   1            for(y=0;y<8;y++)
 328   1              {
 329   2                 for(x=0;x<128;x++)                
 330   2                       lcd_wrda(x,y,0x00);
 331   2              }
 332   1      }
 333          
 334          /***********************************************************************************
 335          * 函数名称:dis_full;
 336          *
 337          * 函数功能描述: 写满屏;
 338          *              
 339          * 输入参数:none;
 340          *
 341          * 返回数据:none;
 342          *
 343          * 注意:    none;
 344          ************************************************************************************/
 345          
 346          void dis_full(void)
 347          {
 348   1            unsigned char x,y;
 349   1            for(y=0;y<8;y++)
 350   1              {
 351   2                 for(x=0;x<128;x++)                
 352   2                       lcd_wrda(x,y,0xff);
 353   2              }
 354   1      }
 355          
 356          /***********************************************************************************
 357          * 函数名称:checkbusy;
 358          *
 359          * 函数功能描述: 判断LCD忙等待;
 360          *              
 361          * 输入参数:none;
 362          *
 363          * 返回数据:none;
 364          *
 365          * 注意:    none;
C51 COMPILER V7.02b   LCD                                                                  01/03/2006 09:50:07 PAGE 7   

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

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

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

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

 614   2            for (i=x1;i<x2+1; i++)
 615   2               LCD_Draw_dot(i,y1,flag);
 616   2         }
 617   1      
 618   1         else if (x1==x2)        
 619   1         {
 620   2            if (y1>y2)
 621   2            {
 622   3               temp=y1;
 623   3               y1=y2;
 624   3               y2=temp;
 625   3            }

⌨️ 快捷键说明

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