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

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

QQ登錄

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

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

單片機(jī)ds18b20程序讀取溫度數(shù)據(jù)異常

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
通過(guò)8h8單片機(jī)獲取ds18b20原始數(shù)據(jù)分為低8位和高8位,后通過(guò)串口3高低位數(shù)據(jù)發(fā)送到上位機(jī)顯示,不知道是哪里程序出現(xiàn)了問(wèn)題,上位機(jī)顯示只有一個(gè)8位數(shù)據(jù)而且一直都是0xff不變動(dòng),一開(kāi)始是以為是ds18b2的讀寫程序出現(xiàn)問(wèn)題,但拔掉DQ線現(xiàn)之后數(shù)據(jù)就停止發(fā)送到上位機(jī)了,煩請(qǐng)前輩們幫忙指點(diǎn)指點(diǎn)

單片機(jī)源程序如下:
  1. #include <stc8h.h>
  2. #include <intrins.h>

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

  5. bit busy;   //P0.0-RXD;P0.1-TXD
  6. sbit DQ = P1^0;                             //定義DS18B20總線I/O        

  7. uint a,b,c,m,n;

  8. unsigned char h=0;
  9.   unsigned char l=0;

  10. void gpio_int()
  11. {
  12. P_SW2 |= 0x80; //必須要加這句

  13. P0M0=0X00;
  14. P0M1=0X00;
  15. P1M0=0X00;
  16. P1M1=0X00;        

  17. }


  18. //延時(shí)子程序
  19. void Delay_DS18B20(int num)
  20. {
  21.   while(num--) ; // Delay_DS18B20(100) 12Mhz晶振下約為85.5us    11.0592Mhz約為下93us
  22. }



  23. //初始化DS18B20
  24. void Init_DS18B20(void)
  25. {
  26.   uchar x=0;
  27.   DQ = 1;         
  28.   Delay_DS18B20(8);    //稍做延時(shí),等高電平穩(wěn)定后開(kāi)始復(fù)位
  29.   DQ = 0;         //單片機(jī)將DQ拉低
  30.   Delay_DS18B20(600);   //主機(jī)拉低約480-950us
  31.   DQ = 1;         //釋放總線
  32.   while(DQ);       //DQ會(huì)拉低大約60-240us表示應(yīng)答,之后會(huì)釋放總線
  33.   while(!DQ);      //等待從機(jī)釋放總線
  34. }

  35. //寫一個(gè)字節(jié)
  36. void WriteOneChar(unsigned char dat)
  37. {
  38.   unsigned char i=0;
  39.   for (i=8; i>0; i--)
  40.   {
  41.     DQ = 0;
  42.     DQ = dat&0x01;
  43.     Delay_DS18B20(13);//無(wú)論0或1發(fā)送錢先拉低10-15us
  44.                 Delay_DS18B20(30);//0或1電平保持20-45us
  45.     DQ = 1;        //釋放總線
  46.     dat>>=1;
  47.   }
  48. }


  49. //讀一個(gè)字節(jié)
  50. unsigned char ReadOneChar(void)
  51. {
  52.   uchar i=0;
  53.   uchar dat = 0;
  54.   for (i=8;i>0;i--)
  55.   {        
  56.                 DQ = 1;
  57.     DQ = 0;     // 給脈沖信號(hào)
  58.     dat>>=1;
  59.     DQ = 1;     // 給脈沖信號(hào)
  60.                 if(DQ)         //釋放總線后讀取電平
  61.                 dat|=0x80;
  62.      DQ = 1;
  63.                 Delay_DS18B20(43);  //讀取后延遲40-45us
  64.   }
  65.   return(dat);
  66. }


  67. //讀取溫度
  68. void ReadTemperature()
  69. {

  70.   unsigned int t=0;
  71.   float tt=0;
  72.   Init_DS18B20();
  73.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  74.   WriteOneChar(0x44);  //啟動(dòng)溫度轉(zhuǎn)換
  75.   Delay_DS18B20(9);
  76.         Init_DS18B20();
  77.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  78.   WriteOneChar(0xBE);  //讀取溫度寄存器
  79.   l=ReadOneChar();     //讀低8位
  80.   h=ReadOneChar();    //讀高8位

  81.         }




  82. void Uart3Init()//串口3初始化
  83. {
  84. S3CON = 0x10;
  85. T2L = 0xe8;
  86. T2H = 0xff;
  87. AUXR = 0x10;
  88. busy = 0;
  89. }

  90. void Uart3Send(unsigned char dat)//發(fā)送8位數(shù)據(jù)
  91. {
  92. while (busy);
  93. busy = 1;
  94. S3BUF = dat;
  95. busy = 0;
  96. }


  97. void Uart3SendStr(char *p)//發(fā)送字符
  98. {
  99. while (*p)
  100. {
  101. Uart3Send(*p++);
  102. }
  103. }

  104. void delay_13us(uint t)
  105. {

  106. while(t--)
  107. {_nop_();}
  108. }

  109. void delay_1s()//1秒延時(shí)
  110. {
  111. unsigned char x,y;
  112.         for(x=0;x<100;x++)
  113.         {
  114.         for(y=0;y<100;y++)
  115.          {
  116.    delay_13us(100);
  117.          }
  118.          }
  119. }

  120. void main()
  121. {
  122.         gpio_int();
  123.         Uart3Init();

  124.         while(1)
  125. {  
  126.         ReadTemperature();
  127.         
  128.         Uart3Send(h);
  129.         Uart3Send(l);
  130. delay_1s();


  131. }        
  132. }

