亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)最小系統(tǒng)+DS18B20進(jìn)行溫度測量試驗(yàn) 串口發(fā)送溫度結(jié)果

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76686 發(fā)表于 2015-4-11 22:04 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
       這個用單片機(jī)最小系統(tǒng)+DS18B20進(jìn)行溫度測量試驗(yàn),所需要器材:一塊單片機(jī)最小系統(tǒng)、一只DS18B20數(shù)字溫度傳感器,測試結(jié)果經(jīng)串口發(fā)送到PC機(jī),通過電腦串口調(diào)試軟件顯示測量結(jié)果,測量范圍-55-125度,保留一位小數(shù)。關(guān)于單片機(jī)最小系統(tǒng)的制作,在本空間有詳細(xì)介紹,本文就不作介紹,相關(guān)的原理圖、PCB圖、元件清單等內(nèi)容有,這里就不作介紹了,需要制作的愛好者可參考本空間的手把手制作單片機(jī)最小系統(tǒng)。這里只給出單片機(jī)最小系統(tǒng)+DS18B20進(jìn)行溫度測量試驗(yàn)的具體程序的壓縮包,需要的可以自己下載。需要說明的是,DS18B20的1腳接地、數(shù)據(jù)端口(2腳)是直接焊接在單片機(jī)最小系統(tǒng)板上的單片機(jī)P2.0口上、3腳接+5伏。DS18B20的2腳接正電源的4.7K的電阻可以省去,原因是單片機(jī)內(nèi)部是自己帶有上接電阻。下面是試驗(yàn)的相關(guān)圖片。

       下載: 用單片機(jī)最小系統(tǒng) DS18B20進(jìn)行溫度測量試驗(yàn)程序.rar (389.53 KB, 下載次數(shù): 394)       
串口調(diào)試助手等單片機(jī)工具軟件的下載地址:http://www.denmoz.com/mcudown/


