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

📄 clock.lst

📁 单片机 89s52+ds12b887+ds18b20时钟温度程序.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   CLOCK                                                                 12/02/2008 10:41:38 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CLOCK
OBJECT MODULE PLACED IN clock.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE clock.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          以写内容:初始化液晶后读时钟将时钟写入液晶,按键中断中setupint=1时读取
   3          年数据然后写向0x80+0x40;读取液晶值已经完成。08-11-29
   4          加入按键设置时间共五键设置向上向下完成取消加入温度DS18B20和时间限制跟写
   5          入程序08-12-02
   6          
   7          */
   8          #include <reg52.h>
   9          #define uchar unsigned char
  10          #define uint unsigned int
  11          sbit rs=P1^0;
  12          sbit lcde=P1^1;
  13          sbit lcdrw=P1^6;
  14          sbit dscs=P1^2;
  15          sbit dsas=P1^3;
  16          sbit dsrw=P1^4;
  17          sbit dsds=P1^5;
  18          sbit complete=P3^4;
  19          sbit cancle=P3^5;
  20          sbit up=P3^0;
  21          sbit down=P3^1;
  22          sbit setupinit=P3^2;
  23          sbit DQ=P3^7;//ds18b20与单片机连接口
  24          sbit dacs=P1^7;
  25          sbit darw=P3^6;
  26          uchar code nyr[]=" 20  -  -";
  27          uchar code sfm[]="  :  :       . C";
  28          uchar code addnyr[]={0x83,0x86,0x89,0x8c,0xc0,0xc3,0xc6};
  29          uchar code addc[]={0x09,0x08,0x07,0x06,0x04,0x02,0x00};
  30          uchar code hightime[]={99,12,31,7,23,59,59};
  31          uchar code week[]="SunMonTueWedThuFriSta";
  32          uchar data clockdata[6];
  33          uchar setupint,readc;
  34          uchar data disdata[5];
  35          uint tvalue;//温度值
  36          uchar tflag;//温度正负标志
  37          void delay(uint x)
  38          {
  39   1              uchar j;
  40   1              uint i;
  41   1              for(i=x;i>0;i--)
  42   1              for(j=110;j>0;j--);
  43   1      }
  44          /***********************液晶程序*******************************/
  45          void Lcd_write_com(uchar command)
  46          {
  47   1               lcdrw=0;
  48   1               rs=0;
  49   1               lcde=0;
  50   1               P0=command;
  51   1               delay(5);
  52   1               lcde=1;
  53   1               delay(5);
  54   1               lcde=0;
  55   1      }
