久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2855|回復: 5
打印 上一主題 下一主題
收起左側

當溫度DS18B20大于20度開始工作,求大神破解

[復制鏈接]
回帖獎勵 180 黑幣 回復本帖可獲得 20 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:241873 發表于 2018-1-14 15:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//當溫度(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. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:230826 發表于 2018-1-14 20:57 | 只看該作者
什么意思?
回復

使用道具 舉報

板凳
ID:276095 發表于 2018-1-15 11:30 | 只看該作者
程序寫錯了
回復

使用道具 舉報

地板
ID:7485 發表于 2018-1-15 15:08 | 只看該作者

回帖獎勵 +20 黑幣

你用漢語表述都不能讓人看明白。是不是控溫裝置?達到預設溫度控溫裝置有輸出?
回復

使用道具 舉報

5#
ID:276214 發表于 2018-1-15 15:38 | 只看該作者
溫度大于20度開始工作?步進電機轉動10秒,休息10分鐘,在轉動嗎?
回復

使用道具 舉報

6#
ID:241873 發表于 2018-1-15 22:41 | 只看該作者
lsp1990 發表于 2018-1-15 15:38
溫度大于20度開始工作?步進電機轉動10秒,休息10分鐘,在轉動嗎?

是的 就是這樣的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰在线国产 | 少妇一区在线观看 | 日韩2020狼一二三 | 国产精品美女久久久久久久网站 | 欧美成人免费在线视频 | 精品国产鲁一鲁一区二区张丽 | 亚洲精品成人在线 | 91在线免费观看 | 91av精品| 黄色一级大片在线观看 | 日产精品久久久一区二区福利 | 男人的天堂视频网站 | 青青草视频免费观看 | 国产精品久久福利 | 亚洲国产网站 | 日本福利在线观看 | 黄在线免费观看 | 亚洲国产精品久久久久 | 毛片视频网址 | 99福利视频导航 | 国产成人精品一区二 | 特黄毛片 | 日本精品一区二区三区在线观看视频 | 欧美日韩国产精品一区二区 | 国产精品欧美精品 | 一区在线观看 | 九九热在线免费视频 | 精品91久久 | 91视频在线 | 日韩国产黄色片 | 国产免费一区二区 | 欧美激情欧美激情在线五月 | 在线免费小视频 | av夜夜操| 国产成人一区二区三区 | 国产ts人妖系列高潮 | 成人免费视频网站在线观看 | 色成人免费网站 | 怡红院怡春院一级毛片 | 欧美成人在线影院 | 国产精品久久99 |