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

📄 lcd12864.lst

📁 0-30v
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   LCD12864                                                              11/20/2008 22:02:48 PAGE 1   


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

line level    source

   1          #include"reg52.h"
   2          #include"IOCfg.c"
   3          #include"Config.h"
   4          #include"LCD12864.h"
   5          #include"delay.h"
   6          
   7          
   8          /*********************************************************************************
   9          
  10          管脚号  管脚名称        电平    管脚功能描述
  11          
  12          1           VSS                 0V              电源地
  13          2               VCC                     +5V             电源正
  14          3               V0                      -               对比度(亮度)调整
  15          4               RS(CS)         H/L             RS="H",表示DB7--DB0为显示数据
  16          4               RS(CS)         H/L             RS="L",表示DB7--DB0为显示指令数据
  17          5               R/W(SID)        H/L             R/W="H",E="H",数据被读到DB7--DB0
  18          5               R/W(SID)        H/L             R/W="L",E="H→L", DB7--DB0的数据被写到IR或DR
  19          6               E(SCLK)         H/L             使能信号
  20          7               DB0                     H/L             三态数据线
  21          8               DB1                     H/L             三态数据线
  22          9               DB2                     H/L             三态数据线
  23          10              DB3                     H/L             三态数据线
  24          11              DB4                     H/L             三态数据线
  25          12              DB5                     H/L             三态数据线
  26          13              DB6                     H/L             三态数据线
  27          14              DB7                     H/L             三态数据线
  28          15              PSB                     H/L             H:8位或4位并口方式,L:串口方式(见注释1)
  29          16              NC                      -               空脚
  30          17              /RESET          H/L             复位端,低电平有效(见注释2)
  31          18              VOUT            -               LCD驱动电压输出端
  32          19              A                       VDD             背光源正端,要加限流电阻(+5V)(见注释3)
  33          20              K                       VSS             背光源负端(见注释3)
  34          ------------------------------------------------------------------------------
  35            点阵和字符重合显示的时候不会覆盖,要先清除 
  36                    字符和点阵重合显示的时候,要分别清除掉  
  37          
  38                  1.上电时先复位端口  
  39          
  40                  2.设置屏内部  
  41          
  42                  3.显示点阵时设置点阵模式,显示字符时设置字符模式,图像有重合时要清掉先前送的不同类显示数据
  43          
  44                  4.最少要零点几秒就刷新整屏数据,以免有干扰出现数据乱码显示 
  45          
  46                  5.屏幕的刷新频率不能太高,10HZ时屏幕没出现干扰线或噪点    
  47          
  48                  6.12864屏在读数据的时候要空读一次才能正确读出数据  
  49          
  50                  7.想用8*16的点阵显示,程序还不太复杂,单独操作每个点就以后再弄,先弄到能正常显示参数和菜单  
  51          
  52          
  53          
  54          ************************************************************************************/
  55          
C51 COMPILER V8.08   LCD12864                                                              11/20/2008 22:02:48 PAGE 2   

  56          //----------------------------------------------------------------------
  57          //定义MCU与LCD的接口
  58          
  59             
  60          
  61          //----------------------------------------------------------------------
  62          
  63          
  64          
  65          
  66          
  67          /******************************************************************
  68          //      函数名:lcd_delayms
  69          //      功  能:精确延时1mS
  70          //      参  数:输入延时毫秒数(0-65535) 
  71          //      返回值:无
  72            晶振频率:22.1184MHz  ,循环次数是229  ;
  73          ******************************************************************/
  74          void lcd_delayms(unsigned int i)        //使用22.1184M时的延时循环次数  
  75          {
  76   1              unsigned int j;
  77   1      
  78   1              for(;i!=0;i--)
  79   1              {
  80   2                      for(j = 0; j < 229; j++);
  81   2              }
  82   1      }
  83          
  84          /************************************************************************************
  85          
  86                             查忙函数    
  87                  //RS=0;RW=1;wait=0闲;wait!=0忙                           
  88          ************************************************************************************/
  89          void busy(void)
  90          {
  91   1          uchar wait;
  92   1          RS = 0;
  93   1          RW = 1;
  94   1          E = 1;
  95   1          for(;;)
  96   1          {
  97   2              wait = DB;
  98   2              wait &= 0x80;
  99   2              if(wait == 0)break;
 100   2          }
 101   1          E = 0;
 102   1              DB = 0XFF;
 103   1      }
 104          
 105          /************************************************************************************
 106          
 107                             写指令函数   
 108                                             //RS=0;RW=0;E下降沿      
 109          ************************************************************************************/
 110           void w_code(uchar c)
 111          {
 112   1          busy();
 113   1          RS=0;
 114   1          RW=0;
 115   1          DB=c;
 116   1          E=1;
 117   1          E=0;
C51 COMPILER V8.08   LCD12864                                                              11/20/2008 22:02:48 PAGE 3   

 118   1          DB=0xff;
 119   1      }
 120          /************************************************************************************
 121          
 122                             写数据函数   
 123                                            //RS=1;RW=0;E下降沿      
 124                                             
 125          ************************************************************************************/
 126          void w_data(uchar d)
 127          {
 128   1          busy();
 129   1          RS = 1;
 130   1          RW = 0;
 131   1          DB = d;
 132   1          E = 1;
 133   1          E = 0;
 134   1          DB = 0xff;
 135   1      }
 136          
 137          /************************************************************************************
 138                             指定地址写数据函数  
 139                                             x:
 140                                             y:
 141                                             i: 数据        
 142          ************************************************************************************/
 143          void w_data_addr(uchar x,uchar y,uchar i)
 144          {
 145   1              w_code(y);
 146   1              w_code(x);
 147   1              w_data(i);
 148   1      }
 149          
 150          /************************************************************************************
 151          
 152                                   读数据函数 
 153                                  12864屏在读数据的时候要空读一次才能正确读出数据  
 154                                       
 155          ************************************************************************************/
 156          uchar r_data(void)//RS=1;RW=1;E下降沿
 157          {
 158   1          uchar rd_lcd;
 159   1          busy();
 160   1          RS=1;
 161   1          RW=1;
 162   1          E=1;
 163   1          E=0;
 164   1      
 165   1              busy();
 166   1          RS=1;
 167   1          RW=1;
 168   1          E=1;
 169   1          rd_lcd=DB;
 170   1          E=0;
 171   1       return rd_lcd;
 172   1      }
 173          
 174          /************************************************************************************
 175          
 176                                   读指定地址的数据函数 
 177                                                   x:   x轴地址
 178                                                           y:  y轴地址
 179          ************************************************************************************/
