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

📄 1602.lst

📁 用51单片机开发的GSM报警程序,用51单片机开发的GSM报警程序
💻 LST
字号:
C51 COMPILER V7.01  1602                                                                   08/22/2008 12:38:42 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\1602.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\Documents and Settings\hjjm\桌面\hjm\1602.C BROWSE DEBUG OBJECTEXTEND PR
                    -INT(.\1602.lst) OBJECT(.\1602.obj)

stmt level    source

   1          #include <REG51.h>
   2          #include <string.h>
   3          
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          
   7          sbit LCM_E=P2^3;//定义接口
   8          sbit LCM_RW=P2^2;
   9          sbit LCM_RS=P2^1;
  10          #define LCM_Data P0//数据接口
  11          /*
  12          void LCM_WriteData(uchar WDLCM);
  13          void LCM_WriteCommand(uchar WCLCM,BuysC);
  14          uchar LCM_ReadData(void);
  15          uchar LCM_ReadStatus(void);
  16          void LCM_Init(void);
  17          void DisplayOneChar(uchar X, uchar Y, uchar DData);
  18          void DisplayListChar(uchar X, uchar Y, uchar code *DData);
  19          void Delay5Ms(void);
  20          void Delay400Ms(void);*/
  21          /********************5ms延时函数************************/
  22          /*函数原型:void Delay5Ms(void)
  23          /*函数功能:5ms延时
  24          /*输入参数:无
  25          /*输出参数:无
  26          /**********************************************************************/
  27          void Delay5Ms(void)
  28          {
  29   1              unsigned int TempCyc = 5552;
  30   1              while(TempCyc--);
  31   1      }
  32          /********************400ms延时延时函数************************/
  33          /*函数原型:void Delay400Ms(void)
  34          /*函数功能:400ms延时延时
  35          /*输入参数:无
  36          /*输出参数:无
  37          /**********************************************************************/
  38          void Delay400Ms(void)
  39          {
  40   1              uchar TempCycA = 5;
  41   1              unsigned int TempCycB;
  42   1              while(TempCycA--)
  43   1              {
  44   2                      TempCycB=7269;
  45   2                      while(TempCycB--);
  46   2              };
  47   1      }
  48          
  49          /****************************1602A读状态函数**************************/
  50          /*函数原型:uchar LCM_ReadData(void)
  51          /*函数功能:1602A读状态
  52          /*输入参数:无
  53          /*输出参数:1602A返回的状态
  54          /**********************************************************************/
C51 COMPILER V7.01  1602                                                                   08/22/2008 12:38:42 PAGE 2   

  55          uchar LCM_ReadStatus(void)
  56          {
  57   1              LCM_Data = 0xFF;
  58   1              LCM_RS = 0;
  59   1              LCM_RW = 1;
  60   1              LCM_E = 0;
  61   1              LCM_E = 0;
  62   1              LCM_E = 1;
  63   1              while (LCM_Data & 0x80);//检测忙信号
  64   1              return(LCM_Data);
  65   1      }
  66          /****************************1602A写数据函数**************************/
  67          /*函数原型:void LCM_WriteData(uchar WDLCM)
  68          /*函数功能:1602A写数据
  69          /*输入参数:要写入的数据
  70          /*输出参数:无
  71          
  72          /**********************************************************************/
  73          void LCM_WriteData(uchar WDLCM)
  74          {
  75   1              LCM_ReadStatus();//检测忙
  76   1              LCM_Data = WDLCM;
  77   1              LCM_RS = 1;
  78   1              LCM_RW = 0;
  79   1              LCM_E = 0;//若晶振速度太高可以在这后加小的延时
  80   1              LCM_E = 0;//延时
  81   1              LCM_E = 1;
  82   1      }
  83          /****************************1602A写指令函数**************************/
  84          /*函数原型:void LCM_WriteCommand(uchar WCLCM,BuysC)
  85          /*函数功能:1602A写指令
  86          /*输入参数:要写入的指令
  87          /*输出参数:无
  88          
  89          /**********************************************************************/
  90          void LCM_WriteCommand(uchar WCLCM,BuysC)//BuysC为0时忽略忙检测
  91          {
  92   1              if (BuysC) LCM_ReadStatus();//根据需要检测忙
  93   1              LCM_Data = WCLCM;
  94   1              LCM_RS = 0;
  95   1              LCM_RW = 0;
  96   1              LCM_E = 0;
  97   1              LCM_E = 0;
  98   1              LCM_E = 1;
  99   1      }
 100          /****************************1602A读数据函数**************************/
 101          /*函数原型:uchar LCM_ReadData(void)
 102          /*函数功能:1602A读数据
 103          /*输入参数:无
 104          /*输出参数:1602A返回的数据
 105          /**********************************************************************/
 106          uchar LCM_ReadData(void)
 107          {
 108   1              LCM_RS = 1;
 109   1              LCM_RW = 1;
 110   1              LCM_E = 0;
 111   1              LCM_E = 0;
 112   1              LCM_E = 1;
 113   1              return(LCM_Data);
 114   1      }
 115          
 116          /****************************1602A初始化函数**************************/