C51 COMPILER V8.02   CLOCK                                                                 12/02/2008 10:41:38 PAGE 2   

  56          uchar Lcd_readtime(uchar radd)
  57          {
  58   1              uchar rclock,rclock1,rclock2;
  59   1              Lcd_write_com(radd);
  60   1              rs=1;
  61   1              lcdrw=1;
  62   1              lcde=1;
  63   1              P0=0xff;
  64   1              delay(5);
  65   1              rclock1=P0;
  66   1              delay(5);
  67   1      
  68   1              Lcd_write_com(radd+1);
  69   1              rs=1;
  70   1              lcdrw=1;
  71   1              lcde=1;
  72   1              P0=0xff;
  73   1              delay(5);
  74   1              rclock2=P0;
  75   1              delay(5);
  76   1              rclock=(rclock1-0x30)*10+(rclock2-0x30);
  77   1              while(setupinit==0)
  78   1              delay(10);         // 消抖
  79   1              delay(50);
  80   1              EA=1;
  81   1              return rclock;
  82   1      }
  83          void Lcd_write_data(uchar date)
  84          {
  85   1              lcdrw=0;
  86   1              rs=1;
  87   1              lcde=0;
  88   1              P0=date;
  89   1              delay(5);
  90   1              lcde=1;
  91   1              delay(5);
  92   1              lcde=0;
  93   1      }
  94          void init()
  95          {
  96   1              uchar i;
  97   1              EA=1;
  98   1              EX0=1;
  99   1              IT0=1;
 100   1              Lcd_write_com(0x38);
 101   1              Lcd_write_com(0x08);
 102   1              Lcd_write_com(0x01);
 103   1              Lcd_write_com(0x06);
 104   1              Lcd_write_com(0x0c);
 105   1              Lcd_write_com(0x80);
 106   1              for(i=0;i<9;i++)
 107   1              {
 108   2                      Lcd_write_data(nyr[i]);
 109   2              }
 110   1                      Lcd_write_com(0x80+0x40);
 111   1              for(i=0;i<16;i++)
 112   1              {
 113   2                      Lcd_write_data(sfm[i]);
 114   2              }       
 115   1      }
 116          uchar ds12887_read(uchar add)
 117          {
C51 COMPILER V8.02   CLOCK                                                                 12/02/2008 10:41:38 PAGE 3   

 118   1              uchar dsdate;
 119   1              dsas=1;
 120   1              dsds=1;
 121   1              dsrw=1;
 122   1              dscs=0;
 123   1              P2=add;
 124   1              dsas=0;
 125   1              dsds=0;
 126   1              P2=0xff;
 127   1              dsdate=P2;
 128   1              dsds=1;
 129   1              dsas=1;
 130   1              dscs=1;
 131   1              return dsdate;
 132   1      }
 133          void ds12887_writeLCD()
 134          {
 135   1              uchar temp,si,ge,i,j;
 136   1              for(i=0;i<7;i++)
 137   1              {
 138   2                      temp=ds12887_read(addc[i]);
 139   2                      si=temp/10;
 140   2                      ge=temp%10;
 141   2                      Lcd_write_com(addnyr[i]);
 142   2                      if(i==3)
 143   2                      {
 144   3                              for(j=0;j<3;j++)
 145   3                              {
 146   4                              Lcd_write_data(week[(ge-1)*3+j]);
 147   4                              }
 148   3                      }
 149   2                      else
 150   2                      {
 151   3                      Lcd_write_data(0x30+si);
 152   3                      Lcd_write_data(0x30+ge);
 153   3                      }
 154   2              }
 155   1              
 156   1      }       
 157          void ds12887_keys_num(uchar cadd,uchar num)
 158          {
 159   1              uchar r1,r2,j;
 160   1              r1=num/10;
 161   1              r2=num%10;
 162   1              if(cadd==0x8c)
 163   1              {
 164   2                      Lcd_write_com(cadd);
 165   2                      for(j=0;j<3;j++)
 166   2                      {
 167   3                              Lcd_write_data(week[(r2-1)*3+j]);
 168   3      
 169   3                      }
 170   2                      Lcd_write_com(cadd+1);
 171   2              }
 172   1              else
 173   1              {
 174   2                      Lcd_write_com(cadd);
 175   2                      Lcd_write_data(0x30+r1);
 176   2                      Lcd_write_data(0x30+r2);
 177   2                      Lcd_write_com(cadd+1);
 178   2              }
 179   1      }
C51 COMPILER V8.02   CLOCK                                                                 12/02/2008 10:41:38 PAGE 4   

 180          void ds12887_write()
 181          {
 182   1              uchar i;
 183   1      //设置禁止更新时间
 184   1                      dscs=0;
 185   1                      dsas=1;
 186   1                      dsds=1;
 187   1                      dsrw=1;
 188   1                      P2=0x0b;
 189   1                      dsas=0;                                                           
 190   1                      dsrw=0;
 191   1                      P2=0x06;
 192   1                      dsrw=1;
 193   1                      dsas=1;
 194   1                      dscs=1;
 195   1              for(i=0;i<7;i++)
 196   1              {
 197   2                      dsas=1;
 198   2                      dsds=1;
 199   2                      dsrw=1;
 200   2                      dscs=0;
 201   2                      P2=addc[i];
 202   2                      dsas=0;                                                           
 203   2                      dsrw=0;
 204   2                      P2=clockdata[i];
 205   2                      dsrw=1;
 206   2                      dsas=1;
 207   2                      dscs=1;
 208   2              }
 209   1      //开始更新时间

⌨️ 快捷键说明

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