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

📄 parts.lst

📁 DS1302资料lcd.rar
💻 LST
字号:
C51 COMPILER V8.08   PARTS                                                                 06/12/2009 10:30:36 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE PARTS
OBJECT MODULE PLACED IN parts.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE parts.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #define LCM_Data P2
   3                                                                                                                                                                                                                                                                                           #include <reg52.h>
   4          sbit LCM_RS=P0^2;
   5          sbit LCM_RW=P0^4; //定义引脚
   6          sbit LCM_E=P0^6;
   7          sbit LCM_power = P0^0;
   8          
   9          
  10          void Wdata_1602(unsigned char WDLCM);
  11          void Wcommand_1602(unsigned char WCLCM,BuysC);
  12          unsigned char  Rstatus_1602(void);
  13          void Init_1602(void);
  14          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
  15          void  DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
  16          void Display_a_passage(unsigned char code *DData);
  17          void Delay5Ms(void);
  18          //写数据
  19          void Wdata_1602(unsigned char WDLCM)
  20          {
  21   1       Rstatus_1602(); //检测忙
  22   1       LCM_RS = 1;
  23   1       LCM_Data = WDLCM;
  24   1       LCM_RW = 0;
  25   1       LCM_E = 0; //若晶振速度太高可以在这后加小的延时
  26   1       LCM_E = 0; //延时 
  27   1       LCM_E = 0; //延时
  28   1       LCM_E = 1;
  29   1      }
  30          
  31          //写指令
  32          void Wcommand_1602(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测
  33          {
  34   1       if (BuysC) 
  35   1       Rstatus_1602(); //根据需要检测忙
  36   1       LCM_Data = WCLCM;
  37   1       LCM_RS = 0;
  38   1       LCM_RW = 0; 
  39   1       LCM_E = 0;
  40   1       LCM_E = 1; 
  41   1      }
  42          //读状态
  43          unsigned char  Rstatus_1602(void)
  44          {
  45   1       LCM_Data = 0xFF; 
  46   1       LCM_RS = 0;
  47   1       LCM_RW = 1;
  48   1       LCM_E = 0;     
  49   1       LCM_E = 1; 
  50   1        Delay5Ms(); 
  51   1        Delay5Ms(); Delay5Ms(); 
  52   1       Delay5Ms(); 
  53   1       return(LCM_Data); 
  54   1      }
  55          
C51 COMPILER V8.08   PARTS                                                                 06/12/2009 10:30:36 PAGE 2   

  56          void Init_1602(void) //LCM初始化
  57          {LCM_E=0;
  58   1       LCM_power = 0;
  59   1       LCM_Data = 0;
  60   1       Wcommand_1602(0x38,0); //三次显示模式设置,不检测忙信号
  61   1       Delay5Ms(); 
  62   1       Wcommand_1602(0x38,0);
  63   1       Delay5Ms(); 
  64   1       Wcommand_1602(0x38,0);
  65   1       Delay5Ms(); 
  66   1       Wcommand_1602(0x38,1); //显示模式设置,开始要求每次检测忙信号
  67   1       Wcommand_1602(0x08,1); //关闭显示
  68   1       Wcommand_1602(0x01,1); //显示清屏
  69   1       Wcommand_1602(0x06,1); // 显示光标移动设置
  70   1       Wcommand_1602(0x0C,1); // 显示开及光标设置
  71   1      }
  72          
  73          //按指定位置显示一个字符
  74          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  75          {
  76   1       Y &= 0x1;
  77   1       X &= 0xF; //限制X不能大于15,Y不能大于1
  78   1       if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
  79   1       X |= 0x80; //算出指令码
  80   1       Wcommand_1602(X, 0); //这里不检测忙信号,发送地址码
  81   1       Wdata_1602(DData);
  82   1      }
  83          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
  84          {
  85   1       unsigned char ListLength=0;
  86   1       Y &= 0x1;
  87   1       X &= 0x0F; //限制X不能大于15,Y不能大于1
  88   1       while (DData[ListLength]!='/') //若到达字串尾则退出
  89   1        {
  90   2         if (X <= 0x0F) //X坐标应小于0xF
  91   2          {
  92   3           DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
  93   3           ListLength++;
  94   3           X++;
  95   3          }
  96   2        }
  97   1      }
  98          
  99          void Display_a_passage(unsigned char code *DData)
 100          {
 101   1       unsigned char X,Y,ListLength=0;
 102   1       Y= 0x00;
 103   1       X= 0x00; //限制X不能大于15,Y不能大于1
 104   1       while (DData[ListLength]!='~') //若到达字串尾则退出
 105   1        {
 106   2         if (X <= 0x0F) //X坐标应小于0xF
 107   2          {
 108   3           DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
 109   3           ListLength++;
 110   3           X++;
 111   3          }
 112   2              else
 113   2              {
 114   3              X=0x00;
 115   3              if(Y==0x00)
 116   3              {
 117   4              Y=0x01;
C51 COMPILER V8.08   PARTS                                                                 06/12/2009 10:30:36 PAGE 3   

 118   4              }
 119   3              else  if(Y==0x01)
 120   3              {
 121   4              Delay5Ms();
 122   4              Init_1602();
 123   4              Y=0x00;
 124   4              }
 125   3              }
 126   2        }
 127   1      } 
 128          
 129          //10ms延时
 130          void Delay5Ms(void)
 131          {
 132   1        unsigned int T=3555;
 133   1        for(;T>=40;)
 134   1        {     T--;
 135   2        }
 136   1      
 137   1      }
 138          


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