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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1226|回復: 2
收起左側

為什么讀不出溫度 求大神指教

[復制鏈接]
ID:587608 發表于 2020-1-13 10:53 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
unsigned char leddata[]={

                0xC0,  //"0"
                0xF9,  //"1"
                0xA4,  //"2"
                0xB0,  //"3"
                0x99,  //"4"
                0x92,  //"5"
                0x82,  //"6"
                0xF8,  //"7"
                0x80,  //"8"
                0x90,  //"9"         

                         };
sbit DQ   = P2^4;
sbit wei0 = P2^0;
sbit wei1 = P2^1;
sbit wei2 = P2^2;
char m;
uchar n;
void delay(uint z)  //延時1ms子程序
{
uint x, y;
for(x=z; x>0; x--)
  for(y=114; y>0; y--);
}
void delay_us(uchar s)  //延時1us子程序
{
--s;
}
void init_ds18b20() //初始化ds18b20溫度傳感器
{
uchar x = 0;
DQ = 1;  //dq引腳復位
delay_us(8); //稍做延時
DQ = 0;  //將引腳拉低
delay_us(80); //精確延時,大于480us
DQ = 1;  //拉高引腳
delay_us(14); //精確延時,16~60us
x = DQ;  //將引腳值保存在x中
delay_us(20); //精確延時,60~240us
}
uchar readonechar()  //讀取一個字節子程序
{
uchar i = 0;
uchar dat = 0;
for(i=8; i>0; i--)
{
  DQ = 0;   //拉低信號讀字節
  dat >>= 1;  //dat右移一位再賦值直到賦值到第八位
  DQ = 1;   //讀完拉高信號
  if(DQ)
  dat |= 0x80;  //dat中數與0x80按位相或
  delay_us(4);  //稍做延時
  }
  return(dat);  //將結果返回dat中
  }
void writeonechar(uchar dat)
{
uchar i = 0;
for(i=0; i<8; i++)
{
  DQ = 0;   //拉低信號寫字節
  DQ = dat & 0x01; //dat中數與0x01按位相與
  delay_us(5);  //稍做延時
  DQ = 1;   //寫完拉高信號
  dat >>= 1;  //dat右移一位再賦值直到賦值到第八位
  }
  }
uint readtemp()    //讀取溫度子程序
{
uchar a=0, b=0;
uint t = 0;
float tt = 0;

init_ds18b20();   //初始化傳感器
writeonechar(0xcc);  //跳過讀序列號的操作
writeonechar(0x44);  //啟動溫度轉換
init_ds18b20();   //初始化傳感器
writeonechar(0xcc);  //跳過讀序列號的操作
writeonechar(0xbe);  //讀取溫度寄存器
a = readonechar();  //讀低八位
b = readonechar();  //讀高八位
t = b;    //將高八位的數據轉移到t
t <<= 8;   //t中數據左移8位
t = t|a;   //將t中數據按位和a中數據相或
tt = t*0.0652-1;  //將溫度乘0.0652得到實際值
t = tt*10+0.5;    //將實際溫度乘10倍
return(t);   //將數值返回到變量t中
}
void checktemp()
{
uint a,b,c;
c=readtemp();     //獲取溫度值
a=c/100;           //計算得到十位數字
b=c/10-a*10;         //計算得到個位數字
m=c/10;            //計算得到整數位
n=c-a*100-b*10;     
}
void displaytemp()
{
   wei0 = 1;
   P0 = leddata[n];
   delay(100);
   wei0 = 0;
   wei1 = 1;
   P0 = leddata[m%10];
   delay(100);
   wei1 = 0;
   wei2 = 1;
   P0 = leddata[m/10];
   delay(100);
   wei2 = 0;

      }
     
void main()
{
checktemp();
displaytemp();
   }
   

回復

使用道具 舉報

ID:282850 發表于 2020-1-13 16:06 | 顯示全部樓層
你LED數碼管顯示問題,18B20程序正確,不是讀不出溫度。
回復

使用道具 舉報

ID:587608 發表于 2020-1-28 10:29 | 顯示全部樓層
f556 發表于 2020-1-13 16:06
你LED數碼管顯示問題,18B20程序正確,不是讀不出溫度。

謝大神
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区在线视频 | 天天成人综合网 | 91 中文字幕| 国产一区二区三区网站 | 91精品国产一区二区三区香蕉 | 国产ts人妖系列高潮 | 久久久久国产一区二区 | 精品亚洲一区二区 | 国产极品粉嫩美女呻吟在线看人 | 国产精品一区一区三区 | 日本电影网站 | 欧美啪啪网站 | 成人精品毛片国产亚洲av十九禁 | 成人激情视频免费观看 | 久久久久久99| 91精品国产手机 | 亚洲人成人一区二区在线观看 | 亚洲综合在线视频 | 亚洲精品国产电影 | 中文字幕高清在线 | www.国产一区 | 91啪亚洲精品 | 黄免费观看视频 | 97国产精品| 国产专区在线 | 日本不卡一区二区三区在线观看 | 精品成人在线 | 国产黄色av网站 | a级片在线观看 | 色婷婷久久综合 | 久久成人激情 | 中文精品视频 | 女人夜夜春 | 久久这里有精品 | 国产综合久久 | 91国内产香蕉 | 久久精品国产一区二区电影 | 久久久成人精品 | 久青草影院 | 国产欧美精品一区二区三区 | 成人欧美一区二区三区黑人孕妇 |