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

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

QQ登錄

只需一步,快速開始

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

51單片機(jī) IAP15W4K58S4 DS18B20檢測(cè)溫度 C語言

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
/**************************************************************************************
程序名稱:DS18B20檢測(cè)溫度
程序功能:下載程序后,8位七段數(shù)碼管前四位顯示當(dāng)前溫度,后四位顯示濕度(濕度未完成暫時(shí)顯示為H00.0)
溫度超過80,或小于10攝氏度,蜂鳴器響

使用平臺(tái):STC15W/IAP15W
硬件連線:JP10>>J12, JP11>>J16, P3.6>>J8,
DS18B20:DQ>>P3.1, Vcc>>3.3V, GND
時(shí)間:2019/4/24 23:20
作者:璃落彼岸
***************************************************************************************/
#include "STC15.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit FMQ=P4^2;
sbit DQ = P3^1;
bit ReadTempFlag;
u8 code SEG_Code[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//num 0~9
0x7f,0xc6,0x89};//symble “.”,“C”,"H"
//0x88,0x83,,0xa1,0x86,0x8e,0xff
u8 code Bit_Code[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//bit 0~7
/************************************
get Temp and HR from sensors
*************************************/
u8 Temp_HR[8]={0,0,0,11,12,0,0,0};//00.0C H00.0
/**************************************
Declare global function
******************************************/
void Pin_Mode(void);
void SEG7_1Bit_Display(u8 num,u8 Position);
void Beep(void);
void Delay_nms(u16 nms);
void delayms(u16 xms);
void delay_xus(u8 n);
u8 Init(void);
u8 readByte();
void writeByte(u8 dat);
float getTmpValue(void);
void transform(long v);

void main(void)
{
u8 i=0;
// u8 j;
Pin_Mode();
Init();//Initialize DS18B20

        while(1)
        {
   transform(getTmpValue()); //get and transfer temp_value
  for(j=0;j<200;j++)//穩(wěn)定顯示,約1s刷機(jī)一次
  {
   SEG7_1Bit_Display(Temp_HR[i++],8-i);
     Delay_nms(2);
     i=i%8;
  }
  if(Temp_HR[0]>8)//溫度大于80
   {
   Beep();Delay_nms(3);
   }
   else if(Temp_HR[0]<1)//溫度小于10
   {
   Beep();Delay_nms(3);
   }
  }
}
/**************************************
Initialize Pin
******************************************/
void Pin_Mode(void)
{
P0M1 = 0x00;P0M0 = 0x00;
P2M1 = 0x00;P2M0 = 0x00;
P3M1 = 0x00;P3M0 = 0x00;
P4M1 = 0x00;P4M0 = 0x00;
}
void SEG7_1Bit_Display(u8 num,u8 Position)
{
P2=0xff;
P0=~SEG_Code[num];
P2=Bit_Code[Position];
if(Position==6||Position==1)//在8位數(shù)碼管第2、7位添加小數(shù)點(diǎn)
{
  P0=P0+0x80;
}
}
void Beep(void)
{
u8 i;
for(i=0;i<10;i++)
{
  delay_xus(500);
  FMQ=~FMQ;
}
FMQ=1;
}
/*****s_delay*****/
void Delay_nms(u16 nms) //65535nms
{
u16 i,t;
for(i=0;i<nms;i++)
{
  for(t=0;t<1080;t++);
  }
}
/*****ms_delay***
void delayms(u16 xms)
{
u16 i,j;
for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}
*/
/*****us_delay****/
void delay_xus(u8 n)
{
while(n--)
{
  _nop_();
  _nop_();
}
}
/**************************************
get Temp from DS18B20
Time_delay is serious!
******************************************/
/*****DS18B20初始化函數(shù)*****/
u8 Init(void)
{
u16 CONT_1 = 0;
u8 Flag_1 = 1;
u8 Status = 0x00;
    DQ = 1;
DQ = 0;
delay_xus(495);//495us
DQ = 1;
while((DQ != 0)&&(Flag_1 == 1)) //wait for the response of ds18B20,avoid overtime
    {                                       
        CONT_1++;
delay_xus(10); //60us
        if(CONT_1 > 8000)Flag_1 = 0;
        Status = DQ;
    }
  delay_xus(100);  //240us
    DQ = 1;
    return Status;      //initial
}
/*****讀一個(gè)字節(jié)數(shù)據(jù)函數(shù)*****/
u8 readByte()
{
u16 i;
u8 Value = 0x00;
DQ = 1;
delay_xus(10);
for(i=1;i<=8;i++)
{
  Value >>= 1;
  DQ = 0;
  delay_xus(1);
  DQ = 1;
  delay_xus(1);
  if(DQ == 1)
   Value |= 0x80;
  delay_xus(60);
}
return Value;
}
/*****寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)*****/
void writeByte(u8 dat)
{
u16 j;
for(j=1;j<=8;j++)
{
  if((dat & 0x01))      
  {
   DQ = 0;
   delay_xus(1);
   DQ = 1;
   delay_xus(60);
  }  
  else     
  {
   DQ = 0;
   delay_xus(60);
   DQ = 1;
   delay_xus(1);
  }
  dat>>=1;
}
}
/*****得到溫度值函數(shù)*****/
float getTmpValue(void)
{
u8 low,high;
u16 temp;
float fValue;
Init();
writeByte(0xcc);
writeByte(0x44);
Init();
writeByte(0xcc);
writeByte(0xbe);
low = readByte();
high = readByte();
if(high&0xFC)
{
  ReadTempFlag = 1;
  temp = ((high<<8)|low);
  temp = ~temp + 1;
}
else
{
  ReadTempFlag = 0;
  temp = ((high<<8)|low);
}
fValue = temp*0.0625;
temp = fValue*10+0.5; //>0 +0.5;<0 -0.5
fValue = temp+0.05;
return fValue;         
}
/*****溫度轉(zhuǎn)換函數(shù)*****/
void transform(long v)
{
v = v%1000;
Temp_HR[0] = v/100;  //ten
v = v%100;
Temp_HR[1] = v/10;  //個(gè)位
v = v%10;
Temp_HR[2] = v/1;    //小數(shù)位

}

a3.jpg (3.3 MB, 下載次數(shù): 53)

實(shí)驗(yàn)現(xiàn)象

實(shí)驗(yàn)現(xiàn)象

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:521034 發(fā)表于 2019-4-25 08:23 | 只看該作者

謝謝樓主
回復(fù)

使用道具 舉報(bào)

板凳
ID:284488 發(fā)表于 2019-4-25 08:59 | 只看該作者
DS18B20不是溫度傳感器,可作濕度嗎?程序內(nèi)容跟作DHT11溫濕度傳感器蠻相似的,學(xué)習(xí)了,感謝樓主分享!
回復(fù)

使用道具 舉報(bào)

地板
ID:982170 發(fā)表于 2021-12-7 16:57 | 只看該作者
lon7085 發(fā)表于 2019-4-25 08:59
DS18B20不是溫度傳感器,可作濕度嗎?程序內(nèi)容跟作DHT11溫濕度傳感器蠻相似的,學(xué)習(xí)了,感謝樓主分享!

樓主,求dht11的程序。我改了好久都顯示不出來
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级欧美日韩 | 亚洲欧美中文日韩在线v日本 | 午夜亚洲 | 天堂中文资源在线 | 美日韩一区二区 | 欧美日韩综合一区 | 欧美综合精品 | 九九热在线精品视频 | 成人激情视频在线观看 | 亚洲精品日日夜夜 | 日韩一区在线播放 | 中文字幕一区二区三区四区五区 | 国产精品久久久亚洲 | 国产成人综合网 | 亚洲精品在线国产 | 国产成人小视频 | 国产激情在线看 | 伊人伊人 | 亚州毛片| 国产一级视频免费播放 | 日韩精品一区二区三区视频播放 | 欧美一级片在线播放 | 韩日一区| 亚洲免费三区 | 宅男噜噜噜66一区二区 | 老头搡老女人毛片视频在线看 | 亚洲欧美一区二区三区视频 | 美女天堂在线 | 久久国产精品视频 | 天堂一区二区三区 | 高清成人免费视频 | 日本午夜免费福利视频 | 亚洲欧美一区二区三区1000 | 国产精品久久av | 国产一级淫片免费视频 | 色婷婷久久久亚洲一区二区三区 | 在线视频 亚洲 | 四季久久免费一区二区三区四区 | 一区视频 | 五月婷婷 六月丁香 | 亚洲永久精品国产 |