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

📄 lcd_51.lst

📁 主要有基于51的I2c读写24c64的测试程序
💻 LST
字号:
C51 COMPILER V7.06   LCD_51                                                                11/10/2008 22:12:04 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD_51
OBJECT MODULE PLACED IN lcd_51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_51.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define         _LCD_51_C_
   2          #include        "LCD_51.h"
   3          
   4          //==========================================
   5          //函数名称:液晶模块使能
   6          //函数作用: 使能液晶
   7          //入口参数: 无
   8          //返回类型:无
   9          //==========================================
  10          void LCD_en_write(void) reentrant
  11          {
  12   1        EN_SET;
  13   1        delay_nus(4);
  14   1        EN_CLR;
  15   1      }
  16          
  17          //==========================================
  18          //函数名称:写指令
  19          //函数作用:
  20          //入口参数: 液晶指令command
  21          //返回类型:无
  22          //==========================================
  23          void LCD_write_command(uchar command) reentrant
  24          {
  25   1        delay_nus( 16 );
  26   1        RS_CLR;
  27   1        DB &= 0X0F;           //清高四位
  28   1        DB |= command & 0xf0; //写高四位
  29   1        LCD_en_write();
  30   1        command=command << 4;   //低四位移到高四位
  31   1        DB &= 0x0f;             //清高四位
  32   1        DB |= command & 0xf0;   //写低四位
  33   1        LCD_en_write();
  34   1        //delay_nms(2);         //清屏指令时间很长, 保险起见,可以增加
  35   1      }
  36          
  37          //==========================================
  38          //函数名称:写数据
  39          //函数作用:
  40          //入口参数: 数据DATA
  41          //返回类型:无
  42          //==========================================
  43          void LCD_write_data(uchar DATA) reentrant
  44          {
  45   1        delay_nus(16);
  46   1        RS_SET;           //RS=1
  47   1        DB &= 0X0f;       //清高四位
  48   1        DB |= DATA&0xf0;  //写高四位
  49   1        LCD_en_write();
  50   1        DATA = DATA << 4; //低四位移到高四位
  51   1        DB &= 0X0f;       //清高四位
  52   1        DB |= DATA&0xf0;  //写低四位
  53   1        LCD_en_write();
  54   1      }
  55          
C51 COMPILER V7.06   LCD_51                                                                11/10/2008 22:12:04 PAGE 2   

  56          //==========================================
  57          //函数名称:液晶初始化函数
  58          //函数作用:
  59          //入口参数: 无
  60          //返回类型:无
  61          //==========================================
  62          void LCD_init( void )reentrant
  63          {
  64   1        LCD_write_command(0x28);
  65   1        LCD_en_write();           //********总结这里一定要加这液晶使能*********
  66   1        delay_nus(20);
  67   1        LCD_write_command(0x28);  //4位显示
  68   1        LCD_write_command(0x0c);  //显示开
  69   1        LCD_write_command(0x01);  //清屏
  70   1        delay_nms(5);             //延时一定要长
  71   1      }
  72          
  73          //==========================================
  74          //函数名称:写地址
  75          //函数作用:
  76          //入口参数: 行位置r, 列位置c
  77          //返回类型:无
  78          //==========================================
  79          void LCD_set_rc( uchar r, uchar c )reentrant
  80          {
  81   1          uchar address;
  82   1      
  83   1          if (r == 1)
  84   1          address = 0x80 + c;
  85   1          else if(r == 2)
  86   1          address = 0xc0 + c;
  87   1      
  88   1          LCD_write_command( address );
  89   1      }
  90          
  91          //==========================================
  92          //函数名称:写字符串
  93          //函数作用: 在指定位置写一串字符串
  94          //入口参数: 行位置r, 列位置c, 字符串*s
  95          //返回类型:无
  96          //==========================================
  97          void LCD_write_string(uchar r, uchar c, uchar *s)reentrant
  98          {
  99   1          LCD_set_rc( r, c ); //写地址
 100   1      
 101   1          while( *s )                 // 写显示字符
 102   1          {
 103   2            LCD_write_data( *s );
 104   2            s++;
 105   2          }
 106   1      }
 107          
 108          void LCD_write_char(uchar r, uchar c, uchar DATA)reentrant                                 //写字符
 109          {
 110   1               LCD_set_rc( r, c );
 111   1               LCD_write_data( DATA );
 112   1      }
 113          
 114          //==========================================
 115          //函数名称:写字符数组
 116          //函数作用: 在指定位置写一串字符串
 117          //入口参数: 行位置r, 列位置c, 字符数组chardata[], 字符个数
C51 COMPILER V7.06   LCD_51                                                                11/10/2008 22:12:04 PAGE 3   

 118          //返回类型:无
 119          //==========================================
 120          void LCD_write_array( uchar r, uchar c, uchar array[] )reentrant
 121          {
 122   1              uchar i = 0;
 123   1          while( array[i] != '\0' )
 124   1              {
 125   2                       LCD_write_char( r, c, array[i] );
 126   2                   if( ++c == 16 )
 127   2                       {
 128   3                           if( r == 1 )
 129   3                               {   
 130   4                                   c = 0;
 131   4                                       r = 2;
 132   4                                       LCD_write_char( r, c, array[i] );
 133   4                               }
 134   3                               
 135   3                               else if( r == 2 )
 136   3                               {
 137   4                                       c = 0;
 138   4                                       r = 1;
 139   4                                       LCD_write_char( r, c, array[i] );
 140   4                           }
 141   3                   }
 142   2                       i++;
 143   2              }  
 144   1      }
 145          
 146          
 147          //==========================================
 148          //函数名称:显示一个整型数据
 149          //函数作用: 在指定位置显示整数
 150          //入口参数: 行位置r, 列位置c, 字符数组dataint[]
 151          //返回类型:无
 152          //==========================================
 153          void LCD_write_datalongint( uchar r, uchar c, long int dataint )reentrant
 154          {
 155   1          uchar datachar1[8];
 156   1          uchar datachar2[8];
 157   1          uchar n = 0;
 158   1          uchar i =0;
 159   1          uchar k =0;        //取字符个数
 160   1          uchar kk = 0;      //取字符个数
 161   1              long int datainttmp = dataint;
 162   1              
 163   1          while( datainttmp != 0 )
 164   1          {
 165   2              datachar1[n++] = ( datainttmp % 10 ) + 0x30;  //转换为字符
 166   2              datainttmp /= 10;
 167   2          }
 168   1      
 169   1          if( dataint != 0 )                   //*/*//*/
 170   1          {
 171   2              k = n - 1;
 172   2              kk = n;
 173   2      
 174   2              for( i = 0; i < kk; i++, k-- )
 175   2              {
 176   3                  datachar2[k] = datachar1[i];               //将数字符串倒过来
 177   3              }
 178   2      
 179   2                  LCD_set_rc( r, c );
C51 COMPILER V7.06   LCD_51                                                                11/10/2008 22:12:04 PAGE 4   

 180   2              for( i = 0; i < kk; i++ )
 181   2              {
 182   3                  LCD_write_char( r, c++, datachar2[i] );
 183   3              }
 184   2          }
 185   1          
 186   1          else
 187   1          LCD_write_char( r, c, '0' );
 188   1      }
 189          


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