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

📄 lcd12232.lst

📁 lcd12232显示程序 简单程序上传大家参考 lcd12232
💻 LST
字号:
C51 COMPILER V7.02a   LCD12232                                                             08/28/2008 16:22:31 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE LCD12232
OBJECT MODULE PLACED IN lcd12232.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE lcd12232.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          //#include <at89x51.h>
   4          
   5          sbit LCD_RS=P1^0;//定义引脚
   6          sbit LCD_RW=P1^1;
   7          sbit LCD_E=P1^2;
   8          #define LCD_Data P2
   9          #define Busy    0x80 //用于检测LCD状态字中的Busy标识
  10          
  11          
  12          
  13          void WriteDataLCD(unsigned char WDLCD);
  14          void WriteCommandLCD(unsigned char WCLCD,BuysC);
  15          unsigned char ReadDataLCD(void);
  16          unsigned char ReadStatusLCD(void);
  17          void LCDInit(void);
  18          void LCDClear(void);
  19          void LCDFlash(void);
  20          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
  21          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
  22          void Delay5Ms(void);
  23          void Delay400Ms(void);
  24          
  25          
  26          code unsigned char  uctech[] = {"51单片机学习网"};
  27          code unsigned char  net[] = {"www.lydz8.com"};
  28          
  29          void main(void)
  30          {
  31   1       Delay400Ms(); //启动等待,等LCD讲入工作状态
  32   1       LCDInit(); //LCM初始化
  33   1       Delay5Ms(); //延时片刻(可不要)
  34   1       while(1){
  35   2              LCDClear();
  36   2                      DisplayListChar(0, 0, uctech);
  37   2                      DisplayListChar(0, 5, net);
  38   2                      Delay400Ms();
  39   2                      Delay400Ms();
  40   2                      Delay400Ms();
  41   2                      Delay400Ms();
  42   2                      LCDFlash();
  43   2                      //}
  44   2              }
  45   1      }
  46          
  47          //写数据
  48          void WriteDataLCD(unsigned char WDLCD)
  49          {
  50   1       ReadStatusLCD(); //检测忙 
  51   1       LCD_RS = 1;
  52   1       LCD_RW = 0;
  53   1       LCD_Data = WDLCD;
  54   1       LCD_E = 1;
  55   1       LCD_E = 1;
C51 COMPILER V7.02a   LCD12232                                                             08/28/2008 16:22:31 PAGE 2   

  56   1       LCD_E = 1;
  57   1       LCD_E = 0;
  58   1      }
  59          
  60          //写指令
  61          void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测
  62          {
  63   1       if (BuysC) ReadStatusLCD(); //根据需要检测忙 
  64   1       LCD_RS = 0;
  65   1       LCD_RW = 0; 
  66   1       LCD_Data = WCLCD;
  67   1       LCD_E = 1; 
  68   1       LCD_E = 1;
  69   1       LCD_E = 1;
  70   1       LCD_E = 0;  
  71   1      }
  72          
  73          //读数据
  74          unsigned char ReadDataLCD(void)
  75          {
  76   1       LCD_RS = 1; 
  77   1       LCD_RW = 1;
  78   1       LCD_E = 0;
  79   1       LCD_E = 0;
  80   1       LCD_E = 1;
  81   1       return(LCD_Data);
  82   1      }
  83          
  84          //读状态
  85          unsigned char ReadStatusLCD(void)
  86          {
  87   1       LCD_Data = 0xFF; 
  88   1       LCD_RS = 0;
  89   1       LCD_RW = 1; 
  90   1       LCD_E = 1;
  91   1       while (LCD_Data & Busy); //检测忙信号
  92   1       LCD_E = 0;
  93   1       return(LCD_Data);
  94   1      }
  95          
  96          void LCDInit(void) //LCM初始化
  97          {
  98   1       WriteCommandLCD(0x30,1); //显示模式设置,开始要求每次检测忙信号
  99   1       WriteCommandLCD(0x01,1); //显示清屏
 100   1       WriteCommandLCD(0x06,1); // 显示光标移动设置
 101   1       WriteCommandLCD(0x0C,1); // 显示开及光标设置
 102   1      }
 103          void LCDClear(void) //清屏
 104          {
 105   1       WriteCommandLCD(0x01,1); //显示清屏
 106   1       WriteCommandLCD(0x34,1); // 显示光标移动设置
 107   1       WriteCommandLCD(0x30,1); // 显示开及光标设置
 108   1      }
 109          void LCDFlash(void)     //闪烁效果
 110          {
 111   1       WriteCommandLCD(0x08,1); //显示清屏
 112   1       Delay400Ms();
 113   1       WriteCommandLCD(0x0c,1); // 显示开及光标设置
 114   1       Delay400Ms();
 115   1       WriteCommandLCD(0x08,1); //显示清屏
 116   1       Delay400Ms();
 117   1       WriteCommandLCD(0x0c,1); // 显示开及光标设置
C51 COMPILER V7.02a   LCD12232                                                             08/28/2008 16:22:31 PAGE 3   

 118   1       Delay400Ms();
 119   1       WriteCommandLCD(0x08,1); //显示清屏
 120   1       Delay400Ms();
 121   1      }
 122          //按指定位置显示一个字符
 123          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
 124          {
 125   1       Y &= 0x1;
 126   1       X &= 0xF; //限制X不能大于15,Y不能大于1
 127   1       if (Y) X |= 0x10; //当要显示第二行时地址码+0x10;
 128   1       X |= 0x80; // 算出指令码
 129   1       WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码
 130   1       WriteDataLCD(DData);
 131   1      }
 132          
 133          //按指定位置显示一串字符
 134          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
 135          {
 136   1       unsigned char ListLength,X2;
 137   1        ListLength = 0;
 138   1        X2=X;
 139   1       Y &= 0x01;
 140   1       X &= 0x0F; //限制X不能大于15,Y不能大于1
 141   1       if (Y) X2 |= 0x10; //当要显示第二行时地址码+0x10;
 142   1       X2 |= 0x80; // 算出指令码
 143   1       WriteCommandLCD(X2, 1); //这里不检测忙信号,发送地址码
 144   1       while (DData[ListLength]>=0x20) //若到达字串尾则退出
 145   1        {
 146   2         if (X <= 0x0F) //X坐标应小于0xF
 147   2          {
 148   3           WriteDataLCD(DData[ListLength]); //
 149   3           ListLength++;
 150   3               X++;
 151   3               Delay5Ms();
 152   3          }
 153   2        }
 154   1      }
 155          
 156          //5ms延时
 157          void Delay5Ms(void)
 158          {
 159   1       unsigned int TempCyc = 5552;
 160   1       while(TempCyc--);
 161   1      }
 162          
 163          //400ms延时
 164          void Delay400Ms(void)
 165          {
 166   1       unsigned char TempCycA = 5;
 167   1       unsigned int TempCycB;
 168   1       while(TempCycA--)
 169   1       {
 170   2        TempCycB=7269;
 171   2        while(TempCycB--);
 172   2       };
 173   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    377    ----
   CONSTANT SIZE    =     29    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.02a   LCD12232                                                             08/28/2008 16:22:31 PAGE 4   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   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 + -