C51 COMPILER V8.08   LCD12864                                                              11/20/2008 22:02:48 PAGE 4   

 180          uchar r_data_addr(uchar x,uchar y)
 181          {
 182   1              uchar i;
 183   1              w_code(y);
 184   1              w_code(x);
 185   1              i = r_data();
 186   1              return i;
 187   1      }
 188          
 189          
 190          /************************************************************************************
 191                       
 192                             初始化液晶屏 
 193                                          
 194                                            上电复位液晶屏  
 195          ************************************************************************************/
 196          void  lcd_rst(void)
 197          {                                                                  
 198   1              /*********上电复位,大于40毫秒***********************/
 199   1              LCD_RST = 0;
 200   1              lcd_delayms(50);
 201   1              LCD_RST = 1;
 202   1              w_code(0x30);//   功能设置---8BIT控制界面,绘图显示ON  
 203   1              lcd_delayms(1); 
 204   1              w_code(0x01);//   清屏  
 205   1              lcd_delayms(1);
 206   1              w_code(0x0c);//   功能设置---8BIT控制界面,扩充指令集 
 207   1              lcd_delayms(15);
 208   1              w_code(0x32);//32
 209   1              w_code(0x36);//36
 210   1      }
 211          
 212          /************************************************************************************
 213          
 214          ---------------------------写8*16阵数据 
 215          ************************************************************************************/
 216          void  write_lcd_0816(uchar x1,uchar y1,uchar * zz,bit fanbai)
 217          {
 218   1              uchar a,y,x,z,i = 0;
 219   1              if((x1 % 2) == 0) 
 220   1              {
 221   2                      x1 = x1 / 2;
 222   2                      for(a = 0;a < 16;a++)
 223   2                      {
 224   3                              y = y1;
 225   3                      x = x1;
 226   3                              /**/
 227   3                              if(y < 16) 
 228   3                              {
 229   4                                      x = x + 0x80;
 230   4                                      y = y + 0x80;
 231   4                              }
 232   3                              if((y >= 16) && (y < 32))
 233   3                              {
 234   4                                      x = x  + 0x90;
 235   4                                      y = y + 0x80;
 236   4                              }
 237   3                              if((y >= 32) && (y < 48))
 238   3                              {
 239   4                                      x = x + 0x88;
 240   4                                      y = (y - 32) + 0x80;
 241   4                              }
C51 COMPILER V8.08   LCD12864                                                              11/20/2008 22:02:48 PAGE 5   

 242   3                              if((y >= 48) && (y < 64))
 243   3                              {
 244   4                                      x = x + 0x98;
 245   4                                      y = (y - 32) + 0x80;
 246   4                              }
 247   3      
 248   3                              w_code(y);
 249   3                              y1++;
 250   3                              w_code(x);      
 251   3                              if(fanbai == 0)
 252   3                              {
 253   4                                      w_data(zz[i]);
 254   4                              }
 255   3                              else
 256   3                              {
 257   4                                      w_data(~zz[i]);
 258   4                              }
 259   3                              i++;
 260   3                      

⌨️ 快捷键说明

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