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單片機的濕度感測器
這暈,需求還真多,就是分少了一點。能不能只畫原理圖啊。