欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 當溫度DS18B20大于20度開始工作,求大神破解 [打印本頁]

作者: 湮滅GG    時間: 2018-1-14 15:31
標題: 當溫度DS18B20大于20度開始工作,求大神破解
//當溫度(DS18B20)大于20度開始工作,工作模式(五相四線步進電機工作十秒鐘停止十分鐘的循環。)




  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit DQ=P3^7;

  6. sbit P1_0=P1^0;
  7. sbit P1_1=P1^1;
  8. sbit P1_2=P1^2;
  9. sbit P1_3=P1^3;



  10. uchar t,s,speed=50;

  11. unsigned int temp1;




  12. void delay(uint N)//廷遲時間為(24+N*16)us
  13. {
  14.   int i;
  15.         for(i=0;i<N;i++);
  16. }





  17. //步進電機
  18. void gorun(unsigned char step)

  19. {
  20.   switch(step)
  21.   {
  22.   case 0:
  23.           P1_0 = 0;
  24.     P1_1 = 0;
  25.     P1_2 = 0;
  26.     P1_3 = 0;
  27.         break;
  28.   case 1:
  29.     P1_0 = 1;
  30.     P1_1 = 0;
  31.     P1_2 = 0;
  32.     P1_3 = 0;
  33.     break;
  34.   case 2:
  35.     P1_0 = 1;
  36.     P1_1 = 1;
  37.     P1_2 = 0;
  38.     P1_3 = 0;
  39.     break;
  40.   case 3:
  41.     P1_0 = 0;
  42.     P1_1 = 1;
  43.     P1_2 = 0;
  44.     P1_3 = 0;
  45.     break;
  46.   case 4:
  47.     P1_0 = 0;
  48.     P1_1 = 1;
  49.     P1_2 = 1;
  50.     P1_3 = 0;
  51.     break;
  52.   case 5:  
  53.     P1_0 = 0;
  54.     P1_1 = 0;
  55.     P1_2 = 1;
  56.     P1_3 = 0;
  57.     break;
  58.   case 6:
  59.     P1_0 = 0;
  60.     P1_1 = 0;
  61.     P1_2 = 1;
  62.     P1_3 = 1;
  63.     break;
  64.   case 7:
  65.     P1_0 = 0;
  66.     P1_1 = 0;
  67.     P1_2 = 0;
  68.     P1_3 = 1;
  69.     break;
  70.   case 8:
  71.     P1_0 = 1;
  72.     P1_1 = 0;
  73.     P1_2 = 0;
  74.     P1_3 = 1;
  75.         break;
  76.   }
  77. }




  78. /**************************************************
  79. DS18B20初始化
  80. /********************************************/
  81. void init()
  82. {
  83.         DQ=1;
  84.         delay(0);
  85.         DQ=0;
  86.         delay(50);      //廷遲24+50*16=824us
  87.         DQ=1;
  88.         delay(3);       //48us
  89.         delay(10);      //184us
  90.         DQ=1;
  91. }

  92. void write(uchar date)
  93. {
  94.         uint i;
  95.         for (i=0; i<8; i++)
  96.         {
  97.                 DQ = 0;
  98.                 DQ = date & 0x01;    //最低位移出  最低位先寫入 //i=0:DQ=(0101 0101 &0000 0001)=0000 0001
  99.                 delay(2);                 //56us                                                                         即將最低位1 寫入,i=1        :        將0寫入.......                                
  100.                 DQ=1;         
  101.                 date >>= 1;         //右移一位
  102.         }
  103. }

  104. uchar read()
  105. {
  106.         uint i, value=0;
  107.         DQ=1;
  108.         _nop_();            //一個機器周期:(1/11.0952(即晶振頻率))*12=1.085us
  109.         for (i=0; i<8; i++)
  110.         {
  111.                 value = value>>1; //15us 之內必須讀完一位
  112.                 DQ = 0;           //設i=0 :value=0101 0101  >>1  得到:0010 1010
  113.                 _nop_();          // 讀到的DQ=1,0010 1010|1000 0000=1010 1010
  114.                 _nop_();                       // i=1:  value=01010101
  115.                 DQ = 1;                              //讀到的DQ=0,  value=01010101
  116.                 _nop_();                      //i=2:  value=0010 1010
  117.                 _nop_();  
  118.                 if (DQ)           //先讀最低位
  119.                 value|=0x80;
  120.                 delay(2);         // 56us
  121.                 DQ=1;
  122.         }
  123.         return(value);
  124. }


  125. //DS18B20數據采集轉換
  126. uint  read_wen_du()
  127. {        
  128.         uchar HB,LB,temp;
  129.         init();                                                                //  復位
  130.         write(0xcc);                                  //  跳過ROM  即不必讀64位序列號的ROM
  131.         write(0x44);                                  //  啟動溫度轉換
  132.         init();
  133.         write(0xcc);                                        //  跳過ROM  即不必讀64位序列號的ROM
  134.         write(0xbe);                                        //  讀命令
  135.         LB=read();                                    //  低八位 1011 1010
  136.         HB=read();                                    //  高八位 1111 1010
  137.         HB=HB<<4;                                                        //         1011 000
  138.         HB+=(LB&0XF0)>>4;     //  (LB&0xF0)=1011 0000   >>4 :0000 1011  +HB :1010 1011
  139.         temp=HB;
  140.         return temp;                                  //  返回溫度值
  141. }

  142. //DS18B20基本函數結束





  143. void main()
  144. {
  145.           TMOD = 0x01;
  146.     TH0 = (65536-50000)/256;
  147.     TL0 = (65536-50000)%256;
  148.                 TR0=1;
  149.                 ET0=1;
  150.                 EA=1;


  151.         while(1)
  152.                 {               
  153.                         
  154.                         temp1=read_wen_du();
  155.                         
  156.                
  157.                                 if(temp1>=20)
  158.                         
  159.                                 {

  160.                                         gorun(s);
  161.                                         EA=1;
  162.                
  163.                                 }
  164.                                 else
  165.                                 {
  166.                                        
  167.                                         s=0;
  168.                                         t=0;
  169.                                         EA=0;
  170.         
  171.                                 }
  172.                 }
  173. }

  174. //中斷服務函數
  175. void timeint(void) interrupt 1
  176. {
  177.         TR0=0;
  178.     TH0 = 254;
  179.     TL0 = 255-speed; //調速
  180.         
  181.         t++;
  182.         if(t==10)
  183.         {
  184.                
  185.                         s++;
  186.                         
  187.                         if(s>8)
  188.                         s=1;
  189.                         t=0;
  190.         }
  191.                

  192.         TR0=1;


  193. }
復制代碼




作者: changle11    時間: 2018-1-14 20:57
什么意思?
作者: dxyes    時間: 2018-1-15 11:30
程序寫錯了
作者: ahshmj    時間: 2018-1-15 15:08
你用漢語表述都不能讓人看明白。是不是控溫裝置?達到預設溫度控溫裝置有輸出?
作者: lsp1990    時間: 2018-1-15 15:38
溫度大于20度開始工作?步進電機轉動10秒,休息10分鐘,在轉動嗎?
作者: 湮滅GG    時間: 2018-1-15 22:41
lsp1990 發表于 2018-1-15 15:38
溫度大于20度開始工作?步進電機轉動10秒,休息10分鐘,在轉動嗎?

是的 就是這樣的




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1