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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

STM32F1與DS18B20仿真監(jiān)測(cè)溫度,開(kāi)始仿真后,要等一會(huì)才可以讀出準(zhǔn)確溫度是怎么回事?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用Proteus仿真時(shí),stm32f103R6在讀取 ds18b20 的溫度時(shí),溫度總是過(guò)一會(huì)才可以讀出準(zhǔn)確溫度,但是dht11在仿真時(shí)就可以直接讀出有沒(méi)有知道原因的大佬指點(diǎn)一下

如下圖所示

未顯示準(zhǔn)確溫度


顯示準(zhǔn)確溫度

監(jiān)測(cè)ds18b20單片機(jī)代碼:
  1. #include "ds18b20.h"
  2. #include "delay.h"

  3. void DS18B20_Rst(void)
  4. {                 
  5.         DS18B20_IO_OUT();         //SET PG11 OUTPUT
  6.     DS18B20_DQ_OUT=0
  7.     my_delay_us(1200);
  8.     DS18B20_DQ_OUT=1;         //DQ=1
  9.         my_delay_us(20);
  10. }
  11. u8 DS18B20_Check(void)
  12. {   
  13.         u8 retry=0;
  14.         DS18B20_IO_IN();        //SET PG11 INPUT
  15.     while (DS18B20_DQ_IN&&retry<200)
  16.         {
  17.                 retry++;
  18.                 my_delay_us(5);
  19.         };
  20.         if(retry>=200)return 1;
  21.         else retry=0;
  22.     while (!DS18B20_DQ_IN&&retry<240)
  23.         {
  24.                 retry++;
  25.                 my_delay_us(5);
  26.         };
  27.         if(retry>=240)return 1;            
  28.         return 0;
  29. }
  30. u8 DS18B20_Read_Bit(void)         
  31. {
  32.     u8 data;
  33.         DS18B20_IO_OUT();        //SET PG11 OUTPUT
  34.     DS18B20_DQ_OUT=0;
  35.         my_delay_us(4);
  36.     DS18B20_DQ_OUT=1;
  37.         DS18B20_IO_IN();        //SET PG11 INPUT
  38.         my_delay_us(30);
  39.         if(DS18B20_DQ_IN)data=1;
  40.     else data=0;         
  41.     my_delay_us(140);
  42.     return data;
  43. }
  44. u8 DS18B20_Read_Byte(void)     
  45. {        
  46.     u8 i,j,dat;
  47.     dat=0;
  48.         for (i=1;i<=8;i++)
  49.         {
  50.         j=DS18B20_Read_Bit();
  51.         dat=(j<<7)|(dat>>1);
  52.     }                                                   
  53.     return dat;
  54. }
  55. void DS18B20_Write_Byte(u8 dat)     
  56. {            
  57.     u8 j;
  58.     u8 testb;
  59.         DS18B20_IO_OUT();        //SET PG11 OUTPUT;
  60.     for (j=1;j<=8;j++)
  61.         {
  62.         testb=dat&0x01;
  63.         dat=dat>>1;
  64.         if (testb)
  65.         {
  66.             DS18B20_DQ_OUT=0;        // Write 1
  67.             my_delay_us(4);                           
  68.             DS18B20_DQ_OUT=1;
  69.             my_delay_us(140);            
  70.         }
  71.         else
  72.         {
  73.             DS18B20_DQ_OUT=0;        // Write 0
  74.             my_delay_us(140);            
  75.             DS18B20_DQ_OUT=1;
  76.             my_delay_us(4);                          
  77.         }
  78.     }
  79. }
  80. void DS18B20_Start(void)
  81. {                                                                  
  82.     DS18B20_Rst();           
  83.         DS18B20_Check();         
  84.     DS18B20_Write_Byte(0xcc);        // skip rom
  85.     DS18B20_Write_Byte(0x44);        // convert
  86. }
  87. u8 DS18B20_Init(void)
  88. {
  89.          GPIO_InitTypeDef  GPIO_InitStructure;
  90.          
  91.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE)
  92.         
  93.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                //PORTC.11 íÆíìêä3ö
  94.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  
  95.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  96.          GPIO_Init(GPIOC, &GPIO_InitStructure);

  97.          GPIO_SetBits(GPIOC,GPIO_Pin_11);    //êä3ö1

  98.         DS18B20_Rst();

  99.         return DS18B20_Check();
  100. }
  101. short DS18B20_Get_Temp(void)
  102. {
  103.     u8 temp;
  104.     u8 TL,TH;
  105.         short tem;
  106.     DS18B20_Start ();                          // ds1820 start convert
  107.     DS18B20_Rst();
  108.     DS18B20_Check();         
  109.     DS18B20_Write_Byte(0xcc);        // skip rom
  110.     DS18B20_Write_Byte(0xbe);        // convert            
  111.     TL=DS18B20_Read_Byte();         // LSB   
  112.     TH=DS18B20_Read_Byte();         // MSB  
  113.                      
  114.     if(TH>7)
  115.     {
  116.         TH=~TH;
  117.         TL=~TL;
  118.         temp=0;
  119.     }else temp=1;
  120.     tem=TH
  121.     tem<<=8;   
  122.     tem+=TL;                                       
  123.     tem=(float)tem*0.625;            
  124.         if(temp)return tem;                 
  125.         else return -tem;   
  126. }
復(fù)制代碼




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

使用道具 舉報(bào)

沙發(fā)
ID:743781 發(fā)表于 2022-5-10 23:56 | 只看該作者
不發(fā)全部的 怎么看的出
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2022-5-11 00:28 | 只看該作者
既然是仿真,就別計(jì)較太多了。你要是用實(shí)物搭出這種效果,才有解決的意義。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲91av| 日韩一区二区免费视频 | 日韩高清在线观看 | 久产久精国产品 | 日韩国产在线 | 99re在线视频免费观看 | 一区二区三区在线观看视频 | www.成人久久 | 成人在线视频网 | 欧美特级黄色 | 国产精品乱码一区二区三区 | 99精品网站 | 综合第一页 | 天天拍天天插 | 国产91观看| 粉嫩av在线| 日韩at| avhd101在线成人播放 | av一级 | 日韩视频精品 | 国产一区 | 亚洲精品亚洲人成人网 | 999国产精品视频 | 精品国产91乱码一区二区三区 | 国产亚洲精品成人av久久ww | 北条麻妃99精品青青久久 | 福利片在线观看 | 免费亚洲视频 | 亚洲精品91 | 在线观看成人 | 91 在线| 伊人伊成久久人综合网站 | 波多野结衣一区二区三区在线观看 | 日韩在线一区视频 | 国产精品视频免费看 | 国产在线中文字幕 | 人人艹人人爽 | 亚洲区在线 | 欧美黑人巨大videos精品 | 欧美精品网站 | 激情91|