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

📄 lcd.lst

📁 不带字库12864液晶显示
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   09/16/2008 09:13:02 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN D:\下载文件\LCD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND OBJECT(D:\下载文件\LCD.obj)

line level    source

   1          //*********************************************************
   2          //         简易数字频率计
   3          //*********************************************************
   4          #include <reg52.H>
   5          #include <absacc.h>
   6          #include<intrins.h>
   7          #include<math.h>
   8          
   9          #define lcdDl XBYTE [0xA201]
  10          #define lcdDr XBYTE [0xA301]
  11          #define lcdlCommand XBYTE [0xA200]
  12          #define lcdrCommand XBYTE [0xA300]
  13          
  14          #define strat_yaddr 0x40  //0x40 --0x7f   
  15          #define strat_xaddr 0xb8  //0xb8--0xbf
  16          #define strat_dispaddr 0xc0  //液晶的开始行选择 0xc0-0xff
  17          #define dataleng 16*8  //全屏8*8点阵容量
  18          
  19          sbit RW=P1^6;  //液晶的读写控制信号
  20          sbit P1_4=P1^4;
  21          sbit P1_3=P1^3;
  22          
  23          sbit reset=P1^0;  //FPGA清0,负跳变有效
  24          sbit P1_1=P1^1;  //预置门信号
  25          sbit ad=P1^2;   //方式选择
  26          
  27          #define KEY XBYTE [0xA100]
  28          #define LED1 XBYTE [0xA000]
  29          #define LED2 XBYTE [0xA001]
  30          #define LED3 XBYTE [0xA002]
  31          #define LED4 XBYTE [0xA003]
  32          #define LED5 XBYTE [0xA004]
  33          #define LED6 XBYTE [0xA005]
  34          #define LED7 XBYTE [0xA006]
  35          #define LED8 XBYTE [0xA007]
  36          
  37          #define sxchar  static  unsigned        char    xdata   
  38          #define schar   static  unsigned        char
  39          #define uchar   unsigned        char
  40          #define uint    unsigned        int
  41          #define ulong   unsigned    long
  42          
  43          //*******************************************************************
  44          
  45          //变量说明
  46          sxchar  fpga[32]        _at_    0xa800;                                 //FPGA地址
  47          void    pt0m1(void);                                                            //定时器0工作模式1初始化
  48          void    readkey(void);
  49          void    lcdreset(void);                                                         //LCD显示初始化子程序
  50          void    clear(void);                                //全屏清除
  51          void    clear_hang(uchar hang);
  52          void    leddisp(void);
  53          void lcdlon_off(uchar D);
  54          void setlstartx(uchar D);
  55          void setlstarty(uchar D);
