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

📄 12864lcd.lst

📁 C51驱动nrf24l01无线发送
💻 LST
字号:
C51 COMPILER V9.00   12864LCD                                                              07/18/2012 17:58:49 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE 12864LCD
OBJECT MODULE PLACED IN 12864LCD.obj
COMPILER INVOKED BY: G:\Keil_51\C51\BIN\C51.EXE 12864液晶\12864LCD.c BROWSE INCDIR(.\Define;.\MyDseign;.\nrf24l01;.\User
                    -;.\12864液晶) DEBUG OBJECTEXTEND PRINT(.\12864LCD.lst) TABS(2) OBJECT(12864LCD.obj)

line level    source

   1          /*******************************************************************************
   2          名    称:12864液晶操作程序
   3          功    能:本c文件封装了对12864液晶的一些简单的基本读写操作.
   4          封装函数:
   5                  void Lcd_WriteCmd(unsigned char a);               //写指令
   6                  void Lcd_WriteData(unsigned char a);              //写数据
   7                  int Lcd_ReadCmd();                                //读指令
   8                  int Lcd_ReadData();                               //读数据
   9                  void Lcd_Init();                                  //初始化液晶
  10                  void Lcd_XY(unsigned char a,unsigned char b);     //设定光标位置
  11                  void Clear_GDRAM(void);                           //清除液晶GDRAM中的随机数据
  12                  void Draw_PM(const uchar *ptr);                   //在整个液晶屏幕上画图
  13                  void Draw_TX(uchar Yaddr,uchar Xaddr,const uchar * dp);   //显示一个16*16大小的图形
  14          作    者:胡静涛
  15          最后修改时间:2011年7月25号
  16          备注:该程序应在1M的系统时钟下运行,读忙信号函数已经被封装到除读指令函数以外的函数
  17               中.
  18          典型应用:
  19                    Lcd_XY( 1 , 1 );
  20                    i = 0;
  21                    while( num1[i] != '\0' )
  22                    {
  23                            Lcd_WriteData( num1[i] );
  24                            i++;    
  25                    } 
  26          以上函数均进行测试可以正常使用
  27          *******************************************************************************/
  28          #include "12864LCD.h"
  29          #include "define.h"
  30          
  31          
  32          
  33          
  34          //******************************************************************************
  35          //12864液晶读指令
  36          //典型应用 读忙标志:while(Lcd_ReadCmd() & 0x80);
  37          //******************************************************************************
  38          int Lcd_ReadCmd()
  39          {
  40   1        int temp;
  41   1        
  42   1        //LCD12864_CMDDIR;  
  43   1        //LCD12864_DATADIR = 0X00;
  44   1        LCD12864_LCDRS_0;
  45   1        LCD12864_LCDWR_1;
  46   1        LCD12864_LCDEN_0;
  47   1        //_NOP();
  48   1        delay_ms(1);
  49   1        LCD12864_LCDEN_1;
  50   1        //_NOP();
  51   1        //_NOP();
  52   1        delay_ms(1);
  53   1        delay_ms(1);
  54   1        temp = LCD12864_DATAIN;
C51 COMPILER V9.00   12864LCD                                                              07/18/2012 17:58:49 PAGE 2   

  55   1        LCD12864_LCDEN_0;
  56   1        
  57   1        return temp;
  58   1      }
  59          
  60          
  61          
  62          
  63          //******************************************************************************
  64          //12864液晶读数据
  65          //******************************************************************************
  66          int Lcd_ReadData()
  67          {
  68   1        int temp;
  69   1        while(Lcd_ReadCmd() & 0x80);                     //读忙信号
  70   1        //LCD12864_DATADIR = 0X00;
  71   1        //LCD12864_CMDDIR; 
  72   1        LCD12864_LCDRS_1;
  73   1        LCD12864_LCDWR_1;
  74   1        LCD12864_LCDEN_0;
  75   1        //_NOP();
  76   1        delay_ms(1);
  77   1        LCD12864_LCDEN_1;
  78   1        //_NOP();
  79   1        //_NOP();
  80   1        delay_ms(1);
  81   1        delay_ms(1);
  82   1        temp = LCD12864_DATAIN;
  83   1        LCD12864_LCDEN_0;
  84   1        
  85   1        return temp;
  86   1      }
  87          
  88          
  89          
  90          //******************************************************************************
  91          //12864液晶写指令
  92          //******************************************************************************
  93          void Lcd_WriteCmd(uchar a)
  94          {
  95   1        while(Lcd_ReadCmd() & 0x80);                     //读忙信号
  96   1        //LCD12864_DATADIR = 0XFF;
  97   1        //LCD12864_CMDDIR;  
  98   1        LCD12864_LCDRS_0;
  99   1        LCD12864_LCDWR_0;
 100   1        LCD12864_LCDEN_0;
 101   1        //_NOP();
 102   1        delay_ms(1);
 103   1        LCD12864_DATA = a;
 104   1        //_NOP();
 105   1        delay_ms(1);
 106   1        LCD12864_LCDEN_1;
 107   1        //_NOP();
 108   1        //_NOP(); 
 109   1        delay_ms(1);
 110   1        delay_ms(1);
 111   1        LCD12864_LCDEN_0;
 112   1      }
 113          
 114          
 115          
 116          //******************************************************************************
