導航:首頁 > 操作系統 > 基於單片機的濕度感測器

基於單片機的濕度感測器

發布時間:2022-08-17 17:39:40

1. 單片機控制的溫濕度感測器與溫濕度計相比有什麼優點

明白你問題的意思,但首先要糾正一下不是單片機控制感測器,而是基於單片機開發的系統中採用了溫濕度感測器,回到你的問題,兩者其實沒有本質不同,溫濕度計一般指的是測量溫濕度的製成品,其功能是固定的,比如只能測量不能控制,而基於單片機開發的溫濕度測量系統,則功能可以根據你的實際需要任意擴展的,與產品溫濕度計相比更為靈活。

2. 基於單片機的無線溫濕度報警器的設計的C語言程序該怎麼寫

基於單片機的無線溫濕度報警器的設計的C語言程序網上有很多,你網路一下,應該可以找到資源的,網路文庫裡面有不少,不過需要購買或者下載卷才能下載供你使用,現在,沒有不勞而獲的東西存在,所以你最好的去處是那些代理設計的網店,很多的,現在這方面需求旺盛,提供服務的電商也很多,只要談好價錢,就可以得到服務了。多逛逛吧,網上搜一搜,或者找周邊同學打聽一下,找一家信譽和售後服務好的店鋪。

3. 濕度感測器與單片機

用ADC轉換吧。
首先一個感測器是必須的。感測器經過信號放大,再進入ADC轉換,傳給單片機處理。
校準等只能經過程序來控制了。

4. 求設計基於51單片機的溫濕度計

感覺沒什麼東西啊~~單片機控制基於I2C匯流排的SHT10系列數字溫濕度感測器的溫濕度值,不用處理直接做個類型轉換就可以送LED示。然後在程序里加個對所采數據的比較,超過或低於設置值就讓蜂鳴器響。
沒什麼硬體,就一個單片機最小系統,一個溫濕度感測器加一個數碼管顯示電路,再接個蜂鳴器全搞定。
你把18B20換成SHT10(其他溫濕度感測器也可以)再加一根線,因為18B20是單匯流排的。再到網上當一個驅動程序就好了。找不到的話找我,我發給你。

5. 求大神給個基於單片機開發板的多點溫濕度感測器工作程序

很少有人了解你這個開發板,我倒是有個現成的程序,和原理圖,q50447830
7

6. 基於51單片機的溫度和濕度感測器的軟體程序DS1820

.c
/***********************************************************************
#include"DS18B20.h"
/*************delay*******************/

void delay(unsigned int time)
{
while(time--);
}
/*************delay*******************/

/*************reset********************/
unsigned char DS18B20_RESET()
{
unsigned char x=0;
DQ=1;
DQ=0;
delay(80);
DQ=1;
delay(14);
x=DQ;
while(!DQ);
return x;
}
/*************readbit********************/

unsigned char DS18B20_READBIT()
{
unsigned char bitdata=0;
DQ=1;
delay(4);
DQ=0;
delay(4);
DQ=1;
delay(8);
bitdata=DQ;
delay(64);
return bitdata;
}
/*************readbit********************/

/*************writebit********************/

void DS18B20_WRITEBIT(unsigned char bitdata)
{
DQ=1;
delay(4);
DQ=0;
delay(4);
DQ=bitdata;
delay(80);
DQ=1;
}
/*************writebit********************/

/*************readbyte********************/

unsigned char DS18B20_READBYTE()
{
unsigned char i=0,bytedata=0;
for(i=0;i<8;i++)
{
bytedata |=(DS18B20_READBIT()<<i);
}
return bytedata;
}
/*************readbyte********************/

/*************writebyte********************/

void DS18B20_WRITEBYTE(unsigned char bytedata)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
DS18B20_WRITEBIT(bytedata&(1<<i));
}
}
/*************writebyte********************/

/*************retresolution********************/

void DS18B20_SETRESOLULION(unsigned char res)
{
while(DS18B20_RESET());
DS18B20_WRITEBYTE(0xbe);
DS18B20_WRITEBYTE(0xff);
DS18B20_WRITEBYTE(0xff);
DS18B20_WRITEBYTE(0x1f|res<<5);
}

/*************retresolution********************/

/*************readtemperature********************/

long DS18B20_READTEMPERATURE()
{
long t=0;
while(DS18B20_RESET());
DS18B20_WRITEBYTE(skiprom);
DS18B20_WRITEBYTE(convert);
while(!DS18B20_READBIT());
while(DS18B20_RESET());
DS18B20_WRITEBYTE(skiprom);
DS18B20_WRITEBYTE(readregister);
t=DS18B20_READBYTE();
t |=((unsigned int )DS18B20_READBYTE())<<8;
return t*626;
}
/*************readtemperature********************/

/***********************************************************/
.h
/***********************************************************/
#include <reg51.h>

#define readrom 0x33
#define matchrom 0x55
#define skiprom 0xcc
#define searchrom 0xf0
#define alarmrom 0xec

#define writeregister 0x4e
#define readregister 0xbe
#define register 0x48
#define convert 0x44
#define recalle2 0xb8
#define readpower 0xb4

sbit DQ=P2^7;

void DS18B20_SETRESOLULION(unsigned char res);
long DS18B20_READTEMPERATURE();

