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

📄 lcd12864.lst

📁 12864液晶屏驱动加入DS18B20温度显示+51单片机
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 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 "LCD12864.h"
   3          #include "zifu8_8.h"
   4          #include <intrins.h>
   5          
   6          
   7          /*********************************************************************************************************
             -***
   8          ** Function name: lcd_init( )
   9          ** Descriptions:  液晶初始化
  10          ** Input: 无
  11          ** Output: 无
  12          ** Created by: 王 斌
  13          ** Created Date: 2008-11-20 
  14          **--------------------------------------------------------------------------------------------------------
             ---
  15          ** Modified by:
  16          ** Modified Date: 
  17          **--------------------------------------------------------------------------------------------------------
             ---
  18          **********************************************************************************************************
             -**/
  19          void lcd_init( void )
  20          {
  21   1              write_cmd_L( 0x3e );            //关显示
  22   1              write_cmd_R( 0x3e );
  23   1              write_cmd_L( 0xc0 );            //起始行
  24   1              write_cmd_R( 0xc0 );    
  25   1              write_cmd_L( 0x3f );            //开显示
  26   1              write_cmd_R( 0x3f );
  27   1              lcd_clr( );                                     //清屏
  28   1      
  29   1      }
  30          
  31          /*********************************************************************************************************
             -***
  32          ** Function name: lcd_clr( )
  33          ** Descriptions:  液晶清屏
  34          ** Input: 无
  35          ** Output: 无
  36          ** Created by: 王 斌
  37          ** Created Date: 2008-11-20 
  38          **--------------------------------------------------------------------------------------------------------
             ---
  39          ** Modified by:
  40          ** Modified Date: 
  41          **--------------------------------------------------------------------------------------------------------
             ---
  42          **********************************************************************************************************
             -**/
  43          void lcd_clr( void )
  44          {       
  45   1              unsigned char i = 0;
  46   1              unsigned char j = 0;
  47   1              unsigned char page = 0;
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 2   

  48   1              for( i = 0; i < 8; i++ )                // 取8页显示(整个屏)
  49   1              {
  50   2                      page = i;
  51   2                      page |= 0xb8;                           // page | 0xb8就是取页地址(X的地址,(0 ~ 8))1 0 1 1 1 A2 A1 A0,
  52   2                      write_cmd_L( page );
  53   2                      write_cmd_L( 0x40 );            // 设置Y的地址,从0列开始(0 ~ 63)0 1 A7 A6 A5 A4 A3 A2 A1 A0
  54   2                      for( j = 0; j < 64; j++ )
  55   2                      {       
  56   3                              write_dat_L( 0X00 );     
  57   3                      }
  58   2                      write_cmd_R( page );            // 清完左屏再清右屏
  59   2                      write_cmd_R( 0x40 );
  60   2                      for( j = 0; j < 64; j++ )
  61   2                      {       
  62   3                              write_dat_R( 0X00 );
  63   3                      }
  64   2          }   
  65   1      }
  66          
  67          /*********************************************************************************************************
             -***
  68          ** Function name: Disp_Img( )
  69          ** Descriptions:  液晶清屏
  70          ** Input: *img
  71          ** Output: 无
  72          ** Created by: 王 斌
  73          ** Created Date: 2008-11-20 
  74          **--------------------------------------------------------------------------------------------------------
             ---
  75          ** Modified by:
  76          ** Modified Date: 
  77          **--------------------------------------------------------------------------------------------------------
             ---
  78          **********************************************************************************************************
             -**/
  79          void Disp_Img(unsigned char code *img)
  80          {                                                                                
  81   1          unsigned char j = 0;                        // 产生列地址
  82   1              unsigned char k = 0;                    // 产生页地址
  83   1              unsigned char page = 0;
  84   1      
  85   1          for( k = 0; k < 8; k++ )            // 整个屏8页的显示
  86   1          {   
  87   2              page = k;
  88   2              page |= 0xb8;
  89   2              // 先写左半屏数据
  90   2                      write_cmd_L( page );
  91   2              write_cmd_L( 0x40 );
  92   2              for( j = 0; j < 64; j++ )       // 左屏64列显示
  93   2              {
  94   3                              write_dat_L(img[k*128+j]);
  95   3              }
  96   2                      // 再写右半屏数据
  97   2                      write_cmd_R( page );
  98   2              write_cmd_R( 0x40 );
  99   2              for(j=64; j<128; j++)           // 右屏64列显示
 100   2              {
 101   3                              write_dat_R(img[k*128+j]);
 102   3                      }
 103   2          }
 104   1      }
 105          
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 3   

 106          /*********************************************************************************************************
             -***
 107          ** Function name: write_cmd_L( )
 108          ** Descriptions:  写液晶左半屏命令
 109          ** Input: cmd
 110          ** Output: 无
 111          ** Created by: 王 斌
 112          ** Created Date: 2008-11-20 
 113          **--------------------------------------------------------------------------------------------------------
             ---
 114          ** Modified by:
 115          ** Modified Date: 
 116          **--------------------------------------------------------------------------------------------------------
             ---
 117          **********************************************************************************************************
             -**/
 118          void write_cmd_L( unsigned char cmd )
 119          {
 120   1              CSB = 1;                                // H:选择左半屏
 121   1              CSA = 0;
 122   1              DI = 0;                                 // D/I: H = Data; L = Cmd
 123   1              RW = 1;                                 // R/W: H = Read; L = Write
 124   1              do
 125   1              {
 126   2                      DataLine = 0xff;
 127   2                      E = 1;
 128   2                      _nop_();                        
 129   2              }while( BUSY );
 130   1              E = 0;
 131   1              RW = 0;
 132   1              DataLine = cmd;                 // 写入指令数据
 133   1              E = 1;                                  // E下降沿锁定
 134   1              _nop_();
 135   1              E = 0;
 136   1      }
 137          
 138          /*********************************************************************************************************
             -***
 139          ** Function name: write_cmd_R( )
 140          ** Descriptions:  写液晶右半屏命令
 141          ** Input: cmd
 142          ** Output: 无
 143          ** Created by: 王 斌
 144          ** Created Date: 2008-11-20 
 145          **--------------------------------------------------------------------------------------------------------
             ---
 146          ** Modified by:
 147          ** Modified Date: 
 148          **--------------------------------------------------------------------------------------------------------
             ---
 149          **********************************************************************************************************
             -**/
 150          void write_cmd_R( unsigned char cmd )
 151          {
 152   1              CSB = 0;
 153   1              CSA = 1;                                // H:选择右半屏
 154   1              DI = 0;                                 // D/I: H = Data; L = Cmd
 155   1              RW = 1;                                 // R/W: H = Read; L = Write
 156   1              do
 157   1              {
 158   2                      DataLine = 0xff;
 159   2                      E = 1;
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 4   

 160   2                      _nop_();        
 161   2                      
 162   2              }while( BUSY );
 163   1              E = 0;
 164   1              RW = 0;
 165   1              DataLine = cmd;                 // 写入指令数据
 166   1              E = 1;                                  // E下降沿锁定
 167   1              _nop_();
 168   1              E = 0;
 169   1      }
 170          
 171          /*********************************************************************************************************
             -***
 172          ** Function name: write_dat_L( )
 173          ** Descriptions:  写液晶左半屏数据
 174          ** Input: dat
 175          ** Output: 无
 176          ** Created by: 王 斌
 177          ** Created Date: 2008-11-20 
 178          **--------------------------------------------------------------------------------------------------------
             ---
 179          ** Modified by:
 180          ** Modified Date: 
 181          **--------------------------------------------------------------------------------------------------------
             ---
 182          **********************************************************************************************************
             -**/
 183          void write_dat_L( unsigned char dat )
 184          {
 185   1              CSB = 1;                                 // H:选择左半屏
 186   1              CSA = 0;
 187   1              DI = 0;                                  // D/I: H = Data; L = Cmd
 188   1              RW = 1;                                  // R/W: H = Read; L = Write
 189   1              do
 190   1              {
 191   2                      DataLine = 0xff;
 192   2                      E = 1;
 193   2                      _nop_();                
 194   2              }while( BUSY );
 195   1              E = 0;
 196   1              DI = 1;
 197   1              RW = 0;
 198   1              DataLine = dat;                   // 写入数据
 199   1              E = 1;                                    // E下降沿锁定
 200   1              _nop_();
 201   1              E = 0;
 202   1      }
 203          
 204          /*********************************************************************************************************
             -***
 205          ** Function name: write_dat_R( )
 206          ** Descriptions:  写液晶右半屏数据
 207          ** Input: dat
 208          ** Output: 无
 209          ** Created by: 王 斌
 210          ** Created Date: 2008-11-20 
 211          **--------------------------------------------------------------------------------------------------------
             ---
 212          ** Modified by:
 213          ** Modified Date: 
 214          **--------------------------------------------------------------------------------------------------------
             ---
C51 COMPILER V8.08   LCD12864                                                              12/05/2008 17:36:36 PAGE 5   

 215          **********************************************************************************************************
             -**/
 216          void write_dat_R( unsigned char dat )
 217          {
 218   1              CSB = 0; 
 219   1              CSA = 1;                                // H:选择右半屏
 220   1              DI = 0;                                 // D/I: H = Data; L = Cmd  
 221   1              RW = 1;                                 // R/W: H = Read; L = Write
 222   1              do
 223   1              {
 224   2                      DataLine = 0xff;
 225   2                      E = 1;
 226   2                      _nop_();                
 227   2              }while( BUSY );
 228   1              E = 0;
 229   1              DI = 1;

⌨️ 快捷键说明

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