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

📄 lcd128x64.lst

📁 一个液晶显示程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 186   1      }
 187          /*----------------显示图形-----------------*/
 188          void img_disp (uchar code *img)
 189          {
 190   1        uchar i,j;
 191   1        for(j=0;j<32;j++)
 192   1        {
 193   2          for(i=0;i<8;i++)
 194   2          {
 195   3            wr_lcd (comm,0x34);
 196   3            wr_lcd (comm,y+j);
 197   3            wr_lcd (comm,x1+i);
 198   3            wr_lcd (comm,0x30);
 199   3            wr_lcd (dat,img[j*16+i*2]);
 200   3            wr_lcd (dat,img[j*16+i*2+1]);
 201   3          }
 202   2        }
 203   1        for(j=32;j<64;j++)
 204   1        {
 205   2          for(i=0;i<8;i++)
 206   2          {
 207   3            wr_lcd (comm,0x34);
 208   3            wr_lcd (comm,y+j-32);
 209   3            wr_lcd (comm,x2+i);
 210   3            wr_lcd (comm,0x30);
 211   3            wr_lcd (dat,img[j*16+i*2]);
 212   3            wr_lcd (dat,img[j*16+i*2+1]);
 213   3          }
 214   2        }
 215   1        wr_lcd (comm,0x36);
 216   1      }
 217          /*-------------下半屏显示图形--------------*/
 218          void img_disp1 (uchar code *img)
 219          {
 220   1        uchar i,j;
 221   1        for(j=0;j<32;j++)
 222   1        {
 223   2          for(i=0;i<8;i++)
 224   2          {
 225   3            wr_lcd (comm,0x34);
 226   3            wr_lcd (comm,y+j);
 227   3            wr_lcd (comm,x2+i);
 228   3            wr_lcd (comm,0x30);
 229   3            wr_lcd (dat,img[j*16+i*2]);
 230   3            wr_lcd (dat,img[j*16+i*2+1]);
 231   3          }
 232   2        }
 233   1        wr_lcd (comm,0x36);
 234   1      }
 235          /*--------------显示点阵----------------*/
 236          void lat_disp (uchar data1,uchar data2)
 237          {
 238   1        uchar i,j,k,x;
 239   1        x=x1;
 240   1        for(k=0;k<2;k++)
 241   1        {
C51 COMPILER V7.50   LCD128X64                                                             06/29/2008 09:39:47 PAGE 5   

 242   2          for(j=0;j<16;j++)
 243   2          {
 244   3            for(i=0;i<8;i++)
 245   3            {
 246   4              wr_lcd (comm,0x34);
 247   4              wr_lcd (comm,y+j*2);
 248   4              wr_lcd (comm,x+i);
 249   4              wr_lcd (comm,0x30);
 250   4              wr_lcd (dat,data1);
 251   4              wr_lcd (dat,data1);
 252   4            }
 253   3            for(i=0;i<8;i++)
 254   3            {
 255   4              wr_lcd (comm,0x34);
 256   4              wr_lcd (comm,y+j*2+1);
 257   4              wr_lcd (comm,x+i);
 258   4              wr_lcd (comm,0x30);
 259   4              wr_lcd (dat,data2);
 260   4              wr_lcd (dat,data2);
 261   4            }
 262   3          }
 263   2          x=x2;
 264   2        }
 265   1        wr_lcd (comm,0x36);
 266   1      }
 267          /*-----------------------------------------------*/
 268          //当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.
 269          void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
 270          {
 271   1        uchar i,j;
 272   1        for(j=0;j<yl;j++)
 273   1        {
 274   2          for(i=0;i<xl;i++)
 275   2          {
 276   3            wr_lcd (comm,0x34);
 277   3            wr_lcd (comm,y0+j);
 278   3            wr_lcd (comm,x0+i);
 279   3            wr_lcd (comm,0x30);
 280   3            wr_lcd (dat,data1);
 281   3            wr_lcd (dat,data2);
 282   3          }
 283   2        }
 284   1        wr_lcd (comm,0x36);
 285   1      }
 286          /*--------------清DDRAM------------------*/
 287          void clrram (void)
 288          {
 289   1        wr_lcd (comm,0x30);
 290   1        wr_lcd (comm,0x01);
 291   1      }
 292          /*---------------------------------------*/
 293          void wr_lcd (uchar dat_comm,uchar content)
 294          {
 295   1        chk_busy ();
 296   1        if(dat_comm)
 297   1         {
 298   2          rs=1;   //data
 299   2          rw=0;   //write
 300   2         }
 301   1        else 
 302   1         {
 303   2          rs=0;   //command
C51 COMPILER V7.50   LCD128X64                                                             06/29/2008 09:39:47 PAGE 6   

 304   2          rw=0;   //write
 305   2         }
 306   1        P0=content;   //output data or comm
 307   1        e=1;
 308   1        Delay(10);
 309   1        e=0;
 310   1      }
 311          
 312          void chk_busy (void)
 313          {
 314   1        P0=0xff;
 315   1        rs=0;
 316   1        rw=1;
 317   1        e =1;
 318   1        while(busy==1);
 319   1        e =0;
 320   1      }
 321          
 322          void Delay1 (uint ms)
 323          {
 324   1        uint i,j;
 325   1        for(i=0;i<ms;i++)
 326   1        for(j=0;j<15;j++)
 327   1        Delay(1);
 328   1      }
 329          
 330          /*------------------LCD初始化-----------------*/
 331          void init_lcd (void)
 332          {
 333   1        rst=1;
 334   1        psb=1;
 335   1        wr_lcd (comm,0x30);  /*30---基本指令动作,8位数据显示*/   
 336   1        wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
 337   1        wr_lcd (comm,0x06);  /*光标的移动方向,AC自动加一*/
 338   1        wr_lcd (comm,0x0c);  /*开显示,关游标*/
 339   1      }
 340          /*------------------主程序--------------------*/
 341          void main ()
 342          {   
 343   1        
 344   1        init_lcd ();
 345   1      
 346   1        while (1)
 347   1        { 
 348   2          lat_disp (0x00,0x00);//清屏
 349   2              chn_disp (tab1);//显示介绍文字
 350   2              Delay1 (8000);
 351   2              
 352   2      
 353   2          con_disp (0xff,0xff,0x80,0x90,8,16);//反白显示某几个字
 354   2              Delay1 (8000);
 355   2              con_disp (0xff,0xff,0x9C,0x90,2,16);//反白显示某几个字
 356   2          Delay1 (8000);
 357   2      
 358   2              clrram();//清存储单元
 359   2          img_disp(tab5);//点阵显示
 360   2              Delay1 (8000);
 361   2      
 362   2        }
 363   1      }


C51 COMPILER V7.50   LCD128X64                                                             06/29/2008 09:39:47 PAGE 7   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1127    ----
   CONSTANT SIZE    =   1601    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10      38
   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 + -