C51 COMPILER V7.50   LCD                                                                   09/16/2008 09:13:02 PAGE 2   

  56          void setlstartline(uchar D);
  57          void lcdron_off(uchar D);
  58          void setrstartx(uchar D);
  59          void setrstarty(uchar D);
  60          void setrstartline(uchar D);
  61          void lcdlwrite(uchar D);
  62          void lcdrwrite(uchar D);
  63           void hanzi_lcd(uchar code      *word_data, uchar index ,uchar len);
  64          uchar code mcbce[]={
  65          
  66           0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,
  67                0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
  68                0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,
  69                0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00,
  70          
  71          0x40,0x42,0x44,0xC8,0x00,0xFC,0x04,0x02,
  72                0x82,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
  73                0x00,0x40,0x20,0x1F,0x20,0x47,0x42,0x41,
  74                0x40,0x7F,0x40,0x42,0x44,0x63,0x20,0x00,
  75          
  76           0x40,0x20,0xF8,0x07,0x04,0xF4,0x14,0x14,
  77                0x14,0xFF,0x14,0x14,0x14,0xF6,0x04,0x00,
  78                0x00,0x00,0xFF,0x00,0x80,0x43,0x45,0x29,
  79                0x19,0x17,0x21,0x21,0x41,0xC3,0x40,0x00,
  80          
  81           0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,
  82                0x22,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,
  83                0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
  84                0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00,
  85          
  86           0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,
  87                0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
  88                0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
  89                0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,
  90          
  91          0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,
  92                0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
  93                0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
  94                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  95          
  96           0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9F,
  97                0x81,0x81,0x81,0x9F,0xA0,0x20,0x20,0x00,
  98                0x00,0x00,0x00,0x7F,0xA0,0x90,0x40,0x43,
  99                0x2C,0x10,0x28,0x26,0x41,0xC0,0x40,0x00,
 100          
 101           0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,
 102                0x40,0xFF,0x40,0x40,0x40,0x60,0x40,0x00,
 103                0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,
 104                0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 105           0x10,0x0C,0x04,0x44,0x8C,0x94,0x35,0x06,
 106                0xF4,0x04,0x04,0x04,0x04,0x14,0x0C,0x00,
 107                0x02,0x82,0x82,0x42,0x42,0x23,0x12,0x0E,
 108                0x03,0x0A,0x12,0x22,0x42,0xC3,0x02,0x00,
 109          
 110           0x02,0xFA,0x02,0x02,0xFF,0x42,0x20,0x50,
 111                0x4C,0x43,0x4C,0x50,0x20,0x60,0x20,0x00,
 112                0x10,0x31,0x11,0x49,0x89,0x7F,0x42,0x5C,
 113                0x40,0x4F,0x60,0x58,0x47,0x60,0x40,0x00,
 114          
 115           0x40,0x48,0x44,0x43,0xF6,0x4A,0x43,0x0A,
 116                0xE4,0x23,0x26,0x2A,0x22,0xF3,0x22,0x00,
 117                0x20,0x10,0x0C,0x03,0xFF,0x02,0x04,0x00,
C51 COMPILER V7.50   LCD                                                                   09/16/2008 09:13:02 PAGE 3   

 118                0xFF,0x49,0x49,0x49,0x49,0xFF,0x00,0x00
 119          };
 120          
 121          uchar code author[]={ 
 122          0x40,0x60,0x5E,0x48,0x48,0xFF,0x48,0x4C,
 123                0x68,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,
 124                0x00,0x00,0x3F,0x01,0x01,0xFF,0x11,0x21,
 125                0x1F,0x00,0x07,0x40,0x80,0x7F,0x00,0x00,
 126          
 127          0x80,0x40,0x20,0xF8,0x87,0x40,0x30,0x0F,
 128                0xF8,0x88,0x88,0xC8,0x88,0x0C,0x08,0x00,
 129                0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,
 130                0xFF,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,
 131          
 132           0x20,0x20,0x24,0x24,0x24,0xA4,0x7F,0x24,
 133                0x34,0x2C,0x24,0xA2,0x20,0x30,0x20,0x00,
 134                0x10,0x08,0x04,0x02,0xFF,0x49,0x49,0x49,
 135                0x49,0x49,0x49,0xFF,0x01,0x00,0x00,0x00
 136          };
 137          
 138          uchar code name[]={
 139           0x08,0x08,0x88,0xA4,0xAC,0xEA,0xAA,0xF9,
 140                0xAA,0xEA,0xAC,0xA4,0x88,0x08,0x08,0x00,
 141                0x88,0xD4,0x96,0xFD,0x96,0xD4,0x88,0x08,
 142                0x88,0xD4,0x96,0xFD,0x96,0xD4,0x88,0x00,
 143          
 144          0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,
 145                0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00,
 146                0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
 147                0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
 148          0x40,0x20,0x1F,0x08,0xF8,0x08,0x0C,0x88,
 149                0x00,0xF8,0x08,0x08,0x08,0xFC,0x08,0x00,
 150                0x81,0x41,0x21,0x19,0x07,0x09,0x31,0x01,
 151                0x01,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00
 152          
 153          };
 154          
 155           
 156          
 157           
 158          void delay_10us(void)
 159          {
 160   1              uchar n;
 161   1              for(n=0;n<5;n++)
 162   1              {}
 163   1      }
 164           
 165           
 166           
 167          
 168          
 169          //*******************************************************************
 170           
 171          
 172           
 173          
 174          void    lcdreset(void)
 175          {
 176   1               lcdlon_off(0x3F);
 177   1               lcdron_off(0x3F);
 178   1               setlstartline(strat_dispaddr);
 179   1               setrstartline(strat_dispaddr);//初始化
C51 COMPILER V7.50   LCD                                                                   09/16/2008 09:13:02 PAGE 4   

 180   1               clear();
 181   1      }
 182          
 183          //////////////////////////////////
 184          void lcdlon_off(uchar D)
 185          {RW=0;
 186   1      lcdlCommand=D;
 187   1      _nop_();
 188   1      }
 189          
 190          void setlstartx(uchar D)
 191          {RW=0;
 192   1      lcdlCommand=D;
 193   1      _nop_();
 194   1      }
 195          
 196          void setlstarty(uchar D)
 197          {
 198   1      RW=0;
 199   1      lcdlCommand=D;
 200   1      _nop_();
 201   1      }
 202          
 203          void setlstartline(uchar D)
 204          {
 205   1              RW=0;
 206   1              lcdlCommand=D;
 207   1              
 208   1              _nop_();
 209   1      }
 210          //////////////////////////////
 211          
 212          void lcdron_off(uchar D)
 213          {RW=0;
 214   1      lcdrCommand=D;
 215   1      _nop_();
 216   1      }
 217          
 218          void setrstartx(uchar D)
 219          {RW=0;
 220   1      lcdrCommand=D;
 221   1      _nop_();
 222   1      }
 223          
 224          void setrstarty(uchar D)
 225          {
 226   1              RW=0;
 227   1              lcdrCommand=D;
 228   1              _nop_();
 229   1      }
 230          
 231          void setrstartline(uchar D)
 232          {       RW=0;
 233   1              lcdrCommand=D;
 234   1              _nop_();
 235   1      }
 236          ///////////////////////////////////
 237          void lcdlwrite(uchar D) 
 238          {RW=0;
 239   1      lcdDl=D;
 240   1      _nop_();
 241   1      }