源代碼:
  1. //單片機(jī)使用AT89C51晶振11.0592MHz
  2. //讀取DS18B20上的數(shù)據(jù),發(fā)送至電腦
  3. //數(shù)據(jù)格式:符號、十位、個位、小數(shù)、換行符
  4. //分別發(fā)送。  串口:(9600,N,8,1)
  5. #include<at89x51.h>

  6. #define uchar unsigned char
  7. #define uint unsigned int

  8. #define DQ P2_0                          //定義P0.0口為單總線數(shù)據(jù)口

  9. uchar code st[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};//小數(shù)部分轉(zhuǎn)換
  10. bit stop=1;
  11. uchar pe=0;                                        //發(fā)送指針
  12. uchar t=0;                                        //延時計(jì)數(shù)
  13. uchar rad;                                        //溫度數(shù)值
  14. uchar disply[]={'0','0','0','.','0','\n'};//溫度極性,十位,個位,小數(shù)

  15. void temp(uchar aa);
  16. void rest(void);
  17. void write(uchar da);
  18. void read(void);
  19. void hand(void);
  20. void disp(void);
  21. void timer(void);

  22. void temp(uchar aa)
  23. {
  24.         while(--aa);                        //每執(zhí)行一次2uS
  25. }

  26. void rest(void)                                //返回"1"時表示有設(shè)備應(yīng)答,復(fù)位成功
  27. {
  28.         DQ=1;
  29.         DQ=0;
  30.           temp(225);                                //大于480us低電平產(chǎn)生復(fù)位
  31.           DQ=1;
  32.           temp(150);
  33. }

  34. void write(uchar da)
  35. {
  36.         uchar wb=0x01,t;
  37.         for(t=0;t<8;t++)
  38.           {
  39.             if(da&wb)
  40.                  {
  41.                          DQ=0;
  42.                          temp(1);
  43.                          DQ=1;
  44.                          temp(17);
  45.                  }
  46.                  else
  47.                  {
  48.                          DQ=0;
  49.                          temp(12);
  50.                          DQ=1;
  51.                          temp(6);
  52.                  }
  53.                   wb=wb<<1;
  54.           }
  55. }

  56. void read(void)
  57. {
  58.         uchar sb=0x01,s,tes;
  59.         bit pdt;
  60.         rad=0;
  61.         for(s=0;s<8;s++)
  62.         {
  63.                 DQ=0;
  64.                 DQ=1;
  65.                 temp(2);
  66.                 pdt=DQ;
  67.                 temp(18);
  68.                   if(pdt)
  69.                   {
  70.                           rad=rad|sb;
  71.                   }
  72.                 sb=sb<<1;
  73.                 tes=rad;
  74.         }
  75. }

  76. void hand(void)
  77. {
  78.         uchar et,lcm,hcm;
  79.         uint cm;
  80.         rest();
  81.         write(0xcc);                        //跳過
  82.         write(0x44);                        //啟動轉(zhuǎn)換
  83.         timer();                                //延時500ms
  84.         rest();
  85.         write(0xcc);                        //跳過
  86.         write(0xbe);                        //讀取命令
  87.         read();
  88.         lcm=rad;
  89.         read();
  90.         hcm=rad;
  91.         cm=hcm;
  92.         cm=cm<<8;
  93.         cm=cm|lcm;
  94.           if(cm&0xf000)
  95.           {
  96.                   cm=~cm;
  97.                   cm++;
  98.                   disply[0]='-';
  99.           }
  100.           else
  101.           {
  102.                   disply[0]=' ';
  103.           }
  104.         et=cm&0x000f;
  105.         disply[4]=st[et]|0x30;        //截取后四位,查表轉(zhuǎn)換后,填入顯示緩沖區(qū)
  106.         et=cm>>4;
  107.           if(et>99)
  108.           {
  109.                   disply[0]='1';
  110.                   et=et-100;
  111.           }
  112.         disply[1]=(et/10)|0x30;        //取溫度整數(shù)
  113.         disply[2]=(et%10)|0x30;
  114.         stop=0;
  115. }

  116. void pc(void) interrupt 4         //串口中斷
  117. {
  118.           if(TI)
  119.           {
  120.             if(pe>5)                        //發(fā)送完成
  121.                  {
  122.                          pe=0;
  123.                          stop=1;
  124.                  }
  125.                  else                                //繼續(xù)發(fā)送剩余部分
  126.                  {
  127.                          ACC=disply[pe];
  128.                          SBUF=ACC;
  129.                          pe++;
  130.                  }
  131.                   TI=0;
  132.           }
  133. }

  134. void disp(void)
  135. {
  136.         stop=0;
  137.         ACC=disply[0];
  138.         SBUF=ACC;
  139.         pe++;
  140. }

  141. void tep(void) interrupt 1         //定時器0中斷
  142. {
  143.         TH0=0x4c;
  144.         TL0=0x00;
  145.         t++;
  146. }

  147. void timer(void)                        //延時500ms
  148. {
  149.         TR0=1;
  150.           while(t<50);                        //啟動定時器,等待10次中斷
  151.         TR0=0;
  152.         t=0;
  153.         TH0=0x4c;
  154.         TL0=0x00;
  155. }

  156. void main(void)
  157. {
  158.         TMOD=0x21;                                //定時器1模式2;定時器0模式1
  159. //        TH1=0xfd;
  160. //        TL1=0xfd;                                //波特率9600,11.0592MHz晶振

  161.         TH1=0xE6;
  162.         TL1=0xE6;                                //波特率1200,12MHz晶振


  163.         TH0=0x4c;
  164.         TL0=0x00;                                //定時器初值,50ms
  165.         SCON=0x50;                                //串口模式1,允許接受,單機(jī)通訊0x90
  166.         PCON=0;
  167.         IE=0x92;                                //開所有中斷,開串口中斷,開T0中斷
  168.         TR1=1;                                        //啟動T1,波特率發(fā)生器
  169.         TR0=0;                                        //暫停T0
  170.         disp();
  171.           while(1)
  172.           {
  173.             while(!stop);
  174.                   hand();
  175.                   disp();
  176.         }
  177. }