C51 COMPILER V7.01  1602                                                                   08/22/2008 12:38:42 PAGE 3   

 117          /*函数原型:void LCM_Init(void)
 118          /*函数功能:1602A初始化
 119          /**********************************************************************/
 120          void LCM_Init(void)
 121          {
 122   1              LCM_Data = 0;
 123   1              LCM_WriteCommand(0x38,0);//三次显示模式设置,不检测忙信号
 124   1              Delay5Ms();
 125   1              LCM_WriteCommand(0x38,0);
 126   1              Delay5Ms();
 127   1              LCM_WriteCommand(0x38,0);
 128   1              Delay5Ms();
 129   1              
 130   1              LCM_WriteCommand(0x38,1);//显示模式设置,开始要求每次检测忙信号
 131   1              //LCM_WriteCommand(0x08,1);//关闭显示
 132   1              LCM_WriteCommand(0x01,1);//显示清屏
 133   1              LCM_WriteCommand(0x06,1);// 显示光标移动设置
 134   1              LCM_WriteCommand(0x0e,1);// 显示开及光标设置
 135   1                      //LCM_WriteCommand(0x18,1);
 136   1      }
 137          /******************1602A按指定位置显示一个字符函数**********************/
 138          /*函数原型:void DisplayOneChar(uchar X, uchar Y, uchar DData)
 139          /*函数功能:1602A按指定位置显示一个字符
 140          /*输入参数:X坐标 Y坐标 要显示的字符
 141          /*输出参数:无
 142          /**********************************************************************/
 143          void DisplayOneChar(uchar X, uchar Y, uchar DData)
 144          {
 145   1              Y &= 0x1;
 146   1              X &= 0xF;//限制X不能大于15,Y不能大于1
 147   1              if (Y) 
 148   1                      X |= 0x40;//当要显示第二行时地址码+0x40;
 149   1              X |= 0x80;// 算出指令码
 150   1              LCM_WriteCommand(X, 0);//这里不检测忙信号,发送地址码
 151   1              LCM_WriteData(DData);
 152   1      }
 153          /*******************1602A按指定位置显示一串字符函数*********************/
 154          /*函数原型:void DisplayListChar(uchar X, uchar Y, uchar code *DData)
 155          /*函数功能:1602A按指定位置显示一个字符
 156          /*输入参数:X坐标 Y坐标 要显示字符串的首地址
 157          /*输出参数:无
 158          /**********************************************************************/
 159          void DisplayListChar(uchar X, uchar Y, uchar code *DData)
 160          {
 161   1              uchar ListLength;
 162   1              ListLength = 0;
 163   1              Y &= 0x1;
 164   1              X &= 0xF;//限制X不能大于15,Y不能大于1
 165   1              while (DData[ListLength]>0x20)//若到达字串尾则退出
 166   1              {
 167   2                      if (X <= 0xF)//X坐标应小于0xF
 168   2                      {
 169   3                              DisplayOneChar(X,Y,DData[ListLength]);//显示单个字符
 170   3                              ListLength++;
 171   3                              X++;
 172   3                      }
 173   2              }
 174   1      }
 175          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.01  1602                                                                   08/22/2008 12:38:42 PAGE 4   

   CODE SIZE        =    239    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   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 + -