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

📄 lcd.lst

📁 此为ADC0832源程序,可实现ADC0832各部分功能~
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   08/23/2007 21:00:03 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #include<lcd.h>
   3          /*================================
   4          ==================================
   5          ==========参考明浩的程序==========
   6          ================================*/
   7          /*---------------------------------------------------------------------
   8          ------------------ LCD初始化-----------------------------------------*/
   9          
  10          //LCD初始化程序;主要作用初始化LCD,对LCD进行复位以及设置;
  11          
  12          void initialization(void)                               //定义函数;
  13          {
  14   1        delay(50);                                                    //延时5MS;
  15   1        write_dictate(0x38,0);                                //写指令38H;不检测忙;
  16   1        delay(50);                                                    //延时5MS;
  17   1        write_dictate(0x38,0);                                //写指令38H;不检测忙;
  18   1        delay(50);                                                    //延时5MS;
  19   1        write_dictate(0x38,0);                                //写指令38H;不检测忙;
  20   1        delay(50);
  21   1        write_dictate(0x38,1);                                //显示模式设置;检测忙;
  22   1        write_dictate(0x08,1);                                //关闭显示;检测忙;
  23   1        write_dictate(0x01,1);                                //显示清屏;检测忙;
  24   1        write_dictate(0x06,1);                                //显示光标移动设置;检测忙;
  25   1        write_dictate(0x0C,1);                                //显示开及光标设置;检测忙;
  26   1      }
  27          
  28          /*---------------------------------------------------------------------
  29          ------------------ 写指令--------------------------------------------*/
  30          
  31          //写指令子程序;无返回值;输入二个变量I和J.
  32          //I为要写入LCD的指令;J为判断要不要检测忙.
  33          //如果J为0则不判断检测忙;
  34          //如果J为1则判断检测忙;
  35          
  36          void write_dictate(uchar i,j)                   //定义二个变量;
  37          {
  38   1        if(j)     read_estate();              //根据需要检测忙; 
  39   1        LCD_DATA=i;                           //把要写入的数据送到LCD数据端;
  40   1        LCD_RS=0;                                         //RS置0;
  41   1        LCD_RW=0;                                                             //RW置0;
  42   1        LCD_E =1;                                                             //E端置0;
  43   1        delay(10);                                                    //延时;
  44   1        LCD_E =0;                                                             //E端置1;以锁存数据;
  45   1      }
  46          
  47          /*------------------------------------------------------------------
  48          ------------------ 写数据------------------------------------------*/
  49          
  50          //写数据子程序;无返回值;输入变量I;
  51          //I为要写入LCD中的数据;
  52          //数据类型CHAR形;
  53          
  54          void write_data(uchar i)                                //定义输入变量值I;
  55          {                                                                               
C51 COMPILER V7.50   LCD                                                                   08/23/2007 21:00:03 PAGE 2   

  56   1        read_estate();                                                //检测忙信号;
  57   1        LCD_DATA=i;                                                   //把I中数据送到LCD数据端;
  58   1        LCD_RS=1;                                                             //RS置1;
  59   1        LCD_RW=0;                                                             //RW置0;
  60   1        LCD_E=0;                                                              //E置0;
  61   1        delay(10);                                                    //短延时;
  62   1        LCD_E=1;                                                              //E置1;以锁存数据;
  63   1      }
  64          
  65          /*----------------------------------------------------------------
  66          -------------------读状态----------------------------------------*/
  67          
  68          //读状态子程序;有返回值;返回值类型为CHAR型;
  69          //读回的状态通过RETURN返回;
  70          
  71          uchar read_estate(void)                                 //定义有返回值的函数;
  72          {
  73   1        LCD_DATA=0Xff;                                                //把LCD端口全置1方便读取信号;
  74   1        LCD_RS=0;                                                             //RS置0;
  75   1        LCD_RW=1;                                                             //RW置1;
  76   1        LCD_E=0;                                                          //E端置0;
  77   1        delay(10);                                                    //短延时;
  78   1        LCD_E=1;                                                              //E端置1;以锁存数据;
  79   1        while(LCD_DATA&0x80);                 //检测忙,则一直循环;
  80   1        return(LCD_DATA);                                             //返回读取的信号;
  81   1      }
  82          
  83          /*---------------------------------------------------------------
  84          -------------------读数据--------------------------------------*/
  85          
  86          //读数据子程序;有返回值,返回值类型为CHAR型;
  87          
  88          /*uchar read_data(void)                                 //定义有返回值的子函数;
  89          {
  90            LCD_DATA=0Xff;                                                //LCD数据端口置1;
  91            LCD_RS=1;                                                             //RS置1;
  92            LCD_RW=1;                                                             //RW置1;
  93            LCD_E=0;                                                              //E置0;
  94            delay(10);                                                    //短延时;
  95            LCD_E=1;                                                              //E置1;以锁存数据;
  96            return(LCD_DATA);                                             //返回读取的值;
  97          }
  98          
  99          
 100          /*---------------------------------------------------------------
 101          -------------------在指定位置显示一个字符----------------------*/
 102          void displayonechar(uchar x, y,ddata)
 103          {
 104   1      y &= 0x01;
 105   1      x &= 0x0f;                             //限制X不能大于15,Y不能大于1
 106   1      if (y) x+= 0x40;                      //当要显示第二行时地址码+0x40;
 107   1      x+= 0x80;                             //算出指令码
 108   1      write_dictate(x,0);                    //这里不检测忙信号,发送地址码
 109   1      write_data(ddata);
 110   1      }
 111          
 112          /*---------------------------------------------------------------
 113          -------------------在指定位置显示一串字符----------------------*/
 114          void displaylistchar(uchar x,y,uchar code *ddata)
 115          {
 116   1        uchar a=0;
 117   1        y&=0x01;
C51 COMPILER V7.50   LCD                                                                   08/23/2007 21:00:03 PAGE 3   

 118   1        x&=0xf;
 119   1        while(ddata[a]>0x20)
 120   1        {
 121   2          if(x<=0xff)
 122   2              {  
 123   3                displayonechar(x, y,ddata[a]);
 124   3                a++;
 125   3                x++;
 126   3              }
 127   2         }
 128   1      }
 129          
 130          /*---------------------------------------------------------------
 131          -------------------延时子程序----------------------------------*/
 132          void delay(uint a)
 133          {
 134   1        uint b;
 135   1        for(b=0;b<a;b++);
 136   1      }
 137          
 138          
 139          //400ms延时
 140          void delay400ms(void)
 141          {
 142   1        uchar a = 5;
 143   1        uint b;
 144   1        while(a--)
 145   1        {
 146   2          b=7269;
 147   2          while(b--);
 148   2        }
 149   1      }


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