7. 基於51單片機,ADC0804,光敏電阻,濕度感測器,求程序!!!!

#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

sbit DQ=P3^7;//ds18b20與單片機連介面
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;

unsigned char code str1[]={"temperature: "};
unsigned char code str2[]={" "};

uchar data disdata[5];
uint tvalue;//溫度值
uchar tflag;//溫度正負標志

/*************************lcd1602程序**************************/
void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的)
{unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}

void wr_com(unsigned char com)//寫指令//
{ delay1ms(1);
RS=0;
RW=0;
EN=0;
P2=com;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}

void wr_dat(unsigned char dat)//寫數據//
{ delay1ms(1);;
RS=1;
RW=0;
EN=0;
P2=dat;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}

void lcd_init()//初始化設置//
{delay1ms(15);
wr_com(0x38);delay1ms(5);
wr_com(0x08);delay1ms(5);
wr_com(0x01);delay1ms(5);
wr_com(0x06);delay1ms(5);
wr_com(0x0c);delay1ms(5);
}

void display(unsigned char *p)//顯示//
{
while(*p!='\0')
{
wr_dat(*p);
p++;
delay1ms(1);
}
}

init_play()//初始化顯示
{ lcd_init();
wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
}

/******************************ds1820程序***************************************/
void delay_18B20(unsigned int i)//延時1微秒
{
while(i--);
}

void ds1820rst()/*ds1820復位*/
{ unsigned char x=0;
DQ = 1; //DQ復位
delay_18B20(4); //延時
DQ = 0; //DQ拉低
delay_18B20(100); //精確延時大於480us
DQ = 1; //拉高
delay_18B20(40);
}

uchar ds1820rd()/*讀數據*/
{ unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{ DQ = 0; //給脈沖信號
dat>>=1;
DQ = 1; //給脈沖信號
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}

void ds1820wr(uchar wdata)/*寫數據*/
{unsigned char i=0;
for (i=8; i>0; i--)
{ DQ = 0;
DQ = wdata&0x01;
delay_18B20(10);
DQ = 1;
wdata>>=1;
}
}

read_temp()/*讀取溫度值並轉換*/
{uchar a,b;
ds1820rst();
ds1820wr(0xcc);//*跳過讀序列號*/
ds1820wr(0x44);//*啟動溫度轉換*/
ds1820rst();
ds1820wr(0xcc);//*跳過讀序列號*/
ds1820wr(0xbe);//*讀取溫度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
tflag=0;
else
{tvalue=~tvalue+1;
tflag=1;
}
tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數
return(tvalue);
}

/*******************************************************************/
void ds1820disp()//溫度值顯示
{ uchar flagdat;
disdata[0]=tvalue/1000+0x30;//百位數
disdata[1]=tvalue%1000/100+0x30;//十位數
disdata[2]=tvalue%100/10+0x30;//個位數
disdata[3]=tvalue%10+0x30;//小數位

if(tflag==0)
flagdat=0x20;//正溫度不顯示符號
else
flagdat=0x2d;//負溫度顯示負號:-

if(disdata[0]==0x30)
{disdata[0]=0x20;//如果百位為0,不顯示
if(disdata[1]==0x30)
{disdata[1]=0x20;//如果百位為0,十位為0也不顯示
}
}

wr_com(0xc0);
wr_dat(flagdat);//顯示符號位
wr_com(0xc1);
wr_dat(disdata[0]);//顯示百位
wr_com(0xc2);
wr_dat(disdata[1]);//顯示十位
wr_com(0xc3);
wr_dat(disdata[2]);//顯示個位
wr_com(0xc4);
wr_dat(0x2e);//顯示小數點
wr_com(0xc5);
wr_dat(disdata[3]);//顯示小數位
}
/********************主程序***********************************/
void main()
{ init_play();//初始化顯示
while(1)
{read_temp();//讀取溫度
ds1820disp();//顯示
}
}

這個是測溫度的(18b20),你可以參考一下啊!!!!

8. 基於AVR單片機的濕度感測器

這暈,需求還真多,就是分少了一點。能不能只畫原理圖啊。

閱讀全文

與基於單片機的濕度感測器相關的資料

熱點內容
千聊免費課程可以重新加密嗎 瀏覽:507
python能代替php嗎 瀏覽:252
phpexcel樣式 瀏覽:265
安卓手機有沒有什麼軟體可以阻止彈廣告的 瀏覽:306
linux區域網搭建伺服器 瀏覽:690
python編譯器mac 瀏覽:293
windows的doc命令 瀏覽:463
nfc全加密門禁卡 瀏覽:636
身份信息被加密 瀏覽:482
我的鹽城app怎麼添加不了家庭成員 瀏覽:493
php商城並發 瀏覽:348
熊貓繪畫app怎麼做出大佬的筆刷 瀏覽:603
雲存儲伺服器知識 瀏覽:461
伺服器cpu是什麼指令集 瀏覽:590
糖貓t10怎麼安裝app 瀏覽:992
電腦加密u盤怎麼使用 瀏覽:517
linux如何升級php版本升級 瀏覽:841
二級程序員c語言難度 瀏覽:353
批處理編譯qt 瀏覽:67
鐵友app怎麼查詢機票訂單 瀏覽:197