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

📄 parallel port.lst

📁 C51_LCD 12864_图形液晶 并口模式源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 244   1          _nop_();
 245   1          _nop_(); 
 246   1          P0 = cmd;
 247   1          delayNOP();
 248   1          LCD_EN = 1;
 249   1          delayNOP();
 250   1          LCD_EN = 0;  
 251   1      }
 252          /*******************************************************************/
 253          /*                                                                 */
 254          /*写显示数据到LCD                                                  */
 255          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
 256          /*                                                                 */
 257          /*******************************************************************/
 258          void lcd_wdat(uchar dat)
 259          {                          
 260   1         while(lcd_busy());
 261   1          LCD_RS = 1;
 262   1          LCD_RW = 0;
 263   1          LCD_EN = 0;
 264   1          P0 = dat;
 265   1          delayNOP();
 266   1          LCD_EN = 1;
 267   1          delayNOP();
 268   1          LCD_EN = 0; 
 269   1      }
 270          /*******************************************************************/
 271          /*                                                                 */
 272          /*  LCD初始化设定                                                  */
 273          /*                                                                 */
 274          /*******************************************************************/
 275          void lcd_init()
 276          { 
 277   1          LCD_PSB = 1;         //并口方式
 278   1          
 279   1              LCD_RST = 0;             //液晶复位
 280   1          delay(3);                   
 281   1          LCD_RST = 1;      
 282   1          delay(3);
 283   1          
 284   1          lcd_wcmd(0x34);      //扩充指令操作
 285   1          delay(5);
 286   1          lcd_wcmd(0x30);      //基本指令操作
 287   1          delay(5);
 288   1          lcd_wcmd(0x0C);      //显示开,关光标
 289   1          delay(5);
 290   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 291   1          delay(5);
 292   1      }
 293          
 294          /*********************************************************/
 295          /*                                                       */
 296          /* 设定显示位置                                          */
 297          /*                                                       */
 298          /*********************************************************/
 299          void lcd_pos(uchar X,uchar Y)
 300          {                          
 301   1         uchar  pos;
 302   1         if (X==1)
 303   1           {X=0x80;}
C51 COMPILER V7.08   PARALLEL_PORT                                                         12/19/2006 21:06:07 PAGE 6   

 304   1         else if (X==2)
 305   1           {X=0x90;}
 306   1         else if (X==3)
 307   1           {X=0x88;}
 308   1         else if (X==4)
 309   1           {X=0x98;}
 310   1         pos = X+Y ; 
 311   1       
 312   1         lcd_wcmd(pos);     //显示地址
 313   1      }
 314          
 315          /*********************************************************
 316          *                                                        *
 317          * 闪烁函数                                               *
 318          *                                                        *
 319          *********************************************************/
 320          void lcdflag() 
 321          {
 322   1         lcd_wcmd(0x08);   
 323   1         delay(400);
 324   1         lcd_wcmd(0x0c);   
 325   1         delay(400);
 326   1         lcd_wcmd(0x08);   
 327   1         delay(400);
 328   1         lcd_wcmd(0x0c);   
 329   1         delay(400);
 330   1         lcd_wcmd(0x08);   
 331   1         delay(200); 
 332   1         lcd_wcmd(0x0c);   
 333   1         delay(5);
 334   1         lcd_wcmd(0x01);   
 335   1         delay(5);
 336   1      }
 337          
 338          /*********************************************************
 339          *                                                        *
 340          * 图形显示                                               *
 341          *                                                        *
 342          *********************************************************/
 343          void photodisplay(uchar *bmp)   
 344          { 
 345   1        uchar i,j;
 346   1      
 347   1        lcd_wcmd(0x34);        //写数据时,关闭图形显示
 348   1      
 349   1        for(i=0;i<32;i++)
 350   1        {
 351   2          lcd_wcmd(0x80+i);    //先写入水平坐标值
 352   2          lcd_wcmd(0x80);      //写入垂直坐标值
 353   2          for(j=0;j<16;j++)   //再写入两个8位元的数据    
 354   2          lcd_wdat(*bmp++);     
 355   2          delay1(1);
 356   2        }
 357   1      
 358   1        for(i=0;i<32;i++)
 359   1        { 
 360   2          lcd_wcmd(0x80+i);
 361   2          lcd_wcmd(0x88);
 362   2          for(j=0;j<16;j++)         
 363   2              lcd_wdat(*bmp++);    
 364   2              delay1(1);
 365   2        }
C51 COMPILER V7.08   PARALLEL_PORT                                                         12/19/2006 21:06:07 PAGE 7   

 366   1        lcd_wcmd(0x36);       //写完数据,开图形显示 
 367   1      }
 368          
 369          /*********************************************************
 370          *                                                        *
 371          * 清屏函数                                               *
 372          *                                                        *
 373          *********************************************************/
 374          void  clr_screen()
 375          {
 376   1         lcd_wcmd(0x34);      //扩充指令操作
 377   1         delay(5);    
 378   1         lcd_wcmd(0x30);      //基本指令操作
 379   1         delay(5); 
 380   1         lcd_wcmd(0x01);      //清屏 
 381   1         delay(5);     
 382   1      }
 383          
 384          /**********************************************************
 385          
 386          ; 显示字符表代码
 387          
 388          **********************************************************/
 389          void  bytecode()
 390          {
 391   1         uchar  s;
 392   1      
 393   1         clr_screen();          //清屏
 394   1          
 395   1         lcd_wcmd(0x80);        //设置显示位置为第一行  
 396   1         for(s=0;s<16;s++)
 397   1         {
 398   2           lcd_wdat(0x30+s); 
 399   2         }
 400   1      
 401   1         lcd_wcmd(0x90);        //设置显示位置为第二行 
 402   1         for(s=0;s<16;s++)
 403   1         {
 404   2           lcd_wdat(0x40+s); 
 405   2         }
 406   1      
 407   1         lcd_wcmd(0x88);        //设置显示位置为第三行  
 408   1         for(s=0;s<16;s++)
 409   1         {
 410   2           lcd_wdat(0x50+s); 
 411   2         }
 412   1      
 413   1         lcd_wcmd(0x98);       //设置显示位置为第四行   
 414   1         for(s=0;s<16;s++)
 415   1         {
 416   2           lcd_wdat(0x60+s); 
 417   2         }
 418   1      }
 419          
 420          /*********************************************************
 421          *                                                        *
 422          * 主函数                                                 *
 423          *                                                        *
 424          *********************************************************/
 425          void main()
 426          {
 427   1         uchar i;
C51 COMPILER V7.08   PARALLEL_PORT                                                         12/19/2006 21:06:07 PAGE 8   

 428   1         delay(100);                 //上电,等待稳定
 429   1         lcd_init();                 //初始化LCD
 430   1         while(1)
 431   1         {
 432   2           lcd_pos(1,0);             //设置显示位置为第一行
 433   2           for(i=0;i<16;i++)
 434   2           {
 435   3             lcd_wdat(DIS1[i]);
 436   3             delay(30);
 437   3           }
 438   2      
 439   2           lcd_pos(2,0);             //设置显示位置为第二行
 440   2           for(i=0;i<16;i++)
 441   2           {
 442   3             lcd_wdat(DIS2[i]);
 443   3             delay(30);
 444   3           }
 445   2      
 446   2           lcd_pos(3,0);             //设置显示位置为第三行
 447   2           for(i=0;i<16;i++)
 448   2           {
 449   3             lcd_wdat(DIS3[i]);
 450   3             delay(30);
 451   3           }
 452   2      
 453   2           lcd_pos(4,0);             //设置显示位置为第四行
 454   2           for(i=0;i<16;i++)
 455   2           {
 456   3             lcd_wdat(DIS4[i]);
 457   3             delay(30);
 458   3           }
 459   2           delay(1000);
 460   2           lcdflag();
 461   2      
 462   2           clr_screen();             //清屏        
 463   2           photodisplay(Photo1);     //显示图片1
 464   2           delay(2000); 
 465   2         
 466   2           clr_screen();             //清屏
 467   2           photodisplay(Photo2);     //显示图片2
 468   2           delay(2000);
 469   2      
 470   2           bytecode();               //显示字符表代码
 471   2           delay(2000);
 472   2           clr_screen();  
 473   2         }
 474   1      }
 475          
 476          /*********************************************************/
 477          
 478          
 479          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    715    ----
   CONSTANT SIZE    =   2116    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
C51 COMPILER V7.08   PARALLEL_PORT                                                         12/19/2006 21:06:07 PAGE 9   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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