4x8c.lst

来自「单片机开发板源程序适合初学者 第三部分 LCD_中文」· LST 代码 · 共 426 行 · 第 1/2 页

LST
426
字号
 199   3            wr_lcd (dat,img[j*16+i*2+1]);
 200   3          }
 201   2        }
 202   1        for(j=32;j<64;j++)
 203   1        {
 204   2          for(i=0;i<8;i++)
 205   2          {
 206   3            wr_lcd (comm,0x34);
 207   3            wr_lcd (comm,y+j-32);
 208   3            wr_lcd (comm,x2+i);
 209   3            wr_lcd (comm,0x30);
 210   3            wr_lcd (dat,img[j*16+i*2]);
 211   3            wr_lcd (dat,img[j*16+i*2+1]);
 212   3          }
 213   2        }
 214   1        wr_lcd (comm,0x36);
 215   1      }
 216          /*-------------下半屏显示图形--------------*/
 217          void img_disp1 (uchar code *img)
 218          {
 219   1        uchar i,j;
 220   1        for(j=0;j<32;j++)
 221   1        {
 222   2          for(i=0;i<8;i++)
 223   2          {
 224   3            wr_lcd (comm,0x34);
 225   3            wr_lcd (comm,y+j);
 226   3            wr_lcd (comm,x2+i);
 227   3            wr_lcd (comm,0x30);
 228   3            wr_lcd (dat,img[j*16+i*2]);
 229   3            wr_lcd (dat,img[j*16+i*2+1]);
 230   3          }
 231   2        }
 232   1        wr_lcd (comm,0x36);
 233   1      }
 234          /*--------------显示点阵----------------*/
 235          void lat_disp (uchar data1,uchar data2)
 236          {
 237   1        uchar i,j,k,x;
 238   1        x=x1;
 239   1        for(k=0;k<2;k++)
 240   1        {
 241   2          for(j=0;j<16;j++)
C51 COMPILER V7.06   4X8C                                                                  12/29/2007 13:45:11 PAGE 5   

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

 304   1        for(i=0;i<5;i++)
 305   1        {
 306   2          sclk=1;
 307   2          SomeNOP();
 308   2          sclk=0;
 309   2        }
 310   1        std=0;
 311   1        SomeNOP();
 312   1        sclk=1;
 313   1        SomeNOP();
 314   1        sclk=0;
 315   1        SomeNOP();
 316   1        if(dat_comm)
 317   1          std=1;   //data
 318   1        else
 319   1          std=0;   //command
 320   1        SomeNOP();
 321   1        sclk=1;
 322   1        SomeNOP();
 323   1        sclk=0;
 324   1        SomeNOP();
 325   1        std=0;
 326   1        SomeNOP();
 327   1        sclk=1;
 328   1        SomeNOP();
 329   1        sclk=0;
 330   1        SomeNOP();
 331   1        for(j=0;j<2;j++)
 332   1        {
 333   2          for(i=0;i<4;i++)
 334   2          {
 335   3            a=a<<1;
 336   3            std=CY;
 337   3            SomeNOP();
 338   3            sclk=1;
 339   3            SomeNOP();
 340   3            sclk=0;
 341   3            SomeNOP();
 342   3          }
 343   2          std=0;
 344   2          SomeNOP();
 345   2          for(i=0;i<4;i++)
 346   2          {
 347   3            sclk=1;
 348   3            SomeNOP();
 349   3            sclk=0;
 350   3            SomeNOP();
 351   3          }
 352   2        }
 353   1      }
 354          /*-----------------------------------*/
 355          void delay (uint us)   //delay time
 356          {
 357   1        while(us--);
 358   1      }
 359          void delay1 (uint ms)
 360          {
 361   1        uint i,j;
 362   1        for(i=0;i<ms;i++)
 363   1        for(j=0;j<15;j++)
 364   1        delay(1);
 365   1      }
C51 COMPILER V7.06   4X8C                                                                  12/29/2007 13:45:11 PAGE 7   

 366          /*------------------主程序--------------------*/
 367          void main ()
 368          {
 369   1        SP=0x5f;
 370   1        init_lcd ();
 371   1        while (1)
 372   1        {
 373   2          lat_disp (0x00,0x00);
 374   2          chn_disp (tab1);
 375   2          con_disp (0xff,0xff,0x8c,0x80,2,16);
 376   2          delay1 (8000);
 377   2          clrram();
 378   2          lat_disp (0xcc,0xcc);
 379   2          delay1 (8000);
 380   2          lat_disp (0x00,0x00);
 381   2          chn_disp1 (tab31);
 382   2          img_disp1 (tab32);
 383   2          delay1 (8000);
 384   2          clrram();
 385   2          lat_disp (0xff,0x00);
 386   2          delay1 (8000);
 387   2          img_disp (tab5);
 388   2          delay1 (8000);
 389   2        }
 390   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1173    ----
   CONSTANT SIZE    =   1634    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      34
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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