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

📄 lcd.lst

📁 实现三线控制LCD1602
💻 LST
字号:
C51 COMPILER V8.08   LCD                                                                   09/11/2007 23:01:22 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          #define x1    0x80
   6          #define x2    0x88
   7          #define y     0x80
   8          #define comm 0
   9          #define dat   1
  10          
  11          sbit   cs = P2^7;    //液晶显示片选信号即(RS)
  12          sbit sid = P2^6;    //*液晶显示的数据线即(R/W)
  13          sbit sclk = P2^5;    //*液晶显示时钟信号即(E)
  14          sbit gg = P1^5; 
  15          
  16          void wr_lcd (uchar dat_comm,uchar content); //对LCD写数据或指令
  17          void delay (uint us);       //延时子程序
  18          void delay1 (uint ms);
  19          /*以下部分为常用的数据表*/
  20          /*表一: 兰州交通大学毛题字字模代码*/
  21          uchar code tab1[]={
  22          /*-- 宽度x高度=128x64 --*/
  23          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  24          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,
  25          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,
  26          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,
  27          0X00,0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,
  28          0X00,0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,
  29          0X00,0X60,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,
  30          0X00,0X60,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X01,0XE0,
  31          0X00,0X60,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X20,0X00,0X03,0XCE,
  32          0X00,0X71,0XF0,0X00,0X00,0X00,0X03,0X00,0X00,0X01,0XE0,0X00,0X30,0X00,0X83,0XBE,
  33          0X00,0X71,0XF0,0X00,0X00,0X00,0X03,0X80,0X00,0X03,0XE0,0X00,0X30,0X00,0XC7,0X7E,
  34          0X00,0X7B,0XF0,0X00,0X00,0X00,0X03,0XC0,0X00,0X07,0XC0,0X00,0X38,0X00,0XC6,0XCE,
  35          0X00,0X73,0X80,0X00,0X00,0X00,0X03,0XDC,0X00,0X07,0X80,0X00,0X38,0X00,0XEF,0X8E,
  36          0X00,0X77,0X0C,0X00,0X00,0X00,0X01,0XFE,0X00,0X0F,0X80,0X00,0X38,0X00,0X6F,0X8C,
  37          0X00,0XFE,0X1C,0X00,0X00,0X00,0X03,0XFE,0X00,0X1F,0X00,0X00,0X38,0X00,0X6F,0X9C,
  38          0X03,0XFC,0X3C,0X00,0X00,0X20,0X01,0XFE,0X00,0X3B,0X00,0X00,0X38,0X00,0X6F,0XDC,
  39          0X0F,0X7C,0X3C,0X00,0X00,0X60,0X03,0XFC,0X00,0X37,0X80,0X00,0X70,0X00,0X6F,0XD8,
  40          0X1F,0X18,0X7C,0X00,0X00,0X60,0X03,0XF0,0X00,0X73,0X80,0X00,0X70,0X03,0X6E,0XF0,
  41          0X0E,0X38,0XD8,0X00,0X00,0X60,0X07,0XE0,0X01,0XF3,0X80,0X00,0X70,0X01,0X7E,0XF0,
  42          0X02,0X30,0XD8,0X00,0X00,0XE0,0X07,0X40,0X01,0XE7,0X00,0X00,0X70,0X01,0X7C,0XF0,
  43          0X00,0X61,0XB8,0X01,0X00,0XE0,0X1F,0X00,0X00,0XC7,0X80,0X00,0X7C,0X01,0XFD,0XE0,
  44          0X00,0XDB,0XB8,0X01,0X19,0XE0,0X1C,0X00,0X00,0X03,0X80,0X00,0X7C,0X01,0XBF,0X60,
  45          0X01,0XDF,0XB8,0X01,0X99,0XE0,0X00,0X20,0X00,0X07,0X80,0X00,0XFC,0X01,0XDF,0X60,
  46          0X03,0XBF,0XB8,0X01,0X99,0XE0,0X02,0X70,0X00,0X07,0XC0,0X00,0XFC,0X01,0XDE,0XC0,
  47          0X03,0X7F,0XB8,0X01,0X99,0XE0,0X02,0X78,0X00,0X0D,0X80,0X00,0XFC,0X01,0XBE,0XDC,
  48          0X00,0X6F,0X38,0X09,0X99,0X60,0X06,0XF8,0X00,0X1D,0X80,0X01,0XF8,0X00,0XB6,0XFC,
  49          0X00,0XC5,0XB8,0X19,0X9B,0X60,0X07,0XF8,0X00,0X7D,0X80,0X0F,0XE0,0X00,0X67,0XEC,
  50          0X00,0XCF,0XB8,0X19,0XBB,0X60,0X07,0XF0,0X00,0X7D,0X80,0X0F,0XC0,0X00,0X87,0X9C,
  51          0X08,0X8F,0XB0,0X1B,0XBB,0X60,0X0F,0XE0,0X00,0X7D,0X80,0X07,0XC0,0X01,0X8F,0X7C,
  52          0X09,0X8F,0X30,0X1F,0XFF,0X60,0X0F,0X60,0X00,0X7D,0X80,0X03,0XC0,0X01,0X98,0XF8,
  53          0X09,0X9F,0X30,0X1F,0XFF,0XE0,0X1E,0X00,0X0C,0X7F,0X80,0X01,0XC0,0X01,0X33,0XF0,
  54          0X09,0X3E,0X30,0X1F,0XFF,0XE0,0X1C,0XC0,0X0C,0X6F,0X80,0X01,0X80,0X03,0X67,0XC0,
  55          0X1B,0X7C,0X30,0X3B,0XFA,0XE0,0X1C,0XE0,0X0E,0X6F,0X80,0X03,0X80,0X02,0XC6,0X00,
C51 COMPILER V8.08   LCD                                                                   09/11/2007 23:01:22 PAGE 2   

  56          0X1B,0XF8,0X30,0X3B,0XF8,0XE0,0X1C,0XE0,0X06,0X7D,0X80,0X03,0X80,0X07,0XC7,0X00,
  57          0X1B,0XFC,0X30,0X3B,0XB8,0XE0,0X06,0XE0,0X06,0X7D,0X80,0X03,0X80,0X05,0X9F,0X00,
  58          0X1E,0XBC,0X30,0X33,0XB8,0XE0,0X03,0XE0,0X06,0X7D,0X80,0X03,0XC0,0X0F,0X7F,0X00,
  59          0X1E,0X3C,0X30,0X33,0XB8,0XE0,0X03,0XE0,0X04,0X6D,0X80,0X07,0X60,0X0E,0X36,0XC0,
  60          0X1E,0X34,0X38,0X17,0X38,0XE0,0X01,0XC0,0X00,0XED,0X80,0X07,0X70,0X0E,0X0D,0XE0,
  61          0X1E,0X7C,0X38,0X07,0X38,0XE0,0X01,0XC0,0X06,0XED,0X80,0X07,0X70,0X0C,0X0F,0XF0,
  62          0X1D,0XFC,0X38,0X07,0X38,0XE0,0X01,0XC0,0X06,0XED,0X80,0X0E,0X38,0X04,0X0F,0XF0,
  63          0X1D,0XFC,0X38,0X07,0X38,0XE0,0X01,0XC0,0X07,0X4D,0X80,0X0E,0X3F,0X80,0X1F,0XE0,
  64          0X1C,0XFC,0X38,0X0E,0X38,0XE0,0X03,0XE0,0X03,0X0F,0X80,0X1C,0X1F,0X80,0X3F,0XC0,
  65          0X1C,0X7C,0X38,0X0E,0X18,0XE0,0X03,0XE0,0X03,0X0F,0X80,0X1C,0X1F,0X01,0XFE,0X00,
  66          0X1C,0XFE,0X38,0X0E,0X18,0XE0,0X03,0XF0,0X0E,0X1F,0X80,0X18,0X0F,0X01,0XF4,0X00,
  67          0X18,0XFF,0X38,0X0E,0X00,0XE0,0X07,0X70,0X0F,0X03,0X80,0X38,0X0E,0X01,0XE6,0X00,
  68          0X18,0XFF,0X38,0X0E,0X00,0XE0,0X07,0X78,0X07,0XC3,0X00,0X30,0X06,0X00,0XC6,0X00,
  69          0X18,0XFF,0X38,0X0C,0X00,0X60,0X0E,0X38,0X03,0XF0,0X00,0X70,0X00,0X00,0X06,0X00,
  70          0X19,0XFF,0X38,0X0C,0X00,0X60,0X0E,0X3C,0X00,0XF8,0X00,0X60,0X00,0X00,0X06,0X00,
  71          0X19,0XDF,0X38,0X00,0X00,0X20,0X1E,0X3E,0X00,0X7E,0X38,0XC0,0X00,0X00,0X06,0X00,
  72          0X19,0XDE,0X38,0X00,0X00,0X20,0X1C,0X1F,0X00,0X1F,0XF1,0XC0,0X00,0X00,0X0E,0X00,
  73          0X18,0X86,0X38,0X00,0X00,0X00,0X38,0X1F,0X80,0X0F,0XF1,0X80,0X00,0X03,0X0E,0X00,
  74          0X00,0X03,0XB8,0X00,0X00,0X00,0X38,0X1F,0XC0,0X0F,0XE0,0X00,0X00,0X01,0XCE,0X00,
  75          0X00,0X03,0XF8,0X00,0X00,0X00,0X70,0X0F,0X80,0X07,0XC0,0X00,0X00,0X00,0XFE,0X00,
  76          0X00,0X00,0XF8,0X00,0X00,0X00,0XE0,0X04,0X00,0X03,0X80,0X00,0X00,0X00,0X7E,0X00,
  77          0X00,0X00,0X78,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3E,0X00,
  78          0X00,0X00,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1E,0X00,
  79          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1C,0X00,
  80          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,
  81          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  82          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  83          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  84          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  85          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  86          0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  87          };
  88          unsigned char tab2[]={"兰州交通大学"};
  89          
  90          /*------------------初始化-----------------*/
  91          void init_lcd (void)
  92          {
  93   1      wr_lcd (comm,0x30); /*30---基本指令动作*/
  94   1      wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
  95   1      delay (100);
  96   1      wr_lcd (comm,0x06); /*光标的移动方向*/
  97   1      wr_lcd (comm,0x0c); /*开显示,关游标*/
  98   1      wr_lcd (comm,0x14);
  99   1      }
 100          /*---------------显示汉字或字符----------------*/
 101          void Chinese_disp0 (uchar code *chn)    /*此程序为整屏显示,所提供的数据必须是完整的一屏数据否则会出现乱码
             -*/
 102          {                                 /*空格也应该提供数据*/
 103   1      uchar i,j;
 104   1      wr_lcd (comm,0x30);                  /*30---基本指令动作*/
 105   1      wr_lcd (comm,0x80);
 106   1         for(j=0;j<4;j++)
 107   1         {for (i=0;i<16;i++)
 108   2          wr_lcd (dat,chn[j*16+i]);
 109   2         }
 110   1      }
 111          
 112          /*-------------显示汉字或字符-----Haoyf----*/
 113          void Chinese_disp1(uchar code *chn)    /*单行显示数据*/
 114          { int i;           /*30---基本指令动作*/
 115   1      wr_lcd (comm,0x30);        /*显示位置为第一行*/
 116   1      wr_lcd (comm,0x80);        /*显示16个字符*/
C51 COMPILER V8.08   LCD                                                                   09/11/2007 23:01:22 PAGE 3   

 117   1      for (i=0;i<16;i++)
 118   1         { wr_lcd (dat,chn[i]);       /*写显示数据*/
 119   2         }
 120   1      }
 121          /*-------------显示汉字或字符-----Haoyf----*/
 122          void Chinese_disp2(uchar *chn)    /*单行显示数据*/
 123          { int i;           /*30---基本指令动作*/
 124   1      wr_lcd (comm,0x30);        /*显示位置为第一行*/
 125   1      wr_lcd (comm,0x80);        /*显示16个字符*/
 126   1      for (i=0;chn[i]!='\0';i++)
 127   1          wr_lcd (dat,chn[i]);       /*写显示数据*/ 
 128   1      }
 129          /*----------在特定的位置显示数据----Haoyf---*/
 130          void Chn_dat_disp(uchar address,uchar High,uchar Low ) /*adress要显示的地址,data为要显示汉字的内码*/
 131          {             /*第一行地址为0x80-0x87;第二行地址为0x90-0x97;第三行地址为0x88-0x8f;第四行地址为0x98-0x9f;*/
 132   1      wr_lcd(comm,address);
 133   1      wr_lcd(dat,High);
 134   1      wr_lcd(dat,Low);
 135   1      }
 136          /*-------------图片显示-----------------*/
 137          void img_disp (uchar code *img)     /*通过字模提取工具提取128*64图像的字模*/
 138          {
 139   1      uchar i,j;
 140   1      for(j=0;j<32;j++)
 141   1      {
 142   2          for(i=0;i<8;i++)
 143   2          {
 144   3            wr_lcd (comm,0x34);
 145   3            wr_lcd (comm,y+j);
 146   3            wr_lcd (comm,x1+i);
 147   3            wr_lcd (comm,0x30);
 148   3            wr_lcd (dat,img[j*16+i*2]);
 149   3            wr_lcd (dat,img[j*16+i*2+1]);
 150   3          }
 151   2      }
 152   1      for(j=32;j<64;j++)
 153   1      {
 154   2          for(i=0;i<8;i++)
 155   2          {
 156   3            wr_lcd (comm,0x34);
 157   3            wr_lcd (comm,y+j-32);
 158   3            wr_lcd (comm,x2+i);
 159   3            wr_lcd (comm,0x30);
 160   3            wr_lcd (dat,img[j*16+i*2]);
 161   3            wr_lcd (dat,img[j*16+i*2+1]);
 162   3          }
 163   2      }
 164   1      wr_lcd (comm,0x36);                
 165   1      }
 166          /*--------------清除RAM------------------*/
 167          void clrram (void)
 168          {
 169   1      wr_lcd (comm,0x30);
 170   1      wr_lcd (comm,0x01);
 171   1      delay (180);
 172   1      }
 173          /*------------对LCD写数据或指令 -----------------------*/
 174          void wr_lcd (uchar dat_comm,uchar content)
 175          {
 176   1      uchar a,i,j;
 177   1      delay (50);
 178   1      a=content;
C51 COMPILER V8.08   LCD                                                                   09/11/2007 23:01:22 PAGE 4   

 179   1      cs=1;
 180   1      sclk=0;
 181   1      sid=1;
 182   1      for(i=0;i<5;i++)
 183   1      {
 184   2          sclk=1;
 185   2          sclk=0;
 186   2      }
 187   1      sid=0;
 188   1      sclk=1;
 189   1      sclk=0;
 190   1      if(dat_comm)
 191   1          sid=1;                    //数据为要现实的data
 192   1      else
 193   1          sid=0;                    //所送出的数据为命令command
 194   1      sclk=1;
 195   1      sclk=0;
 196   1      sid=0;
 197   1      sclk=1;
 198   1      sclk=0;
 199   1      for(j=0;j<2;j++)
 200   1      {
 201   2          for(i=0;i<4;i++)
 202   2          {
 203   3            a=a<<1;
 204   3            sid=CY;
 205   3            sclk=1;
 206   3            sclk=0;
 207   3          }
 208   2          sid=0;
 209   2          for(i=0;i<4;i++)
 210   2          {
 211   3            sclk=1;
 212   3            sclk=0;
 213   3          }
 214   2      }
 215   1      }
 216          /*延时子程序*/
 217          void delay (uint us)   
 218          {
 219   1      while(us--);
 220   1      }
 221          /*延时子程序*/
 222          void delay1 (uint ms)
 223          {
 224   1      uint i,j;
 225   1      for(i=0;i<ms;i++)
 226   1      for(j=0;j<15;j++)
 227   1      delay(1);
 228   1      }
 229          
 230          /*液晶显示主函数*/
 231          
 232          main()
 233          {
 234   1      SP=0x5f;
 235   1      init_lcd ();
 236   1      clrram();
 237   1      img_disp(tab1);
 238   1      delay(2000);
 239   1      clrram();
 240   1      Chinese_disp2(tab2);
C51 COMPILER V8.08   LCD                                                                   09/11/2007 23:01:22 PAGE 5   

 241   1      
 242   1      while(1);
 243   1      }


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