C51 COMPILER V7.50   LCD                                                                   09/16/2008 09:13:02 PAGE 5   

 242          
 243          void lcdrwrite(uchar D) 
 244          {RW=0;
 245   1      lcdDr=D;
 246   1      _nop_();
 247   1      }
 248          
 249          void clear(void)
 250          {               uchar i;
 251   1                      for(i=1;i<=8;i++)
 252   1                      clear_hang(i);
 253   1      }
 254          
 255          void clear_hang(uchar hang)
 256          {
 257   1              
 258   1              uchar  i,j;
 259   1      
 260   1              for(i=0;i<8;i++)
 261   1              {       
 262   2                      setlstartx(strat_xaddr+hang-1);
 263   2                      for(j=0;j<64;j++)    
 264   2                  {
 265   3                      setlstarty(strat_yaddr+j);
 266   3                      lcdlwrite(0x00);
 267   3                       _nop_();
 268   3                      }
 269   2                      setrstartx(strat_xaddr+hang-1);
 270   2                      for(j=0;j<64;j++)    
 271   2                  {
 272   3                      setrstarty(strat_yaddr+j);
 273   3                      lcdrwrite(0x00);
 274   3                      _nop_();
 275   3                      }
 276   2              }
 277   1                      
 278   1      }
 279          
 280          void  hanzi_lcd(uchar code *word_data, uchar index,uchar len )
 281          {
 282   1              uchar  i,iloop;
 283   1              uchar  j;
 284   1              uchar  k;
 285   1              uchar dex;
 286   1              for(iloop=0;iloop<len;iloop++)
 287   1              {
 288   2                      dex=index+iloop;
 289   2                      if( (dex % 8)< 4)
 290   2                      {       j=(dex % 4)*16;
 291   3                              k=(dex/8)*2;
 292   3                              setlstartx(strat_xaddr+k);
 293   3      
 294   3                              for(i=0;i<16;i++)
 295   3                              {
 296   4                                      setlstarty(strat_yaddr+j+i);
 297   4                                      lcdlwrite(*(word_data+i+iloop*32));
 298   4                              }
 299   3      
 300   3                              setlstartx(strat_xaddr+k+1);
 301   3                              for(i=0;i<16;i++)
 302   3                              {
 303   4                                      setlstarty(strat_yaddr+i+j);
C51 COMPILER V7.50   LCD                                                                   09/16/2008 09:13:02 PAGE 6   

 304   4                                      lcdlwrite(*(word_data+i+16+iloop*32));
 305   4                              }
 306   3                      }
 307   2              
 308   2                      else if ((dex%8)>=4)
 309   2                      {
 310   3                              j=(dex%4)*16;
 311   3                              k=(dex/8)*2;
 312   3                              setrstartx(strat_xaddr+k);
 313   3                              for(i=0;i<16;i++)
 314   3                              {
 315   4                                      setrstarty(strat_yaddr+j+i);
 316   4                                      lcdrwrite(*(word_data+i+iloop*32));
 317   4                              }
 318   3                              setrstartx(strat_xaddr+k+1);
 319   3                              for(i=0;i<16;i++)
 320   3                              {
 321   4                                      setrstarty(strat_yaddr+i+j);
 322   4                                      lcdrwrite(*(word_data+i+16+iloop*32));
 323   4                              }
 324   3                      }
 325   2              }
 326   1      }       
 327          
 328          
 329          
 330          void main()
 331          {
 332   1      
 333   1              lcdreset();
 334   1              clear();                                                                                //LCD显示初始化
 335   1         //  init_mcu();
 336   1              while(1)
 337   1              {
 338   2       
 339   2              hanzi_lcd(mcbce,0,11);    //其中hanzi_lcd是汉字显示函数   第一个参数对应的是字模数组,第二个参数对应的是

⌨️ 快捷键说明

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