復(fù)制代碼


51hei截圖20230321164628773.jpg (162.1 KB, 下載次數(shù): 73)

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

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2023-3-21 19:11 | 只看該作者
如果第一個(gè)數(shù)據(jù)不是ff的話,應(yīng)該是119行寫的太草率了,118行給SBUF賦值不意味著發(fā)送已經(jīng)完成,9600bps這么低的波特率給SBUF賦值后1ms發(fā)送才會(huì)完成,而單片機(jī)可以執(zhí)行幾千條指令。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1063134 發(fā)表于 2023-3-21 23:30 | 只看該作者
我遇到過(guò)ds18b20壞的,應(yīng)答都有但讀不出數(shù)據(jù),后來(lái)?yè)Q了一個(gè)才發(fā)現(xiàn)這個(gè)問(wèn)題
回復(fù)

使用道具 舉報(bào)

地板
ID:577554 發(fā)表于 2023-3-22 08:58 | 只看該作者
Hephaestus 發(fā)表于 2023-3-21 19:11
如果第一個(gè)數(shù)據(jù)不是ff的話,應(yīng)該是119行寫的太草率了,118行給SBUF賦值不意味著發(fā)送已經(jīng)完成,9600bps這么 ...

這個(gè)問(wèn)題確實(shí)沒(méi)有想到,其實(shí)這個(gè)程序還有一個(gè)問(wèn)題就是:我發(fā)送的是兩個(gè)8位數(shù)據(jù),但上位機(jī)一次只顯示出一個(gè)8位,根據(jù)你的建議加延時(shí)后,確實(shí)解決這個(gè)問(wèn)題,但是排除串口,通過(guò)debug硬件仿真查看變量發(fā)現(xiàn)兩個(gè)變量也都是ffC:\Users\dell\Desktop\360截圖20230322085316936.jpg
回復(fù)

使用道具 舉報(bào)

5#
ID:577554 發(fā)表于 2023-3-22 09:00 | 只看該作者
排除串口,通過(guò)debug查看變量的方式,依舊都是0xff

51hei截圖20230322085316936.jpg (136.71 KB, 下載次數(shù): 68)

通過(guò)debug查看變量的方式依舊都是0xff

通過(guò)debug查看變量的方式依舊都是0xff
回復(fù)

使用道具 舉報(bào)

6#
ID:577554 發(fā)表于 2023-3-22 09:03 | 只看該作者
wuyimin456 發(fā)表于 2023-3-21 23:30
我遇到過(guò)ds18b20壞的,應(yīng)答都有但讀不出數(shù)據(jù),后來(lái)?yè)Q了一個(gè)才發(fā)現(xiàn)這個(gè)問(wèn)題

我遇到的問(wèn)題和你差不多,有應(yīng)答但返回?cái)?shù)據(jù)錯(cuò)誤,因?yàn)槲腋鼡Q過(guò)兩個(gè)數(shù)據(jù)都是這樣,所以才覺(jué)得會(huì)不會(huì)是程序問(wèn)題導(dǎo)致的
回復(fù)

使用道具 舉報(bào)

7#
ID:1063134 發(fā)表于 2023-3-22 11:31 | 只看該作者
LUREN1 發(fā)表于 2023-3-22 09:03
我遇到的問(wèn)題和你差不多,有應(yīng)答但返回?cái)?shù)據(jù)錯(cuò)誤,因?yàn)槲腋鼡Q過(guò)兩個(gè)數(shù)據(jù)都是這樣,所以才覺(jué)得會(huì)不會(huì)是程序 ...

網(wǎng)上18b20十個(gè)九個(gè)壞,用那種帶線的質(zhì)量好,我就是用帶線的后才知道原來(lái)的18B20是壞的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美区日韩区 | 欧美一区二区在线免费观看 | 久草福利 | 99re99| 亚洲日本欧美 | 国产成人精品免费视频大全最热 | 日韩在线视频观看 | 久久www免费视频 | www.久久.com| 亚洲欧美日韩国产综合 | 国产精品久久久久久久久久 | 中文字幕国产 | 日日干综合 | 久久三区| 午夜精品一区 | 中文一区| 欧美不卡一区二区三区 | 欧美专区在线 | 九九久久久 | 欧美一级三级 | 日本免费一区二区三区四区 | 免费av电影网站 | 精品国产欧美一区二区 | 黑人巨大精品欧美一区二区免费 | 日韩中文字幕一区 | 精品自拍视频在线观看 | 久久精品久久久 | 久久精品男人的天堂 | 国产成人精品久久二区二区 | 色秀网站 | 亚洲精品成人在线 | 999re5这里只有精品 | 91精品国产91久久综合桃花 | 污免费网站 | 日韩精品一区二区三区在线 | 国产激情视频在线 | 免费观看的av | 男女羞羞视频免费 | 亚洲精品福利视频 | 亚洲精品视频在线看 | 成人性生交大片免费看r链接 |