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

📄 lcd.lst

📁 数字万用表芯片MAX134的驱动,包括一些资料,知识源于网络
💻 LST
字号:
C51 COMPILER V8.02   LCD                                                                   05/24/2007 12:05:39 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\新建文件夹\lcd.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND OBJECT(.\新建文件夹\lcd.obj)

line level    source

   1          
   2          #include "HARD_CENECT.H"
   3          #include<intrins.h>
   4          #define uchar unsigned char 
   5          
   6          #define    clr       0x01   //清屏
   7          #define    byte      unsigned char
   8          
   9          void lcd_int(void);
  10          void check_busy(void);
  11          void write_command(byte cm);
  12          void write_lcd_data(byte disp);
  13          void write_LCD(byte shuju,bit C_or_D);
  14          void change_data(void);
  15          void lcd_delay(void);
  16          void lcd_delay_nms(unsigned int n); 
  17          void printch(byte adress,byte *ch);
  18          
  19          
  20          unsigned char LCD_DATA;   
  21          
  22          /****************************************
  23          *涵数名:printch()
  24          *涵数功能:在指的位置开始显示字符
  25          *****************************************/
  26          void printch(byte adress,byte *ch)
  27          {
  28   1      write_command(adress);
  29   1      while(*ch)
  30   1       {
  31   2       write_lcd_data(*ch);   
  32   2       ch ++;
  33   2       }
  34   1      }
  35          
  36          /****************************************
  37          *涵数名:printc()
  38          *涵数功能:在指的位置显示单个字符
  39          *****************************************/
  40          void printc(byte adress,byte disp_data)
  41          {
  42   1      write_command(adress);
  43   1      write_lcd_data(disp_data);
  44   1      }
  45          /*************************
  46          *涵数名:lcd_int()
  47          *涵数功能:初始化LCD
  48          **************************/
  49          void lcd_int(void)
  50          {
  51   1      write_command(0x30); 
  52   1      lcd_delay_nms(5);
  53   1      write_command(0x30);
  54   1      lcd_delay_nms(5);
  55   1      write_command(0x28);     
C51 COMPILER V8.02   LCD                                                                   05/24/2007 12:05:39 PAGE 2   

  56   1      lcd_delay_nms(5);
  57   1      write_command(0x28);
  58   1      lcd_delay_nms(5);
  59   1      write_command(0x28);
  60   1      lcd_delay_nms(5);
  61   1      write_command(0x80);
  62   1      lcd_delay_nms(5);
  63   1      write_command(0x01);
  64   1      lcd_delay_nms(5);
  65   1      write_command(0x0C);
  66   1      lcd_delay_nms(5);
  67   1      }
  68          
  69          /*************************
  70          *涵数名:check_busy()
  71          *涵数功能:检查LCD是否为忙
  72          **************************/
  73          void check_busy(void)
  74          {
  75   1       bit i=1;    //定义判断标志位
  76   1       LCD_E=0;    //去使能信号
  77   1       RS=0;       //传送命令数据
  78   1       RW=1;       //此时为读
  79   1       DATA7=1;
  80   1       LCD_E=1;    //高四位移出
  81   1       do{;}
  82   1       while(DATA7!=0);
  83   1       LCD_E=0;
  84   1      }
  85          
  86          /*************************
  87          *涵数名:write_command()
  88          *涵数功能:写入命令
  89          **************************/
  90          void write_command(byte cm)
  91          {
  92   1       write_LCD(cm,0);               //送命令时RS=0
  93   1      }
  94          /*************************
  95          *涵数名:write_lcd_data()
  96          *涵数功能:写入显示数据
  97          **************************/
  98          void write_lcd_data(byte disp)
  99          {
 100   1       write_LCD(disp,1);            //送数据时RS=1
 101   1      }
 102          /**************************
 103          *涵数名:write_LCD()
 104          *涵数功能:写数据到LCD,C_or_D
 105          *表示是命令还是显示数据
 106          ***************************/
 107          void write_LCD(byte shuju,bit C_or_D)
 108          {
 109   1       unsigned char i;
 110   1       check_busy();
 111   1       RS=C_or_D;
 112   1       RW=0;
 113   1       LCD_E=0;
 114   1       LCD_DATA=shuju;
 115   1       for(i=0;i<2;i++)
 116   1       { 
 117   2         change_data();
C51 COMPILER V8.02   LCD                                                                   05/24/2007 12:05:39 PAGE 3   

 118   2         LCD_E=1;
 119   2         lcd_delay();
 120   2         LCD_E=0;   
 121   2       }
 122   1      }
 123          /*************************
 124          *涵数名:change_data()
 125          *涵数功能:将要送入的数据转换
 126          *成4BIT格式并送入4条数据线
 127          *要求两次转换是连续的就不用
 128          *重新装入数据
 129          **************************/
 130          void change_data(void)
 131          {
 132   1          if((LCD_DATA&0x80)==0x80)
 133   1            DATA7=1;
 134   1          else
 135   1            DATA7=0;
 136   1          LCD_DATA=LCD_DATA<<1;
 137   1          if((LCD_DATA&0x80)==0x80)
 138   1            DATA6=1;
 139   1          else
 140   1            DATA6=0;
 141   1          LCD_DATA=LCD_DATA<<1;
 142   1          if((LCD_DATA&0x80)==0x80)
 143   1            DATA5=1;
 144   1          else
 145   1            DATA5=0;
 146   1          LCD_DATA=LCD_DATA<<1;
 147   1          if((LCD_DATA&0x80)==0x80)
 148   1            DATA4=1;
 149   1          else
 150   1            DATA4=0; 
 151   1          LCD_DATA=LCD_DATA<<1;
 152   1      }
 153          /*********************************************************
 154          *涵数名:lcd_delay_nms(unsigned int n)
 155          *涵数功能:延时N MS
 156          *
 157          *********************************************************/
 158          void lcd_delay_nms(unsigned int n)      
 159          {
 160   1          unsigned int i=0,j=0;
 161   1          for (i=n;i>0;i--)
 162   1           for (j=0;j<1140;j++);  
 163   1      }
 164          /*********************************************************
 165          *涵数名:lcd_delay()
 166          *涵数功能:延时N MS
 167          *
 168          *********************************************************/
 169          void lcd_delay(void)
 170          {
 171   1      byte i;
 172   1      for(i=0;i<40;i++);
 173   1      }
 174          
 175          
 176          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   LCD                                                                   05/24/2007 12:05:39 PAGE 4   

   CODE SIZE        =    289    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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