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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7602|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

ds18b20溫度采集上位機(jī)(vc)和下位機(jī)(單片機(jī))程序源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3721 發(fā)表于 2016-6-17 01:11 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式




上位機(jī)程序,用vc寫的,帶有源代碼

ds18b20溫度采集下位機(jī)程序(51單片機(jī))
  1. #include<at89x51.h>
  2. #include"intrins.h"
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. sbit  DQ=P3^2;         
  6. unsigned int j=0;   
  7. uchar flag,a;                                                
  8.                     
  9.                                           //  延時子函數(shù)
  10. //**************************************************************/
  11. void delay(uint t)
  12. {        for (; t>0 ; t--)  ;
  13. }


  14. /************************************************************
  15. /* 產(chǎn)生復(fù)位脈沖初始化DS18B20 */
  16. void  ow_reset(void)
  17. {  char presence=1;
  18.    while(presence)
  19.    {
  20.       while(presence)
  21.      {
  22.         DQ=1;_nop_();_nop_();//從高拉倒低
  23.             DQ=0;                                       
  24.             delay(50);           //550 us
  25.             DQ=1;                                       
  26.             delay(6);            //66 us
  27.              presence=DQ;         //presence=0 復(fù)位成功,繼續(xù)下一步
  28.      }
  29.      delay(45);            //延時500 us
  30.      presence=~DQ;         
  31.    }
  32.    DQ=1;                   //拉高電平
  33. }
  34.               

  35. /************************************************************
  36. 向 1-WIRE 總線上寫一個字節(jié)**數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生寫起始信號。
  37.              15ms之內(nèi)將所需寫的位送到數(shù)據(jù)線上
  38. **************************************************************/
  39. void write_byte(uchar val)
  40. {
  41.   uchar i;
  42.   for (i=8; i>0; i--) //在15~60ms之間對數(shù)據(jù)線進(jìn)行采樣,如果是高電平就寫1,低寫0發(fā)生。           
  43.   {
  44.     DQ = 1;_nop_(); _nop_();  //在開始另一個寫周期前必須有1Us以上的高電平恢復(fù)期。               
  45.            DQ = 0;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //5us
  46.         DQ = val&0x01;   //最低位移出
  47.         delay(6) ;  //66us
  48.         val = val/2; //右移1位
  49.   }
  50.         delay(1);
  51. }
  52. /************************************************************
  53. //讀1字節(jié) //主機(jī)數(shù)據(jù)線先從高拉至低電平1us以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀信號
  54. **************************************************************/
  55. uchar read_byte (void)
  56. {
  57.   uchar i;
  58.   uchar value = 0;
  59.   for(i = 8;i>0;i--)
  60.   {        
  61.           DQ = 1;         // 給脈沖信號
  62.     _nop_(); _nop_();
  63.           value>>= 1;
  64.           DQ = 0;          // 給脈沖信號
  65.           _nop_(); _nop_(); _nop_(); _nop_();_nop_(); //4us
  66.           DQ = 1; _nop_();_nop_();_nop_();_nop_();_nop_();//5us
  67.           if(DQ)
  68.      {        value|= 0x80 ; }                                          
  69.                  delay(13); //66us 注意延時的長短,如果是delay(6) 會造成LED閃爍
  70.   }                                                                                                
  71.   DQ = 1;
  72.   return(value)        ;
  73. }



  74.   
  75. void Setting_DS18B20(void)
  76. {
  77.    ow_reset();
  78.   write_byte(0xCC);    // 跳過讀序號列號的操作
  79.   write_byte(0x4e);
  80.   
  81.   write_byte(0x64);   //100不使用DS18B20本身的溫度告警設(shè)置,為進(jìn)行轉(zhuǎn)換精度設(shè)定,湊兩個寫寄存器操作
  82.   write_byte(0x8a);   //-10
  83.   write_byte(0x7f);   //設(shè)置DS18B20 為12位轉(zhuǎn)換精度         R1,R0的值決定轉(zhuǎn)換精度         R1=R0=1對應(yīng)12位
  84. }

  85. /*--------------------------------------------------------------------------------------
  86.                               讀取溫度并完成轉(zhuǎn)化,
  87. -----------------------------------------------------------------------------------------*/
  88.    Read_Temperature()
  89. {
  90.     uchar tplsb,tpmsb;                // 溫度值低位、高位字節(jié)
  91.     uchar flag=0;
  92.    // unsigned int j=0; //暫存計算得溫度的整數(shù)部分
  93.     float tt;
  94.     ow_reset();
  95.     write_byte(0xCC); // 跳過讀序號列號的操作
  96.     write_byte(0x44); // 啟動溫度轉(zhuǎn)換
  97.     ow_reset();
  98.     write_byte(0xCC); //跳過讀序號列號的操作
  99.     write_byte(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
  100.    
  101.     tplsb=read_byte();         // 溫度值低位字節(jié)(其中低4位為二進(jìn)制的“小數(shù)”部分)
  102.     tpmsb=read_byte();          // 高位值高位字節(jié)(其中高5位為符號位
  103.     //轉(zhuǎn)換溫度

  104.     j=tpmsb;
  105.     j<<=8;
  106.     j+=tplsb;          //寫為j=j|tplsb;也可以。// 兩字節(jié)合成一個整型變量。
  107.         if(tpmsb>7)
  108.         {        
  109.                 j=(j^0xffff);//異或
  110.         j=j+1;        //如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際 溫度。
  111.     }
  112.     tt=(j*0.0625);
  113.   
  114.               
  115.         
  116.    return tt;
  117. }




  118. /*------------------------------------------------------------------------
  119.                                                         主函數(shù)
  120. --------------------------------------------------------------------*/




  121. void main()
  122. {  Setting_DS18B20();   
  123.   TMOD=0x20;
  124.   TH1=0xfd;
  125.   TL1=0xfd;
  126.   TR1=1;
  127.   REN=1;
  128.   SM0=0;
  129.   SM1=1;
  130.   EA=1;
  131.   ES=1;
  132.   while(1)
  133.   {           if(flag==1)
  134.      {         ES=0;
  135.             flag=0;
  136.             SBUF=Read_Temperature();

  137.            while(!TI);
  138.            TI=0;
  139.                 ES=1;
  140.                  
  141.          
  142.          }
  143.   
  144.   }        

  145. }
  146. void ckzd() interrupt 4
  147. {
  148.          RI=0;
  149.          P0=SBUF;
  150.          a=SBUF;
  151.          flag=1;
  152.          if(a=='b')P1=~P1;
  153.          else P1=0xff;

  154.         
  155. }

復(fù)制代碼



18b20溫度傳感器測試程序,包涵上位機(jī)源程序很下位機(jī)源程序,將18b20采集的溫度值發(fā)送給上位機(jī)顯示

18B20upanddown.rar (4.93 MB, 下載次數(shù): 228)

評分

參與人數(shù) 2黑幣 +15 收起 理由
abcymda + 10
dcs + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:56331 發(fā)表于 2016-7-1 15:51 | 只看該作者
下載看看,不錯
回復(fù)

使用道具 舉報

板凳
ID:135860 發(fā)表于 2016-8-3 11:20 | 只看該作者
學(xué)習(xí)學(xué)習(xí)了
回復(fù)

使用道具 舉報

地板
ID:96218 發(fā)表于 2016-12-23 21:09 | 只看該作者
不錯學(xué)習(xí)一下
回復(fù)

使用道具 舉報

5#
ID:185829 發(fā)表于 2017-5-17 16:23 | 只看該作者
下載學(xué)習(xí)一下,謝謝
回復(fù)

使用道具 舉報

6#
ID:218141 發(fā)表于 2017-7-8 17:05 | 只看該作者
謝謝大佬Orz
回復(fù)

使用道具 舉報

7#
ID:161033 發(fā)表于 2018-1-15 22:20 | 只看該作者
感謝分享,先下來學(xué)習(xí)。
回復(fù)

使用道具 舉報

8#
ID:260557 發(fā)表于 2018-5-9 09:26 | 只看該作者
贊一個!
回復(fù)

使用道具 舉報

9#
ID:734666 發(fā)表于 2020-4-24 10:32 | 只看該作者
上位機(jī)的呢?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本精品网站 | 日韩欧美三区 | 国产精品一区二区三 | 欧美三级电影在线播放 | 午夜在线观看视频 | 午夜久草 | 三级国产三级在线 | 亚洲精品欧美一区二区三区 | 色综网 | 四虎影院久久 | 亚洲精品在线免费 | 国产精品69久久久久水密桃 | 成人精品一区二区三区四区 | 极品久久 | 99久久久久 | 色综合av| 亚洲精品视频在线看 | av性色全交蜜桃成熟时 | 欧美国产一区二区 | 欧美性网 | 亚洲视频在线观看免费 | 午夜精品久久久 | 国产在线永久免费 | 青青久久 | 祝你幸福电影在线观看 | 精品视频在线观看 | 欧美高清视频一区 | 插插插干干干 | 久草视频观看 | 91av在线电影 | 中文字幕一区在线观看视频 | 精品中文字幕一区 | 欧美日本在线观看 | 一区二区三区视频 | 亚洲精品一区二区二区 | 丁香综合 | 欧美日韩综合 | 久久久久久亚洲国产精品 | 小视频你懂得 | 黄色免费在线观看 | 2018天天干天天操 |