如何通过开关控制DS18B20的预制(20度)的温度

2019-07-16 06:41发布

本帖最后由 achieve 于 2011-10-26 16:42 编辑

哪位仁兄知道如何通过开关来控制DS18B20的预制(20度)的温度?能给个程序吗?谢谢了
我的开关是一直按着的,如何通过不按一下开关就能预制一个温度(20度),给个预制部分的程序,看到的帮助一下,谢谢了
1.jpg

2.jpg

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
suae
1楼-- · 2019-07-16 09:29
什么开关是一直按着的?
什么通过不按一下开关就能预制一个温度(20度)?
没怎么听懂..
suae
2楼-- · 2019-07-16 11:24
 精彩回答 2  元偷偷看……
achieve
3楼-- · 2019-07-16 14:13
看看我的程序吧,帮忙分析下:
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit s1=P1^2;
  6. sbit ds=P2^2;
  7. sbit beep=P2^3;
  8. sbit led0=P1^0;
  9. sbit led1=P1^1;
  10. uint temp;
  11. float f_temp;
  12. uint warn_l=100;
  13. uint warn_h=300;

  14. uchar code table[]=
  15. {   
  16.     0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
  17. };

  18. void delay(uint z)
  19. {
  20.    uint x,y;
  21.    for(x=z;x>0;x--)
  22.       for(y=65;y>0;y--);
  23. }

  24. void dsreset()
  25. {
  26.    uint i;
  27.    ds=0;
  28.    i=103;
  29.    while(i>0)
  30.       i--;
  31.    ds=1;
  32.    i=4;
  33.    while(i>0)
  34.       i--;
  35. }

  36. bit tempreadbit()
  37. {
  38.    uint i;
  39.    bit dat;
  40.    ds=0;
  41.    i++;
  42.    ds=1;
  43.    i++;
  44.    i++;
  45.    dat=ds;
  46.    i=8;
  47.    while(i>0)
  48.       i--;
  49.    return dat;
  50. }

  51. uchar tempread()
  52. {
  53.    uchar i,j,dat;
  54.    dat=0;
  55.    for(i=1;i<=8;i++)
  56.    {
  57.       j=tempreadbit();
  58.       dat=(j<<7)|(dat>>1);
  59.    }
  60.    return dat;
  61. }

  62. void tempwritebyte(uchar dat)
  63. {
  64.    uint i;
  65.    uchar j;
  66.    bit testb;
  67.    for(j=1;j<=8;j++)
  68.    {
  69.        testb=dat&0x01;
  70.        dat=dat>>1;
  71.        if(testb)
  72.        {
  73.           ds=0;
  74.           i++;
  75.           i++;
  76.           ds=1;
  77.           i=8;
  78.           while(i>0)
  79.               i--;
  80.        }
  81.        else
  82.        {
  83.           ds=0;
  84.           i=8;
  85.           while(i>0)
  86.               i--;
  87.           ds=1;
  88.           i++;
  89.           i++;
  90.        }
  91.    }
  92. }

  93. void tempchange()
  94. {
  95.    dsreset();
  96.    delay(1);
  97.    tempwritebyte(0xcc);
  98.    tempwritebyte(0x44);
  99. }

  100. uint get_temp()
  101. {
  102.    uchar a,b;
  103.    dsreset();
  104.    delay(1);
  105.    tempwritebyte(0xcc);
  106.    tempwritebyte(0xbe);
  107.    a=tempread();
  108.    b=tempread();
  109.    temp=b;
  110.    temp<<=8;
  111.    temp=temp|a;
  112.    f_temp=temp*0.0625;
  113.    temp=f_temp*10+0.5;
  114.    f_temp=f_temp+0.05;
  115.    return temp;
  116. }


  117. void dis_temp(uint t)
  118. {
  119.         uint m;
  120.         m=t/100;
  121.     P3=0xfe;
  122.     P0=table[m];
  123.     delay(1);
  124.         m=t%100/10;
  125.     P3=0xfd;
  126.     P0=table[m]|0x80;
  127.     delay(1);
  128.     m=t%100%10;
  129.     P3=0xfb;
  130.     P0=table[m];
  131. }

  132. void main()
  133. {
  134.         uint i;
  135.         if(s1==0)
  136.         {
  137.          for(i=10;i>0;i--)
  138.           {
  139.                  dis_temp(10);
  140.           }
  141.         }
  142.         while(1)
  143.         {
  144.                 tempchange();
  145.                 if(s1==0)
  146.         {
  147.          for(i=100;i>0;i--)
  148.           {
  149.                  dis_temp(200);

  150.           }
  151.         }
  152.             else if(temp<=warn_l)
  153.             {
  154.           P1=0xfe;
  155.               beep=0;
  156.               delay(1);
  157.               beep=1;
  158.           for(i=10;i>0;i--)
  159.           {
  160.                  dis_temp(get_temp());
  161.           }
  162.             }
  163.                 else if(temp>=warn_h)
  164.                 {
  165.                         P1=0xfd;
  166.                         beep=0;
  167.                         delay(1);
  168.                         beep=1;
  169.                         for(i=10;i>0;i--)
  170.                         {
  171.                                 dis_temp(get_temp());
  172.                         }
  173.                 }
  174.             else
  175.             {
  176.               P1=0xff;
  177.               for(i=10;i>0;i--)
  178.           {
  179.                  dis_temp(get_temp());
  180.           }
  181.             }
  182.       
  183.         }
  184. }
复制代码


3.jpg
suae
4楼-- · 2019-07-16 16:17
这么乱,哪有心情和时间帮你看啊...
achieve
5楼-- · 2019-07-16 18:38
本帖最后由 achieve 于 2011-10-26 16:51 编辑

看这里就够了
这程序能不能预制一个初始温度?
4.jpg
suae
6楼-- · 2019-07-16 20:36
初始化不会啊?你设定不就OK了
还写成这样...谁教你的啊/...

一周热门 更多>