ds08b20驱动程序

源代码在线查看: b.lst

软件大小: 21 K
上传用户: ytcehui
关键词: 08b b20 ds 08
下载地址: 免注册下载 普通下载 VIP

相关代码

				C51 COMPILER V7.50   B                                                                     10/16/2008 21:44:09 PAGE 1   
				
				
				C51 COMPILER V7.50, COMPILATION OF MODULE B
				OBJECT MODULE PLACED IN b.OBJ
				COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE b.c BROWSE DEBUG OBJECTEXTEND
				
				line level    source
				
				   1          /*****************************************
				   2          
				   3          说明:
				   4          用短路子短接 P0 口、P2.4-P2.6、P3.7 的接线柱
				   5          下载完程序通电后,数码管的后三位会显示测得到温度值
				   6          当周围温度发生变化时,显示的温度值也会发生相应变化
				   7          测温范围为 -55℃ ~ 125℃
				   8          以 0.5℃ 递增
				   9          
				  10          中国矿业大学    电子协会
				  11              刘滨   2008年9月
				  12          
				  13          *****************************************/
				  14          #include 
				  15          #define uchar unsigned char
				  16          #define uint unsigned int
				  17          
				  18          uchar P0_scan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
				  19          uchar dis[3];
				  20          uchar TEMP;
				  21          
				  22          //管脚定义
				  23          sbit dq = P3^7;
				  24          
				  25          
				  26          /*************** 短延时 ****************/
				  27          void delay(uint s)
				  28          {
				  29   1              while(s--);
				  30   1      }
				  31          
				  32          /**************** 延时1ms *****************/
				  33          void delay_1ms(unsigned int t)
				  34          {
				  35   1        unsigned char i,j;
				  36   1        for(t;t>0;t--)
				  37   1        {
				  38   2              for(i=34;i>0;i--)
				  39   2                for(j=13;j>0;j--);
				  40   2        }
				  41   1      }
				  42          
				  43          /****************** DS18B20 *********************/
				  44          void rst(void)
				  45          {
				  46   1              dq=1;
				  47   1              delay(8);
				  48   1              dq=0;
				  49   1              delay(80);
				  50   1              dq=1;
				  51   1              delay(14);
				  52   1              delay(20);
				  53   1      }
				  54          
				  55          uchar readbyte(void)
				C51 COMPILER V7.50   B                                                                     10/16/2008 21:44:09 PAGE 2   
				
				  56          {
				  57   1              uchar i=0;
				  58   1              uchar date=0;
				  59   1              for(i=8;i>0;i--)
				  60   1              {
				  61   2              dq=0;
				  62   2              date>>=1;
				  63   2              dq=1;
				  64   2              if(dq)  date|=0x80;
				  65   2              delay(4);
				  66   2              }
				  67   1              return(date);
				  68   1      }
				  69          
				  70          void writebyte(uchar date)
				  71          {
				  72   1              uchar i=0;
				  73   1              for(i=8;i>0;i--)
				  74   1              {
				  75   2              dq=0;
				  76   2              dq=date&0x01;
				  77   2              delay(5);
				  78   2              dq=1;
				  79   2              date>>=1;
				  80   2              }
				  81   1      }
				  82          uchar readtemp(void)
				  83          {
				  84   1              uchar a=0;
				  85   1              uchar b=0;
				  86   1              uchar temp1;
				  87   1              uint t=0;
				  88   1              float tt;
				  89   1              rst();
				  90   1              writebyte(0xcc);
				  91   1              writebyte(0x44);
				  92   1              rst();
				  93   1              writebyte(0xcc);
				  94   1              writebyte(0xbe);
				  95   1              a=readbyte();
				  96   1              b=readbyte();
				  97   1              t=b;
				  98   1              t				  99   1              t=t|a;
				 100   1              tt=t*0.0625;
				 101   1              temp1=(uchar)tt;
				 102   1              return(temp1);
				 103   1      }
				 104          
				 105          /************************ 主函数 *************************/
				 106          void main()
				 107          {       
				 108   1              while(1)
				 109   1              {
				 110   2                      TEMP = readtemp()-5;    //读出温度值
				 111   2                      dis[0]=TEMP%10;dis[1]=(TEMP/10)%10;dis[2]=TEMP/100;
				 112   2                              
				 113   2                      P0 = P0_scan[dis[0]];
				 114   2                      P2 = 0xf7;
				 115   2                      delay_1ms(5);
				 116   2                      P2 = 0xff;
				 117   2      
				C51 COMPILER V7.50   B                                                                     10/16/2008 21:44:09 PAGE 3   
				
				 118   2                      P0 = P0_scan[dis[1]];
				 119   2                      P2 = 0xfb;
				 120   2                      delay_1ms(5);
				 121   2                      P2 = 0xff;
				 122   2      
				 123   2                      P0 = P0_scan[dis[2]];
				 124   2                      P2 = 0xfd;
				 125   2                      delay_1ms(5);
				 126   2                      P2 = 0xff;
				 127   2              }
				 128   1      }
				
				
				MODULE INFORMATION:   STATIC OVERLAYABLE
				   CODE SIZE        =    285    ----
				   CONSTANT SIZE    =   ----    ----
				   XDATA SIZE       =   ----    ----
				   PDATA SIZE       =   ----    ----
				   DATA SIZE        =     14    ----
				   IDATA SIZE       =   ----    ----
				   BIT SIZE         =   ----    ----
				END OF MODULE INFORMATION.
				
				
				C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
							

相关资源