C51 COMPILER V9.00   12864LCD                                                              07/18/2012 17:58:49 PAGE 3   

 117          //12864液晶写数据
 118          //******************************************************************************
 119          void Lcd_WriteData(uchar a)
 120          {
 121   1        while(Lcd_ReadCmd() & 0x80);                     //读忙信号
 122   1        //LCD12864_DATADIR = 0XFF;
 123   1        //LCD12864_CMDDIR;
 124   1        LCD12864_LCDRS_1;
 125   1        LCD12864_LCDWR_0;
 126   1        LCD12864_LCDEN_0;
 127   1        //_NOP();
 128   1        delay_ms(1);
 129   1        LCD12864_DATA = a;
 130   1        //_NOP();
 131   1        delay_ms(1);
 132   1        LCD12864_LCDEN_1;
 133   1        //_NOP();
 134   1        //_NOP();
 135   1        delay_ms(1);
 136   1        delay_ms(1);
 137   1        LCD12864_LCDEN_0;
 138   1      }
 139          
 140          
 141          
 142          //******************************************************************************
 143          //12864液晶初始化
 144          //******************************************************************************
 145          void Lcd_Init()
 146          {
 147   1        Lcd_WriteCmd(0x30);
 148   1        Lcd_WriteCmd(0x0c);
 149   1        Lcd_WriteCmd(0x01);
 150   1        Lcd_WriteCmd(0x80);  
 151   1      }
 152          
 153          //******************************************************************************
 154          //12864液晶光标地址
 155          //******************************************************************************
 156          void Lcd_XY(unsigned char a,unsigned char b)
 157          {
 158   1        switch (a)
 159   1        {
 160   2        case 1:
 161   2          a = 0x80;
 162   2          break;
 163   2        case 2:
 164   2          a = 0x90;
 165   2          break;
 166   2        case 3:
 167   2          a = 0x88;
 168   2          break;
 169   2        case 4:
 170   2          a = 0x98;
 171   2          break;
 172   2        }
 173   1        Lcd_WriteCmd(a + b - 1);
 174   1      }
 175          
 176          //******************************************************************************
 177          //清除液晶GDRAM中的随机数据
 178          //******************************************************************************
C51 COMPILER V9.00   12864LCD                                                              07/18/2012 17:58:49 PAGE 4   

 179          void Clear_GDRAM(void)
 180          {
 181   1        uchar i,j,k;
 182   1        Lcd_WriteCmd(0x34);        //打开扩展指令集
 183   1        i = 0x80;            
 184   1        for(j = 0;j < 32;j++)
 185   1        {
 186   2          Lcd_WriteCmd(i++);
 187   2          Lcd_WriteCmd(0x80);
 188   2          for(k = 0;k < 16;k++)
 189   2          {
 190   3            Lcd_WriteData(0x00);
 191   3          }
 192   2        }
 193   1        i = 0x80;
 194   1        for(j = 0;j < 32;j++)
 195   1        {
 196   2          Lcd_WriteCmd(i++);
 197   2          Lcd_WriteCmd(0x88);    
 198   2          for(k = 0;k < 16;k++)
 199   2          {
 200   3            Lcd_WriteData(0x00);
 201   3          } 
 202   2        }   
 203   1        Lcd_WriteCmd(0x30);        //回到基本指令集
 204   1      }
 205          
 206          //******************************************************************************
 207          //在整个液晶屏幕上画图
 208          //******************************************************************************
 209          void Draw_PM(const uchar *ptr)
 210          {
 211   1        uchar i,j,k;
 212   1        Lcd_WriteCmd(0x34);        //打开扩展指令集
 213   1        i = 0x80;            
 214   1        for(j = 0;j < 32;j++)
 215   1        {
 216   2          Lcd_WriteCmd(i++);
 217   2          Lcd_WriteCmd(0x80);
 218   2          for(k = 0;k < 16;k++)
 219   2          {
 220   3            Lcd_WriteData(*ptr++);
 221   3          }
 222   2        }
 223   1        i = 0x80;
 224   1        for(j = 0;j < 32;j++)
 225   1        {
 226   2          Lcd_WriteCmd(i++);
 227   2          Lcd_WriteCmd(0x88);    
 228   2          for(k = 0;k < 16;k++)
 229   2          {
 230   3            Lcd_WriteData(*ptr++);
 231   3          } 
 232   2        }  
 233   1        Lcd_WriteCmd(0x36);        //打开绘图显示
 234   1        Lcd_WriteCmd(0x30);        //回到基本指令集
 235   1      }
 236          
 237          
 238          //******************************************************************************
 239          //功    能:显示一个16*16大小的图形
 240          //参    数:Yaddr--Y地址
C51 COMPILER V9.00   12864LCD                                                              07/18/2012 17:58:49 PAGE 5   

 241          //          Xaddr--X地址
 242          //          dp--指向图形数据存放地址的指针
 243          //******************************************************************************
 244          void Draw_TX(uchar Yaddr,uchar Xaddr,const uchar * dp) 
 245          {
 246   1        uchar j;
 247   1        uchar k=0;
 248   1        Yaddr = Yaddr + 0x80;
 249   1        Xaddr = Xaddr + 0x80;
 250   1        Lcd_WriteCmd(0x01);  //清屏,只能清除DDRAM
 251   1        Lcd_WriteCmd(0x34);  //使用扩展指令集,关闭绘图显示
 252   1        for(j=0;j<16;j++)
 253   1        {
 254   2          Lcd_WriteCmd(Yaddr++);       //Y地址
 255   2          Lcd_WriteCmd(Xaddr);    //X地址
 256   2          Lcd_WriteData(dp[k++]);  
 257   2          Lcd_WriteData(dp[k++]);
 258   2        }
 259   1        Lcd_WriteCmd(0x36);  //打开绘图显示
 260   1        Lcd_WriteCmd(0x30);  //回到基本指令集模式
 261   1      }
 262          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    590    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      18
   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 + -