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

📄 lcd.lst

📁 12864的液晶驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 218   1              {
 219   2                x=0x88;
 220   2                Line=31-Line;
 221   2              }
 222   1        if((y_loc>=32)&&(y_loc<48))
 223   1              {
 224   2                x=0x90;
 225   2                Line=63-Line;
 226   2              }
 227   1        if(y_loc>=48)
 228   1              {
 229   2                x=0x80;
 230   2                Line=63-Line;
 231   2              }
 232   1       
 233   1        wr_lcd (comm,0x34);
 234   1        wr_lcd (comm,y+Line);   
 235   1        wr_lcd (comm,x+Column);       
 236   1        wr_lcd (comm,0x30);
 237   1        wr_lcd (dat,0xaa);   
 238   1        wr_lcd (dat,0xbb);
 239   1        wr_lcd (comm,0x36);
 240   1        wr_lcd (comm,0x34);
C51 COMPILER V8.02   LCD                                                                   05/16/2009 13:41:49 PAGE 5   

 241   1        wr_lcd (comm,y+Line);   
 242   1        wr_lcd (comm,x+Column);
 243   1        delay(200);
 244   1        s=Read_Data();        //虚读
 245   1        delay(500);
 246   1        temp1=Read_Data();   //实读
 247   1        delay(500);
 248   1        temp2=Read_Data();
 249   1        delay(500);
 250   1      
 251   1        ori_data=(temp1<<8)|temp2;
 252   1        delay(200);  
 253   1        ori_data=0x0000;      
 254   1        move = x_loc%16;  
 255   1        dot_data = 0x8000>>move;
 256   1        delay(500);
 257   1        dot_data = dot_data | ori_data;
 258   1        delay(200);
 259   1        value1 = dot_data/256;
 260   1        value2 = dot_data%256;
 261   1        delay(200);
 262   1        
 263   1        wr_lcd (comm,0x34);
 264   1        wr_lcd (comm,n+Line);  
 265   1        wr_lcd (comm,x+Column);
 266   1        wr_lcd (comm,0x30);
 267   1        wr_lcd (dat,value1);
 268   1        wr_lcd (dat,value2);
 269   1        wr_lcd (comm,0x36);
 270   1        delay(200);
 271   1      
 272   1      }
 273          
 274          
 275          
 276          /*--------------清DDRAM------------------*/
 277          void clrram (void)
 278          {
 279   1        wr_lcd (comm,0x30);
 280   1        wr_lcd (comm,0x01);
 281   1        delay (180);
 282   1      }
 283          
 284          
 285          /*---------------------------------------*/
 286          void wr_lcd (uchar dat_comm,uchar content)
 287          {
 288   1        uchar a,i,j;
 289   1        delay (50);   //延时,等待内部动作完成
 290   1        a=content;
 291   1        cs=1;
 292   1        sclk=0;
 293   1        std=1;
 294   1        for(i=0;i<5;i++)      //写入5个1,作为启动位
 295   1        {
 296   2          sclk=1;
 297   2          sclk=0;
 298   2        }
 299   1        std=0;                  
 300   1        sclk=1;
 301   1        sclk=0;
 302   1        if(dat_comm)   //判断写数据还是写命令
C51 COMPILER V8.02   LCD                                                                   05/16/2009 13:41:49 PAGE 6   

 303   1          std=1;   //data
 304   1        else
 305   1          std=0;   //command
 306   1        sclk=1;
 307   1        sclk=0;
 308   1        std=0;        //写入1个0
 309   1        sclk=1;
 310   1        sclk=0;
 311   1        for(j=0;j<2;j++)       //分别写入高四位和低四位
 312   1        {
 313   2          for(i=0;i<4;i++)
 314   2          {
 315   3            a=a<<1;
 316   3            std=CY;
 317   3            sclk=1;
 318   3            sclk=0;
 319   3          }
 320   2          std=0;      //写入4个0
 321   2          for(i=0;i<4;i++)
 322   2          {
 323   3            sclk=1;
 324   3            sclk=0;
 325   3          }
 326   2        }
 327   1      }
 328          
 329          /*-----------------读出值--------------------*/
 330          Read_Data()
 331          {
 332   1        uchar b1=0,b2=0;
 333   1        uchar result,i,j;
 334   1        cs=1;
 335   1        sclk=0;
 336   1        std=1;
 337   1        for(i=0;i<5;i++)      //写入5个1,作为启动位
 338   1        {
 339   2          sclk=1;
 340   2          sclk=0;
 341   2        }
 342   1        std=1;                  
 343   1        sclk=1;
 344   1        sclk=0;
 345   1       
 346   1        std=1; 
 347   1        sclk=1;
 348   1        sclk=0;
 349   1      
 350   1        std=0;        //写入1个0
 351   1        sclk=1;
 352   1        sclk=0;
 353   1      
 354   1        P0MDOUT=0xfd;
 355   1               
 356   1        for(j=0;j<8;j++)   //分别读出高四位和低四位
 357   1              {
 358   2                b1=b1<<1;
 359   2                sclk=1;
 360   2            sclk=0;
 361   2                if(std)
 362   2                   b1++;
 363   2              }
 364   1        for(i=0;i<8;i++)
C51 COMPILER V8.02   LCD                                                                   05/16/2009 13:41:49 PAGE 7   

 365   1              {
 366   2                b2=b2<<1;
 367   2                sclk=1;
 368   2            sclk=0;
 369   2                if(std)
 370   2                   b2++;
 371   2              }
 372   1        b2=b2>>4;
 373   1        result=(0xf0&&b1)|(0x0f&&b2);
 374   1        P0MDOUT=0xff;  
 375   1          return(result); 
 376   1      
 377   1        /*    for(j=0;j<2;j++)
 378   1              {
 379   1                      for(i=0;i<4;i++)
 380   1                      {
 381   1                              b=b|(uchar)std;//b:读回的状态值
 382   1                              if(j==1&&i==3);
 383   1                              else b=b<<1;
 384   1                              
 385   1                              sclk=1;        //sclk=1;
 386   1                              sclk=0;        //sclk=0;
 387   1                      }
 388   1                      for(i=0;i<4;i++)
 389   1                      {
 390   1                              sclk=1;      //sclk=1;
 391   1                              sclk=0;      //sclk=0;
 392   1                      }
 393   1              } 
 394   1                 return(b);  */
 395   1      
 396   1      
 397   1              cs=0; 
 398   1      } 
 399          /*-----------------------------------*/
 400          void delay (uint us)   //delay time
 401          {
 402   1              while(us--);
 403   1      }
 404          
 405          
 406          /*------------------主程序--------------------*/
 407          void main ()
 408          {
 409   1        SP=0x5f; 
 410   1        SysInitial();
 411   1        init_lcd ();
 412   1        while (1)
 413   1        {
 414   2              clrram();
 415   2              delay(8000);
 416   2              lat_disp (0x00,0x00);
 417   2              delay(8000);
 418   2              img_disp (tab6);
 419   2          delay(8000);
 420   2         Locat_Dot(6,36);
 421   2         delay(8000);
 422   2         Locat_Dot(6,34);
 423   2         delay(8000);
 424   2         Locat_Dot(6,32);
 425   2         delay(8000);
 426   2        }
C51 COMPILER V8.02   LCD                                                                   05/16/2009 13:41:49 PAGE 8   

 427   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1183    ----
   CONSTANT SIZE    =   1024    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      31
   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 + -