復(fù)制代碼



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

使用道具 舉報

沙發(fā)
ID:91358 發(fā)表于 2015-9-30 09:50 | 只看該作者
下載看看
回復(fù)

使用道具 舉報

板凳
ID:97647 發(fā)表于 2015-11-29 23:01 | 只看該作者
正好需要呢,下來參考下,感謝樓主
回復(fù)

使用道具 舉報

地板
ID:97647 發(fā)表于 2015-11-30 23:20 | 只看該作者
樓主的程序,溫度轉(zhuǎn)換,為什么不乘以0.0625呢
回復(fù)

使用道具 舉報

5#
ID:127925 發(fā)表于 2016-6-24 11:32 | 只看該作者
PC端如何拿到10禁止數(shù)據(jù)可以詳細(xì)點(diǎn)嘛
回復(fù)

使用道具 舉報

6#
ID:169940 發(fā)表于 2017-3-11 19:40 | 只看該作者
謝謝,很不錯,真好
回復(fù)

使用道具 舉報

7#
ID:194301 發(fā)表于 2017-5-17 16:30 | 只看該作者
謝,很不錯,真好
回復(fù)

使用道具 舉報

8#
ID:205824 發(fā)表于 2017-6-19 22:49 | 只看該作者
我用ds1820b 開串口中斷后讀出溫度不準(zhǔn),應(yīng)該是串口中斷擾亂了ds1820b的時序,這個怎么解決
回復(fù)

使用道具 舉報

9#
ID:261821 發(fā)表于 2017-12-15 00:26 來自觸屏版 | 只看該作者
要是雙機(jī)通信的話,接收方的程序該怎么樣呢?
回復(fù)

使用道具 舉報

10#
ID:267673 發(fā)表于 2017-12-29 11:43 | 只看該作者
你好,這個程序我為什么接收不到溫度呢,不準(zhǔn)確,一直是-0.01是怎么回事,能幫我看看嗎?1397195833,謝謝啦
回復(fù)

使用道具 舉報

11#
ID:130345 發(fā)表于 2017-12-31 14:38 | 只看該作者
感謝樓主,學(xué)習(xí)了
回復(fù)

使用道具 舉報

12#
ID:146041 發(fā)表于 2018-1-1 23:02 | 只看該作者
學(xué)習(xí)一下,參考
回復(fù)

使用道具 舉報

13#
ID:151314 發(fā)表于 2018-11-7 00:24 | 只看該作者
學(xué)習(xí)一下,參考
回復(fù)

使用道具 舉報

14#
ID:89835 發(fā)表于 2018-11-7 12:37 | 只看該作者
我的學(xué)生做過溫濕度計(jì),不過不怎么精細(xì)
回復(fù)

使用道具 舉報

15#
ID:326450 發(fā)表于 2018-11-8 16:36 | 只看該作者
新手前來學(xué)習(xí)
回復(fù)

使用道具 舉報

16#
ID:229361 發(fā)表于 2018-12-29 14:44 | 只看該作者
很不錯,謝謝樓主的分享了
回復(fù)

使用道具 舉報

17#
ID:194581 發(fā)表于 2019-5-6 18:11 | 只看該作者
thank you mvery much
回復(fù)

使用道具 舉報

18#
ID:379917 發(fā)表于 2019-10-5 18:04 | 只看該作者
下來看看,謝謝了
回復(fù)

使用道具 舉報

19#
ID:755548 發(fā)表于 2020-5-19 11:27 | 只看該作者
謝謝參考
回復(fù)

使用道具 舉報

20#
ID:858367 發(fā)表于 2021-1-23 12:44 | 只看該作者
謝謝分享,共同進(jìn)步
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表