Msp430驱动dht11温湿度传感器
msp430对dht11测量结果的1602显示
#include "msp430x14x.h"//typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量*/typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量*/typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量*/typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量*/typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量*/typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量*/typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度)*/typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度)*///#define SET_H P4DIR|=BIT0;P4OUT|=BIT0 //SETH#define SET_L P4DIR|=BIT0;P4OUT&=~BIT0 //SETL#define PIN0 P4IN#define SET_IN P4DIR&=~BIT0;#define CPU_F ((double)8000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))#define P55 5#define P56 6#define P57 7#define RS_CLR P5OUT &= ~(1 << P55) //RS置低#define RS_SET P5OUT |= (1 << P55) //RS置高#define RW_CLR P5OUT &= ~(1 << P56) //RW置低#define RW_SET P5OUT |= (1 << P56) //RW置高#define EN_CLR P5OUT &= ~(1 << P57) //E置低#define EN_SET P5OUT |= (1 << P57) //E置高#define DataPort P4OUT //P4口为数据口//===================================================================== ==========U8 k;U8 U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_t emp;U8 U8comdata;U8 str[5]={"RS232"};U16 U16temp1,U16temp2;//===================================================================== =============void COM(void){U8 i;for(i=0;i<8;i++){//判断数据位是0还是1while(!(PIN0&0X01));delay_us(10);U8temp=0;delay_us(30);if(PIN0&0X01)U8temp=1;while(PIN0&0X01);// 如果高电平高过预定0高电平值则数据位为1U8comdata<<=1;U8comdata|=U8temp;}}/*void Dis_Lcd( ){U8 temp;temp=(U8)(U8RH_data_H/10);PutString_cn(30,80,(unsigned short *)"当前湿度是:");delay_ms(5);PutChar(160,80,(char)(48+temp));delay_ms(5);temp=U8RH_data_H%10;PutChar(170,80,(char)(48+temp));delay_ms(5);PutChar(180,80,'%');delay_ms(5);temp=(U8)(U8T_data_H/10);PutString_cn(30,140,(unsigned short *)"当前温度是:");delay_ms(5);PutChar(160,140,(char)(48+temp));delay_ms(5);temp=U8T_data_H%10;PutChar(170,140,(char)(48+temp));delay_ms(5);PutString_cn(180,140,(unsigned short *)"℃");delay_ms(5);}*/void Clock_Init(){char i;BCSCTL1&=~XT2OFF; //打开XT振荡器BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ do{IFG1&=~OFIFG; //清除震荡标志for(i=0;i<100;i++)_NOP(); //延时等待}while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待IFG1&=~OFIFG;}//************************************************************************* // MSP430内部看门狗初始化//************************************************************************* void WDT_Init(){WDTCTL = WDTPW + WDTHOLD; //关闭看门狗}//************************************************************************* // 初始化IO口子程序//************************************************************************* void Port_init(){P4SEL = 0x00;P4DIR = 0xFF;P5SEL = 0x00;P5DIR|= BIT5 + BIT6 + BIT7; //控制口设置为输出模式}//*********************************************************************** // 显示屏命令写入函数//***********************************************************************void LCD_write_com(unsigned char com){RS_CLR;RW_CLR;EN_SET;DataPort = com; //命令写入端口delay_ms(5);EN_CLR;}//*********************************************************************** // 显示屏数据写入函数//***********************************************************************void LCD_write_data(unsigned char data){RS_SET;RW_CLR;EN_SET;DataPort = data; //数据写入端口delay_ms(5);EN_CLR;}//*********************************************************************** // 显示屏清空显示//***********************************************************************void LCD_clear(void){LCD_write_com(0x01); //清屏幕显示delay_ms(5);}//*********************************************************************** // 显示屏单字符写入函数//***********************************************************************void LCD_write_char(unsigned char x,unsigned char y,unsigned char data){if (y == 0){LCD_write_com(0x80 + x); //第一行显示}else{LCD_write_com(0xC0 + x); //第二行显示}LCD_write_data( data);}//*********************************************************************** // 显示屏初始化函数//***********************************************************************void LCD_init(void){LCD_write_com(0x38); //显示模式设置delay_ms(5);LCD_write_com(0x08); //显示关闭delay_ms(5);LCD_write_com(0x01); //显示清屏delay_ms(5);LCD_write_com(0x06); //显示光标移动设置delay_ms(5);LCD_write_com(0x0C); //显示开及光标设置delay_ms(5);}void RH(void){//主机拉低18msSET_L;delay_ms (20);SET_H;//总线由上拉电阻拉高主机延时20usdelay_us(20);//主机设为输入判断从机响应信号SET_IN;while(PIN0&0X01);//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!(PIN0&0X01))//判断从机是否发出80us 的低电平响应信号是否结束delay_us(50);while(!(PIN0&0X01));//判断从机是否发出80us 的高电平,如发出则进入数据接收状态while((PIN0&0X01));//数据接收状态COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;SET_H;//数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp==U8checkdata_temp){U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8T_data_L=U8T_data_L_temp;U8checkdata=U8checkdata_temp;}/*str[0]=U8RH_data_H;str[1]=U8RH_data_L;str[2]=U8T_data_H;str[3]=U8T_data_L;str[4]=U8checkdata;*/str[0] = (char)(0X30+U8RH_data_H/10);str[1]= (char)(0X30+U8RH_data_H%10);//湿度小数部分str[2] = (char)(0X30+U8RH_data_L/10);//温度整数部分str[3] = (char)(0X30+U8T_data_H/10);str[4] = (char)(0X30+U8T_data_H%10);//温度小数部分str[5] = (char)(0X30+U8T_data_L/10);}void disp(){LCD_write_char(0,0,'s');LCD_write_char(1,0,'h');LCD_write_char(2,0,'i');LCD_write_char(3,0,'d');LCD_write_char(4,0,'u');LCD_write_char(5,0,':');LCD_write_char(6,0,str[0]);LCD_write_char(7,0,str[1]);LCD_write_char(8,0,'.');LCD_write_char(9,0,str[2]);LCD_write_char(10,0,'%');LCD_write_char(11,0,'R');LCD_write_char(12,0,'H');LCD_write_char(0,2,'w');LCD_write_char(1,2,'e');LCD_write_char(2,2,'n');LCD_write_char(3,2,'d');LCD_write_char(4,2,'u');LCD_write_char(5,2,':');LCD_write_char(6,2,str[3]);LCD_write_char(7,2,str[4]);LCD_write_char(8,2,'.');LCD_write_char(9,2,str[5]);LCD_write_char(10,2,0xDF);LCD_write_char(11,2,'C');delay_ms(50);}/*void Set(){U0CTL |= SWRST; //开启设置U0TCTL = SSEL1; //选择SMCLK=6M 波特率=9600 /* 6M / 9600 = 625 625 = 0x0271 0.000 * 8= 0*//* 32768/9600=3.4133 0.4133*8=4*//* U0BR0 = 0x41;U0BR1 = 0x03;U0MCTL =0x00; //00000000U0CTL |= CHAR; //长度8位U0CTL &= ~SWRST;}/*void Send(U8 num){TXBUF0 = num;while((IFG1&UTXIFG0)==0);}void InitClock(void){U8 k;BCSCTL1 &= ~XT2OFF; //开启XT2晶振do{IFG1 &= ~OFIFG; // 清除振荡器失效标志for(k=0xee;k>0;k--){} //延时}while((IFG1 & OFIFG)!=0); //判断XT2是否起振BCSCTL2 = SELM_2 + SELS; // 选择MCLK SMCLK 为XT2 } //初始化//端口初始化函数void InitPort(void){P6DIR=0XFF;// 设置为输出方向P6OUT=0xFF;//P口先输出低电平P3DIR |= 0x10;P3SEL |= 0x30;Set();ME1 |= UTXE0 + URXE0;IE1 |= URXIE0;}*/void main(void){WDT_Init();/*InitClock();InitPort();*//*LCD_Initial();BackLightTo(80);*/Clock_Init();Port_init();/*ClrScreen(1);*/delay_ms(50);/* P6DIR=0XFF;P6OUT=0X7F;delay_ms(50);P6OUT=0XFF;delay_ms(50);*/LCD_init();LCD_clear();while(1){/*Dis_Lcd();*/LCD_init();LCD_clear();/* */RH();// Send(str[k]);disp();while(1){RH();disp();TACTL |= MC0;}//读取模块数据周期不易小于2S delay_ms(50);}}。
DHT11温湿度传感器
DHT11温湿度传感器概述 DHT11数字温湿度传感器是⼀款含有已校准数字信号输出的温湿度复合传感器。
它应⽤专⽤的数字模块采集技术和温湿度传感技术,确保产品具有极⾼的可靠性与长期的稳定性。
传感器包括⼀个电阻式感湿元件和⼀个NTC测温元件,并与⼀个8位单⽚机相连接。
因此该产品具有抗⼲扰能⼒强、性价⽐⾼等优点。
硬件连接 DHT11使⽤1-wire总线与MCU进⾏半双⼯通信,当连接线长度短于20⽶时可⽤5K的上拉电阻,⼤于20⽶时需要根据实际情况选择合适的上拉电阻。
通信过程 DATA引脚⽤于MCU与DHT11之间的通讯和同步,采⽤单总线数据格式,⼀次通讯时间4ms左右,数据分⼩数部分和整数部分,⼀次完整的数据传输为40bit,⾼位先出(MSB)。
数据格式:8bit湿度整数数据+8bit湿度⼩数数据+8bit温度整数数据+8bit温度⼩数数据+8bit校验和。
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度⼩数数据+8bit温度整数数据+8bit温度⼩数数据”所得结果的末8位。
通信的开始 上图为MCU与DH11通信的开始,MCU拉低总线20ms后拉⾼,请求DH11响应,DH11收到信号后将总线拉低以此来响应主机,响应后拉⾼总线开始传输数据,本图来源为DH11的数据⼿册。
需要注意MCUI/O引脚输⼊输出模式的切换,本⼈使⽤的是GPIOG的号引脚与DHT11进⾏通信。
数据的判断 上图中可以看出论时数据0还是数据1,数据的开始总线都是被拉低50us,只是在总线被拉⾼时的时长不⼀样,于是程序便可以在40us 的时候判断引脚的电平,以此来指定当前传输的数据是0是1。
温湿度传感器程序 以下为温湿度传感器初始化函数和获得温湿度数据的程序,初始化相关引脚后调⽤read_ht_data(&data),便可以获得所需数据,注意该函数1s钟只能调⽤⼀次,不然获取不到数据。
还需要保证延迟函数是准确的,参考我之前的系统定时器的相关随笔。
基于MSP430的温湿度检测装置
“温湿度传感器”结题报告作品名称:基于单片机的温湿度检测装置目录1、作品名称 (3)2、作品简介及其功能 (3)3、电路设计思路及其硬件的选择 (3)4、电路的设计与成型 (3)4.1供电部分 (3)4.2微控制器部分 (4)4.3测量部分 (4)5、电路软件的设计 (7)6、所思所感 (11)7、参考文献 (11)1、作品名称:基于单片机的温湿度检测电路2、作品简介及其功能:随着工业自动化的愈趋完善,各种各样的传感器被用在了各式各样的场合。
而温度和湿度这两个重要的参数成为了实现过程控制自动化必不可少的过程。
换言之,问题具体化为了选择怎样的传感器及如何去检测温湿度的变化,并根据检测结果调整系统以使之保持在最佳工作状态。
本电路即是用来检测环境温度及湿度的情况并实时显示及作出处理的。
虽然原理很简单却可靠实用。
下面将给出详细描述。
3、电路设计思路及其硬件的选择DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。
产品为4针单排引脚封装,连接方便。
控制器方面选用TI的MSP430单片机,低功耗。
辅助部分有显示部分,会在后面有详细的介绍。
显示部分采用OLED,省电节能。
4、电路的设计与成型:4.1供电部分:锂电池供电,简单方便.4.2微控制器部分:微控制器电路图如图4.2.1所示:图4.2.1 微控制器电路微控制器为TI的MSP430G2553单片机系统,简单明了。
dht11温度传感器原理电路
dht11温度传感器原理电路
DHT11温度传感器是一款常用的温湿度传感器,其原理电路包括传感器模块和单片机控制模块两部分。
传感器模块主要由温度传感器和湿度传感器组成,通过传感器感知环境温度和湿度并将信号转为电信号输出。
DHT11传感器包括一个电阻式感湿元件和一个NTC测温元件,用以测量环境湿度和温度。
单片机控制模块则负责接收传感器输出的数据并进行处理,最终将结果显示在显示屏上或者通过无线模块传输到远程设备。
DHT11采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上。
传感器上电后,要等待1秒以越过不稳定状态,在此期间无需发送任何指令。
在DHT11的供电电压方面,其范围为3-5.5V。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
DATA引脚并联一个5K以上的上拉电阻,增强信号的抗干扰能力。
DHT11与单片机之间的数据传输通过DATA信号管脚进行,DATA信号管脚引入任一没有其余传感器占用的GPIO管脚即可。
此外,DHT11还具有一定的扩展性,可以通过加入其他传感器模块,实现多参数数据采集和监控;或者通过搭配智能控制系统,实现对温度的智能控制和调节。
总之,DHT11温度传感器的原理电路主要包括传感器模块和单片机控制模块两部分,通过传感器感知环境温度和湿度,并将数据传输到单片机进行处理和显示。
同时,DHT11还具有一定的扩展性,可以与其他传感器或控制系统配合使用,实现更多功能。
msp430g2553驱动dht11温湿度传感器
////////////////////main.c///////BY Wangzengri NKU#include "msp430g2553.h"#include"12864.h"const unsigned char tishi_W[]={"温度:"};const unsigned char tishi_Wd[]={"°"};const unsigned char tishi_S[]={"湿度:"};const unsigned char tishi_Sd[]={"%"};const unsigned char tishi_dot[]={".00"};#define CPU (1000000)#define delay_us(x) (__delay_cycles((double)x*CPU/1000000.0))#define delay_ms(x) (__delay_cycles((double)x*CPU/1000.0))#define HIGH P2OUT|= BIT1;#define LOW P2OUT &=~BIT1;unsigned char temph,templ,humdh,humdl,check,cal;void show_Wendu();void show_Shidu();void show_tishi();/*void DelayNus(unsigned int n) //延时Nus{unsigned int i;for(i = n;i > 0;i--)_NOP();}*/char receive(void) //接受函数{unsigned char num=0,tem,cnt; //临时变量用于存储接受数据for(cnt=0;cnt<8;cnt++){tem=0;while(!(P2IN&BIT1)); //等待14us的低电平结束delay_us(30);if((P2IN&BIT1)) /////////长于30us定义为1{tem=1;while((P2IN&BIT1)); //等待一位的采集结束}num<<=1;num|=tem;}return num;}void receive_init(){P2DIR|=BIT1;LOW;delay_ms(20);HIGH;delay_us(30); //20--40P2DIR &=~BIT1;if(!(P2IN&BIT1)); //从机发出响应信号{while(!(P2IN&BIT1));//等待响应响应结束while((P2IN&BIT1));//开始采集humdh=receive();humdl=receive();temph=receive();templ=receive();check=receive();}}void main( void ){WDTCTL=WDTPW+WDTHOLD;DCOCTL = CALDCO_1MHZ;Ini_Lcd();show_tishi();while(1){receive_init();cal=humdh+humdl+temph+templ;if(cal==check){show_Wendu();show_Shidu();}}}void show_tishi(){Disp_HZ(0x80,tishi_W,3);Disp_HZ(0x86,tishi_Wd,1);Disp_HZ(0x88,tishi_S,3);Disp_HZ(0x8e,tishi_Sd,1);}void show_Wendu(){Disp_SZ(0x83,temph);Disp_HZ(0x84,tishi_dot,2);//Disp_SZ(0x84,templ);}void show_Shidu(){Disp_SZ(0x8b,humdh);Disp_HZ(0x8c,tishi_dot,2);//Disp_SZ(0x8c,humdl);}//12864.c#include <msp430g2553.h>typedef unsigned int uint;typedef unsigned char uchar;#define BIT(x) (1 << (x))const uchar numtable[]={"0123456789"};void Send(uchar type,uchar transdata);/**********液晶控制IO的宏定义*************/ #define cyCS 0 //P1.0,片选信号#define cySID 1 //P1.1,串行数据#define cyCLK 2 //P1.2,同步时钟#define cyPORT P1OUT#define cyDDR P1DIR/******************************************* 函数名称:delay_Nus功能:延时N个us的时间参数:n--延时长度返回值:无********************************************/ void delay_Nus(uint n){uchar i;for(i = n;i > 0;i--)_NOP();}/******************************************* 函数名称:delay_1ms功能:延时约1ms的时间参数:无返回值:无********************************************/void delay_1ms(void){uchar i;for(i = 150;i > 0;i--) _NOP();}/*******************************************函数名称:delay_Nms功能:延时N个ms的时间参数:无返回值:无********************************************/void delay_Nms(uint n){uint i = 0;for(i = n;i > 0;i--)delay_1ms();}/*******************************************函数名称:Ini_Lcd功能:初始化液晶模块参数:无返回值:无********************************************/void Ini_Lcd(void){cyDDR |= BIT(cyCLK) + BIT(cySID) + BIT(cyCS); //相应的位端口设置为输出delay_Nms(100); //延时等待液晶完成复位Send(0,0x30); /*功能设置:一次送8位数据,基本指令集*/delay_Nus(72);Send(0,0x02); /*DDRAM地址归位*/delay_Nus(72);Send(0,0x0c); /*显示设定:开显示,不显示光标,不做当前显示位反白闪动*/delay_Nus(72);Send(0,0x01); /*清屏,将DDRAM的位址计数器调整为“00H”*/delay_Nus(72);Send(0,0x06); /*功能设置,点设定:显示字符/光标从左到右移位,DDRAM地址加1*/ delay_Nus(72);}/*******************************************函数名称:Send功能:MCU向液晶模块发送1一个字节的数据参数:type--数据类型,0--控制命令,1--显示数据transdata--发送的数据返回值:无********************************************/void Send(uchar type,uchar transdata){uchar firstbyte = 0xf8;uchar temp;uchar i,j = 3;if(type) firstbyte |= 0x02;cyPORT |= BIT(cyCS);cyPORT &= ~BIT(cyCLK);while(j > 0){if(j == 3) temp = firstbyte;else if(j == 2) temp = transdata&0xf0;else temp = (transdata << 4) & 0xf0;for(i = 8;i > 0;i--){if(temp & 0x80) cyPORT |= BIT(cySID);else cyPORT &= ~BIT(cySID);cyPORT |= BIT(cyCLK);temp <<= 1;cyPORT &= ~BIT(cyCLK);}//三个字节之间一定要有足够的延时,否则易出现时序问题if(j == 3) delay_Nus(600);else delay_Nus(200);j--;}cyPORT &= ~BIT(cySID);cyPORT &= ~BIT(cyCS);}/*******************************************函数名称:Clear_GDRAM功能:清除液晶GDRAM内部的随机数据参数:无返回值:无void Clear_GDRAM(void){uchar i,j,k;Send(0,0x34); //打开扩展指令集i = 0x80;for(j = 0;j < 32;j++){Send(0,i++);Send(0,0x80);for(k = 0;k < 16;k++){Send(1,0x00);}}i = 0x80;for(j = 0;j < 32;j++){Send(0,i++);Send(0,0x88);for(k = 0;k < 16;k++){Send(1,0x00);}}Send(0,0x30); //回到基本指令集}/******************************************* 函数名称:Disp_HZ功能:显示汉字程序参数:addr--显示位置的首地址pt--指向显示数据的指针num--显示数据的个数返回值:无********************************************/ void Disp_HZ(uchar addr,const uchar * pt,uchar num) {uchar i;Send(0,addr);for(i = 0;i < (num*2);i++)Send(1,*(pt++));}函数名称:Draw_PM功能:在整个屏幕上画一个图片参数:ptr--指向保存图片位置的指针返回值:无********************************************/ void Draw_PM(const uchar *ptr){uchar i,j,k;Send(0,0x34); //打开扩展指令集i = 0x80;for(j = 0;j < 32;j++){Send(0,i++);Send(0,0x80);for(k = 0;k < 16;k++){Send(1,*ptr++);}}i = 0x80;for(j = 0;j < 32;j++){Send(0,i++);Send(0,0x88);for(k = 0;k < 16;k++){Send(1,*ptr++);}}Send(0,0x36); //打开绘图显示Send(0,0x30); //回到基本指令集}/*******************************************函数名称:Draw_TX功能:在液晶上描绘一个16*16的图形参数:Y addr--Y地址,Xaddr--X地址dp--指向保存图形数据的指针返回值:无********************************************/ void Draw_TX(uchar Y addr,uchar Xaddr,const uchar * dp) {uchar j;uchar k = 0;Send(0,0x34); //使用扩展指令集,关闭绘图显示for(j = 0;j < 16;j++){Send(0,Y addr++); //Y地址Send(0,Xaddr); //X地址Send(1,dp[k++]); //送两个字节的显示数据Send(1,dp[k++]);}Send(0,0x36); //打开绘图显示Send(0,0x30); //回到基本指令集模式}/*******************************************函数名称:Disp_SZ功能:显示一个两位数字参数:addr--显示地址数字--显示的数字返回值:无********************************************/void Disp_SZ(uchar addr,uchar shuzi){uchar tmp0,tmp1;tmp0 = shuzi / 10;tmp1 = shuzi % 10;Send(0,addr);Send(1,numtable[tmp0]);Send(1,numtable[tmp1]);}//12864.hvoid Send(unsigned char type,unsigned char transdata);void Ini_Lcd(void);void Clear_GDRAM(void);void Disp_HZ(unsigned char addr,const unsigned char * pt,unsigned char num); void Draw_PM(const unsigned char *ptr);void Draw_TX(unsigned char Y addr,unsigned char Xaddr,const unsigned char * dp) ; void Disp_SZ(unsigned char addr,unsigned char shuzi);void delay_Nus(unsigned int n);void delay_Nms(unsigned int n);void delay_1ms(void);。
SHT11温湿度传感器MSP430源代码
}
//等待响应
//SHT_DAT_OUT;
SHT_DAT_1;
SHT_DAT_IN;
nop();
SHT_SCK_1;
nop();
error=Read_SHT_Dat;
SHT_SCK_0;
nop();
//error=1时无响应
return error;
}
for(temp=0;temp<4294967295;temp++)
{
read_temp=Read_SHT_Dat;
uchar SHT_Rea_Byte(uchar ack)
{
uchar temp,val=0,read_temp;
//释放数据线
SHT_SCK_OUT;
SHT_DAT_OUT;
SHT_DAT_1;
nop();
SHT_DAT_IN;
for(temp=0x80;temp>0;temp/=2)
// reads the status register with checksum (8-bit)
uchar SHT_Rea_Sta(uchar *p_value,uchar *p_checksum)
{
uchar error=0;
SHT_Tra_Sta(); //transmission start
default:break;
}
/*准备接收*/
//数据线为输出
SHT_DAT_OUT;
SHT_DAT_1;
//数据线为输入
SHT_DAT_IN;
/*wait until sensor has finished the measurement or timeout (~2 sec.) is reached*/
DHT11温湿度传感器原理剖析
DHT11 温湿度传感器原理剖析视频讲解DHT11 功能对温湿度数据进行采集。
DHT11 封装尺寸图在进行PCB 封装设计的时候会用到。
引脚说明1、VDD 供电3.3~5.5V DC2、DATA 串行数据,单总线3、NC 空脚4、GND 接地,电源负温湿度采集范围湿度采集范围5%~95%,在环境温度为25℃时,湿度采集精度是±5%。
温度采集范围是-20℃~60℃,在环境温度为25℃时,温度采集精度是±2℃。
电气参数DHT11 供电电压为3.3V~5.5V,测量时的供电电流为1.0mA,待机时的供电电流为0.06mA。
典型电路传感器的DATA 口需要接4.7K 的上拉电阻。
上拉电阻的作用是在单片机不进行输出以及传感器待机时,使得DATA 口为高电平,当总线闲置时,其状态为高电平。
数据格式8bit 湿度整数数据+ 8bit 湿度小数数据+ 8bit 温度整数数据+ 8bit 温度小数数据+ 8bit 校验位。
数据读取步骤步骤一: DHT11 上电后(DHT11 上电后要等待1S 以越过不稳定状态在此期间不能发送任何指令),测试环境温湿度数据,并记录数据,同时DHT11 的DATA 数据线由上拉电阻拉高一直保持高电平;此时DHT11 的DATA引脚处于输入状态,时刻检测外部信号。
步骤二: 微处理器的I/O 设置为输出同时输出低电平,且低电平保持时间不能小于18ms(最大不得超过30ms),然后微处理器的I/O 设置为输入状态,由于上拉电阻,微处理器的I/O 即DHT11 的DATA 数据线也随之变高,等待DHT11 作出回答信号,发送信号如图所示:步骤三: DHT11 的DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后DHT11 的DATA 引脚处于输出状态,输出83 微秒的低电平作为应答信号,紧接着输出87 微秒的高电平通知外设准备接收数据,微处理器的I/O 此时处于输入状态,检测到I/O 有低电平(DHT11 回应信号)后,等待87 微秒的高电平后的数据接收,发送信号如图所示:步骤四: 由DHT11 的DATA 引脚输出40 位数据,微处理器根据I/O 电平的变化接收40 位数据,位数据“0”的格式为:54 微秒的低电平和23- 27 微秒的高电平,位数据“1”的格式为:54 微秒的低电平加68-74 微秒的高电平。
DHT11 温湿度传感器说明书
DHT11说明书温湿度传感器●具有抗冲击性及电气性能优良●完全标定●数字输出,单总线通讯●优异的长期稳定性●响应迅速、恢复时间快、抗干扰能力强产品简述DHT11是一款含有已校准数字信号输出的温湿度复合传感器,采用了自主研发的集成式数字温湿度元件,应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
DHT11传感器内包含一个温湿度测量元件和一个高性能MCU。
应用范围DHT11温湿度传感器可以应用于农业、家电、汽车、气象、医疗等领域,如暖通空调、除湿机、冷链仓储、测试及检测设备、数据记录仪、湿度调节系统、医疗等。
图1.DHT11温湿度传感器1.传感器性能1.1相对湿度表1.湿度特性表参数测试条件最小典型最大单位量程范围附加说明15-95%RH精度2--±5%RH重复性--±1-%RH互换性-完全互换响应时间3τ(63%)-<6-s迟滞--±0.3-%RH漂移4典型值-<0.5-%RH/yr 1.2电气特性表2.电气特性表符号参数测试条件最小典型最大单位VCC供电电压- 3.35 5.5VI平均电流5休眠-60-µA 测量-1000-µAV OL低电平输出电压I L6=5mA0-300mVV OH高电平输出电压Rp<25kΩ0.9*VCC-VCC VV IL低电平输入电压下降0-0.3VV IH高电平输入电压上升0.7-VCC VRp上拉电阻7VCC=5V1 4.7100kΩT S采样周期-2--s实际使用中的一些特性如功耗、输入和输出的高、低电平电压等都取决于供电电压。
在使用传感器时,要使系统获得鲁棒性,请确保各参数在表2所给出的范围内。
1正常工作范围:8~85%RH,超出此范围,传感器读数会有偏差(在90%RH湿度下60小时后,漂移>3%RH)。
工作范围进一步限定在-20~60℃。
2此精度为传感器出厂检验时,在25℃、VCC=5V条件下的测试精度。
(完整版)msp430驱动dht11温湿度传感器
DHT11是数字的湿度传感器....6元一个买的...与它的通信方式类似于I2C总线通信.串行数据一次返回40位.数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
如果模块离芯片距离近,建议在数据线接一5k电阻上拉.时序图如下:第一次拉低要求至少18ms,之后拉高20-40us,之后DHT拉低80us后再拉高80us..之后进入数据阶段.每个数据,0,1以高电平的时间长短区分.0数据高电平时间为26-28us,1为70us..不论1或者0,之前都先输出50us的低电平..数据传输完成后拉高总线.在此次的程序中用P2.1作为信息口.程序如下#include <msp430x14x.h>#define HIGH P2OUT|=BIT1;#define LOW P2OUT&=~BIT1;void DelayNus(int n){CCR0 = n;TACTL |= MC_1; //增计数到CCR0while(!(TACTL & BIT0)); //等待TACTL &= ~MC_1; //停止计数TACTL &= ~BIT0; //清除中断标志}char receive(void) //接受函数{char tem,cnt=0; //临时变量用于存储接受数据while(cnt<8){while(!(P2IN&BIT1)); //等待50us的低电平结束DelayNus(45);if(P2IN&BIT1) //长于30us定义为1{tem++;tem<<=1;while(P2IN&BIT1); //结束高电平}else{tem<<=1;}if(cnt!=7)while(!(P2IN&BIT1)); //最后一次给函数返回留下时间cnt++;}return tem;}int main( void ){int i;char temph,templ,humdh,humdl,check,cal; WDTCTL=WDTPW+WDTHOLD;_DINT();BCSCTL1&=~XT2OFF;do{IFG1&=~OFIFG;for(i=0xff;i>0;i--);}while(IFG1&OFIFG);_EINT();BCSCTL2|=SELM_2+SELS; //SMCLK 8分频P2DIR|=BIT1;P2OUT|=BIT1;TACTL|=TASSEL_2+ID_3;//initedLOW;DelayNus(18000);HIGH;DelayNus(30);P2DIR&=~BIT1;while(P2IN&BIT1);while(!(P2IN&BIT1));while(P2IN&BIT1);//Data comeshumdh=receive();humdl=receive();temph=receive();templ=receive();check=receive();cal=humdh+humdl+temph+templ;if(check==cal) {LPM0;}return 0;}。
基于MSP430单片机的温湿度检测
2.1. 传感器模块
传感器具有将物理信息转换为电信号的功能。这里我们采用集成一体化温湿度传感器 DHT11。DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它 应用专用的数字模块采集技术和温湿度传感技术, 确保产品具有极高的可靠性和卓越的长期 稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片 机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在 OTP 内 存中,传感器内部在检测型号的处理过程中要调用这些校准系数。单线制串行接口,使系统 集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最 佳选择。产品为 4 针单排引脚封装,连接方便。
3.
关键模块设计
3.1. 数据获取模块
数据获取模块的功能是从传感器中获取数据, 并将数据存储在单片机内存中。 该模块设计 的关键在于控制单片机按照正确时序从传感器中读取数据。 数据获取模块的工作流程如图 2 所示
2
通信与信息工程学院 School of Communication and Information Engineering
2.
系统结构
本系统由 MCU、温湿度传感器、液晶显示屏三部分构成,所有控制指令由 MCU 发出,控制 温湿度数据的读取与液晶屏的显示。 系统结构图如图 1 所示。
Sensor
MCU
图 1
1
OLED
通信与信息工程学院 School of Communication and Information Engineering
通信与信息工程学院 School of Communication and Information Engineering
基于MSP430的无线多点温湿度分布式测量系统
毕业设计题目:基于MSP430的无线多点温湿度分布式测量系统院、系:电气工程系姓名:指导教师:系主任:2014 年6月10日基于MSP430的无线多点温湿度分布式测量系统摘要在现代社会的发展中,温湿度作为两种特别重要的因素走进了人们的生活,为了能够对人类生产和生活环境中的温湿度进行监控,本文采用CC2500射频芯片和SHT11数字温湿度传感器,设计了一种基于MSP430单片机的实用温湿度检测系统及相关的软硬件结构。
该系统利用ZigBee无线通信技术构建了分布式无线传感器网络,通过传感器节点对温湿度数据进行采集和传输,具有组网简单,维护方便,运行费用低等优点,能够实现可靠的无线数据传输。
本文首先简单介绍了温湿度测量系统设计的背景、意义和温湿度传感器及短距离无线通信收发芯片的在世界各国的发展状况,通过结合系统方案的要求,详细论证了实现多点温湿度数据采集与无线传输方案的设计思路及系统的总体架构,然后详尽地阐述了系统的硬件电路结构设计和完成各项功能相关的软件设计,最后得出一定的结论,并对该设计有一个理想的展望。
关键词MSP430; ZigBee; CC2500; 温湿度传感器;Wireless multi point temperature and humidity distributed measurement system basedon MSP430AbstractIn the development of modern society, the temperature and humidity as two important factors in people's daily life, in order to be able to monitor the temperature and humidity of human production and living environment, this paper uses CC2500 RF chip SHT11 and digital temperature and humidity sensor, designed an applied temperature and humidity detection system of MSP430 single chip microcomputer and the software and hardware based on the correlation structure. The system construction of the distributed wireless sensor network using ZigBee wireless communication technology, acquisition and transmission of the temperature and humidity data by the sensor nodes, with simple, easy maintenance, low operating cost, can realize the reliable wireless data transmission.This paper introduces the design of temperature and humidity measurement system background, significance and the temperature and humidity sensor and short distance wireless communication transceiver chip development in the world, by combining the system requirements of the program, discusses the overall architecture design and system of multi point temperature and humidity data acquisition and wireless transmission scheme, then elaborates the software design and complete the function of the hardware circuit design of system structure, finally draw some conclusion, and has a good prospect in this design.Keywords MSP430; ZigBee; CC2500; temperature and humidity sensor;目录摘要 (I)Abstract ................................................................................................................ I I 第1章绪论 (1)1.1 课程设计的背景和意义 (1)1.1.1 课程设计的背景 (1)1.1.2 课题设计的意义 (1)1.2 温湿度传感器和短距离无线通信的发展趋势 (2)1.2.1 温湿度传感器的发展趋势 (2)1.2.2 短距离无线通信技术的发展趋势 (2)1.3 本文的主要研究内容 (3)1.4 本章小结 (3)第2章系统的总体设计方案 (4)2.1 ZigBee技术研究 (4)2.2 无线射频芯片方案 (5)2.2.1 CC2500的性能参数和应用领域 (6)2.2.2 CC2500的内部结构 (6)2.3 数字化温湿度传感器 (7)2.4 控制核心 (8)2.4.1 MSP430F2274简介 (8)2.4.2 MSP430的存储器结构 (10)2.5 本章小结 (11)第3章系统的硬件结构设计 (12)3.1 系统总体结构设计 (12)3.2 数字传感器SHT11电路设计 (13)3.3 无线模块CC2500芯片的电路设计 (14)3.4 时钟/日历模块PCF8563电路设计 (16)3.5 数据收发节点设计 (17)3.6 协调器节点的开关电源设计 (18)3.7 本章小结 (19)第4章系统的软件设计 (20)4.1 系统主程序设计 (20)4.2 数据采集程序 (21)4.3 数据收发程序 (22)4.4 本章小结 (22)结论 (23)致谢 (24)参考文献 (25)第1章绪论1.1课程设计的背景和意义1.1.1课程设计的背景温度与湿度与人们的生活息息相关,随着科学技术的发展,各种高精尖设备大规模投入使用,同时对设备生产的环境也有着很严格的要求。
430温湿度
基于msp430为核心的单片机温度控制模块,温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,然后经过转换成数字信号后传入单片机,由单片机对数字信号进行相应的处理,从而得到温湿度采集和控制的目的,然后输出在数码管上进行显示。
首先要解决的是选用合适的温湿度数字传感器本身的属性,它的用法,各个性能参数,内部功能有一个检测电路,温湿度控制电路,单总线通信的电路,复位电路,数码管显示电路的设计接法进行进一步的掌握,最后就是软件编写部分了,软件部分需要解决的问题有温湿度传感器的初始化模块,传感器对温湿度的获取并转换模块,温湿度数据的处理模块,温湿度数据显示模块,超高(低)温湿控制模块。
2.2总系统设计框图本系统主要由数据采集模块、控制模块、显示模块、反馈调节模块等这些模块构成,采集模块是通过一个温湿度传感器来得到所要采集的信号;控制模块所使用的是单片机;显示由数码管来完成;反馈调节部分由报警系统,温湿度调节模块构成。
在系统内部会设定一个温湿度的最高和最低数值,在所采集到的温湿度达到这个数值的时候系统会发出报警,然后通过单片机反馈给温湿度调节系统,使系统恢复正常工作。
综合上述原理,绘制的原理框图如 2.1所示:图2.1系统设计原理框图2.3采集模块采集模块主要由传感器构成,在传感器的选择过程中我们要根据我们所设计的系统来完成,在本设计中我们有两种方案可供选择。
方案一:利用热敏电阻NTC温度传感器和温敏传感器组成测温电路,经过温湿度——频率变换电路进行模数转换,由于这样做的温湿度传感器的线性特性不是很好,测量误差较大,为此利用单片机的计算和查表功能对热敏电阻和温敏的温湿度非线性特性进行线性化处理,这样就提高了传感器的测温精度。
框图如2.2所示:图2.2 传统传感器原理图此种方案和传统的利用硬件电路对热敏温敏电阻温度非线性特性进行线性化相比,可以消除硬件参数随温湿度变化而引起的测量误差,线路简单,成本相对便宜,利于维护。
dht11模块测量温湿度的流程
DHT11模块测量温湿度的流程概述本文将介绍D HT11模块的使用方法,包括连接电路、读取数据的流程以及温湿度的计算方法。
连接电路首先,我们需要将DH T11模块与单片机进行连接。
需要使用3个引脚:V C C、GN D和数据引脚。
具体的连接方式如下:-将DH T11模块的VC C引脚连接到单片机的3.3V或5V电源引脚上。
-将DH T11模块的GN D引脚连接到单片机的地(GN D)引脚上。
-将DH T11模块的数据引脚连接到单片机的任意可用的数字引脚上。
连接完成后,我们可以开始测量温湿度了。
测量温湿度的流程1.初始化在开始测量之前,我们需要对DH T11模块进行初始化。
初始化的步骤包括向D HT11发送一个低电平的信号,并延时至少18毫秒。
这个低电平信号将引导D HT11进入测量模式。
2.接收数据初始化完成后,D HT11模块会将测量到的温湿度数据以串行的形式发送回来。
我们需要准备好接收数据的缓冲区,并准备接收数据的引脚。
3.解析数据接收到数据后,我们需要对它进行解析。
D H T11模块发送的数据包括温度和湿度的整数部分和小数部分。
我们需要按照一定的规则将这些数据进行解析,得到最终的温度和湿度数值。
4.计算温湿度解析完数据后,我们可以根据DH T11模块的计算公式来得到真实的温度和湿度数值。
这个公式在D HT11模块的数据手册中有详细的说明。
5.显示结果最后,我们可以将测量得到的温湿度数据显示在单片机的L CD屏幕上,或者通过串口进行输出。
以上就是使用DH T11模块测量温湿度的完整流程。
通过连接电路、初始化、接收数据、解析数据和计算温湿度,我们可以准确地测量环境中的温度和湿度,为后续的应用提供数据支持。
小结本文介绍了使用D HT11模块测量温湿度的流程。
通过连接电路、初始化、接收数据、解析数据和计算温湿度,我们可以轻松地获取环境的温湿度数据。
这对于许多物联网和环境监测应用来说是非常重要的。
希望通过本文的介绍,你能够更好地理解和应用DH T11模块。
DHT11驱动程序
利用MSP430F149单片机读取DHT11的湿度、温度数据程序简单易懂,运行结果正确。
#include "msp430f149.h"typedef unsigned int uint;typedef unsigned char uchar;//MCLK = 8MHz#define delay_us(x) __delay_cycles((unsigned long)(x<<3))#define delay_ms(x) __delay_cycles((unsigned long)8000*x)//P1.6读取DHT11数据void readDHT11(unsigned char *data){uchar i = 0;uchar delayusCount = 0;uchar temp = 0;P1OUT &= ~BIT6; //20ms低电平,开始信号delay_ms(20);P1DIR &= ~BIT6; //转换为输入模式,等待40us,DHT11响应delay_us(40);if((P1IN&BIT6)!=BIT6) //DHT11响应{while((P1IN&BIT6)!=BIT6);//等待低电平结束while((P1IN&BIT6)==BIT6);//等待高电平结束for(i=0;i<40;i++){while((P1IN&BIT6)!=BIT6);//每次输出数据前拉低总线50uswhile((P1IN&BIT6)==BIT6){delayusCount++; //计数判断0,1,0:高电平时间短,1:高电平时间长}if(delayusCount<35) //拉高总线小于35us,说明是数据0temp = 0;elsetemp = 1;data[i/8] |= temp<<(7-(i%8));delayusCount = 0;}//for}//if 低电平P1DIR |= BIT6;P1OUT |= BIT6;}void main(){unsigned char dht11Data[5] = {0,0,0,0,0};volatile unsigned int i;BCSCTL1 &= ~XT2OFF; //开启高频晶振,XT2=8MHZdo{IFG1 &= ~OFIFG; // Clear OSCFault flagfor (i = 0xFF; i > 0; i--); // Time for flag to set }while ((IFG1 & OFIFG));BCSCTL2 |= SELM1+SELS; //MCLK=SMCLK=XT2=8MHZP1DIR |= BIT6;P1OUT |= BIT6;delay_ms(1000); //等待DHT11就绪readDHT11(dht11Data); //数据读取到数组中//dht11Data[0]:湿度整数部分,dht11Data[1]:湿度小数部分 //dht11Data[2]:温度整数部分,dht11Data[3]:温度小数部分 //dht11Data[4]:校验数据}。
msp430学习笔记之DHT11
msp430学习笔记之DHT11这个具有两个指示灯,初始化成功后会点亮红色指示灯,然后采集一次数据点亮闪烁一次绿色指示灯。
首先说下DHT11的简介吧。
DHT11是一款数字温湿度传感器,它有以下优点相对湿度和温度测量全部校准,数字输出卓越的长期稳定性无需额外部件超长的信号传输距离超低能耗4 引脚安装完全互换1.DHT11产品概述DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4 针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
应用领域暖通空调测试及检测设备汽车数据记录器消费品自动控制气象站家电湿度调节器医疗除湿器本文采用它来作为一个智能家居系统中的温湿度传感装置。
2、 2.接口说明建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻3、电源引脚DHT11的供电电压为3-5.5V。
传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。
4、串行接口 (单线双向)DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下: 一次完整的数据传输为40bit,高位先出。
dht11使用手册
dht11使用手册摘要:1.引言2.DHT11传感器简介3.DHT11传感器参数4.DHT11传感器接线方式5.DHT11传感器使用方法6.DHT11传感器数据处理7.DHT11传感器常见问题及解决方法8.总结正文:【引言】DHT11是一款非常实用的温湿度传感器,广泛应用于各种智能设备中。
本文将详细介绍DHT11传感器的使用手册,帮助用户更好地了解和使用该传感器。
【DHT11传感器简介】DHT11是一款由Dallas公司生产的温湿度传感器,具有准确、灵敏、稳定等特点。
它可以通过简单的接口与各种微控制器或单片机相连接,实现对环境温湿度的测量。
【DHT11传感器参数】DHT11的主要参数包括:- 工作电压:3.3V或5V- 工作电流:1.5mA- 测量范围:温度-40℃~+80℃,湿度0%~100%- 测量精度:温度±0.5℃,湿度±5%【DHT11传感器接线方式】DHT11传感器有四根引脚,分别为VCC(电源正极)、GND(电源负极)、DHT1(数据输出)和DHT2(数据输出)。
通常情况下,VCC接3.3V或5V电源,GND接电源负极,DHT1接单片机的数据输入脚,DHT2接单片机的数据输入脚。
【DHT11传感器使用方法】1.连接电路:将DHT11传感器的VCC接3.3V或5V电源,GND接电源负极,DHT1接单片机的数据输入脚,DHT2接单片机的数据输入脚。
2.初始化:配置单片机的相关寄存器,使能DHT11数据输出口的串行通信功能。
3.读取数据:通过单片机的串行通信功能,读取DHT11传感器输出的温湿度数据。
4.数据处理:将读取到的温湿度数据进行解析,并转换为实际温湿度值。
【DHT11传感器数据处理】DHT11传感器输出的数据为两个字节,其中高字节表示湿度值,低字节表示温度值。
湿度值范围为0%~100%,温度值范围为-40℃~+80℃。
解析数据时,需要将两个字节的高四位和低四位分别进行处理,得到湿度值和温度值。
2.温湿度传感器DHT11
一:在裸机上完成对 DHT11 的驱动。
打开配套程序下裸机文件夹—温湿度传感器 DHT11 下的工程文件,看到主
函数如下:(代码取用模块化编程,其他函数请看工程文件)
/**************************************/
/*
WeBee 团队
*/
/*
Zigbee 学习例程
*/
首先理清一下思路,我们要实验的功能是终端设备读取 DHT11 温湿度信息, 通过点播方式发送到协调器,协调器通过通常打印出来。在串口调试助手上面 显示。这就实现了无线温度采集。(使用点播的原因是终端设备有针对性地发 送数据给指定设备,不像广播和组播可能会造成数据冗余,关于点播内容请参 考《zigbee 实战演练》点播章节,这里不再累赘。)
T_H[2]=shidu_shi+48; T_H[3]=shidu_ge%10+48;
if ( AF_DataRequest( &Point_To_Point_DstAddr, &SampleApp_epDesc, SAMPLEAPP_POINT_TO_POINT_CLUSTERID, 4, T_H,
3. #include "UART.H"
4. #include "DHT11.H"
5. /***************************
主函数
6. ***************************/
7. void main(void)
8. {
9. Delay_ms(1000); //让设备稳定
13
10. InitUart();
//串口初始化
11. while(1)
基于MSP430 的温湿度监控系统分析
基于MSP430 的温湿度监控系统分析
0 引言
随着社会经济的发展和科学技术的不断进步,许多情况下都需要对环境
的温湿度进行限定。
因此,为了随时可以检测环境温湿度以进行监测,减少由
于温湿度对工程带来的经济损失,本文设计基于SHT11 对温湿度进行测量的
系统,可以实现对环境温湿度的监测。
1 系统硬件设计
1.1 总体结构
温度监测系统以msp430 为核心,采用温湿度传感器SHT11 测量温湿度,系统由温湿度数据采集模块、主控模块、显示模块、按键模块组成,由温湿度
数据采集模块采集数据送入单片机,处理之后根据按键操作完成相应的温度和
湿度显示,并且具有超限报警的功能,图1 为系统结构图。
1.2 硬件选型
1.2.1 主控模块
MSP430 单片机是由TI 公司推出的一系列超低功耗微处理器。
它的显
着特性是具有超低功耗,有5 个低功耗模式可供选择;数字控制的振荡器可以
使硬件从低功耗状态快速转化到唤醒状态,可以在少于6μs时间内达到激活工
作方式;开发语言有汇编语言和C 语言等特点。
以上特性使之成为电池供电便
携设备的首选微处理器。
1.2.2 温湿度监测模块
本设计采用SHT11 传感器测量温湿度。
温湿度测量芯片由一个电容式
聚合体测湿元件和一个能隙式测温元件组成,并与14 位的模数转换芯片以及。
无线低功耗温湿度监测系统
题目:基于MSP430 launchpad的蔬菜基地分布式无线低功耗温湿度监测系统摘要(中英文)本项目采用msp430g2231,作为核心处理芯片,由传感器采集模块、无线通信模块、报警模块和上位机构成;利用了两块msp430 launchpad通过dht11温湿度传感器同时对温湿度进行采集,一个作为主机,一个作为从机,从机与主机之间利用无线通信模块进行无线通信,通信距离达20米以上;主机直接与电脑进行通信将温湿度数据传输给电脑,同时可以设定温湿度的上限值,进行电脑报警,可以通过放特定的歌曲也可以通过录音来进行主机从机区别报警,这样就可以首先可以从听觉上感知温湿度的变化,如果想知道温湿度的具体值,可以直接通过上位机查看具体的温湿度的值,这样就实现了大棚蔬菜的温湿度实时监测,大大的提高了大范围种植效率。
The msp430g2231 is used for core processing chip of this project,the project contains sensor gathering module、wireless communication module、alarm module and upper computer; Otherwise, it use two msp430 luanchpad to gather humituer through dht11,the one is used for the master,another is used for the slaver,And master keep in touch with slaver by wireless communication,the communication can pass 20 metres . What’s more,the master tansmit data for computer by serial communication directly ,At the same time ,we can set the threshold of humituer in the upper computer,then it can reliaze alarm for us.The warning pattern is varies,For axample,play different songs or play our sound recording . The different warning pattern make people percept the humiture changing fistly.If we want to know the specific value of humiture,the data will be gained in upper computer .The method increase efficiency for monitoring Vegetable Production Bases .1.引言背景:在大棚蔬菜种植中,时常需要实时监测大棚内的空气温度和湿度以及土壤的湿度,让种植户能够了解大棚内的情况,温湿度采集就成为需要。