资源描述:
《基于MSP430的土壤温湿度及光照参数检测模块.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、各个模块与MSP430F5309连接图:作者:Edison.NO1116各个模块实物图:DHT11温湿度模块DHT11是数字的湿度传感器....6元一个买的...与它的通信方式类似于I2C总线通信.串行数据一次返回40位.数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。如果模块离芯片距离近,建议在数据线接一5k电阻上拉.时序图如下:第一次拉低要求至少18ms,之后拉高
2、20-40us,之后DHT拉低80us后再拉高80us..之后进入数据阶段.每个数据,0,1以高电平的时间长短区分.0数据高电平时间为26-28us,1为70us..不论1或者0,之前都先输出50us的低电平..数据传输完成后拉高总线.TSL245光照模块MSP430程序代码:#include#include//P2.1<---->dht11温湿度测量接口//P2.2----->illuvaluereadenabledtsl245片选、供电接口//P2.3----->soilresivaluereadenabl
3、ed土壤电阻率测量片选、供电接口//P2.4<-----soilfrequentandillufrequentinputtsl245和土壤电阻率模块频率输入口#defineHIGHP2OUT
4、=BIT1;#defineLOWP2OUT&=~BIT1;longintcount,freqvalue;inti,temp16,humd16,freqmeasureenabled;chartemph,templ,humdh,humdl,check,cal;voidDelayNus(intn){TA1CCR0=n;//sybchangedTA1CCTL0
5、=MC_1;//增
6、计数到CCR0while(!(TA1CTL&BIT0));//等待TA1CTL&=~MC_1;//停止计数TA1CTL&=~BIT0;//清除中断标志}charreceive(void)//接受函数{chartem,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(
7、!(P2IN&BIT1));//最后一次给函数返回留下时间cnt++;}returntem;}intdht11read(void)//dht11温湿度读取函数,读取数据成功返回值1,不成功返回0,读取的数据保存在temph,templ,humdh,humdl,humd16,temp16中{P2DIR
8、=BIT1;P2OUT
9、=BIT1;//1Mclock------------------------------------------------------------------------UCSCTL0=0x0000;//Setlowestpossibl
10、eDCOx,MODxUCSCTL1=DCORSEL_2;//SelectDCOrange2MHzoperationUCSCTL2=FLLD_1
11、31;//SetDCOMultiplierfor1MHz//(N+1)*FLLRef=Fdco//(31+1)*32768=1MHz//SetFLLDiv=fDCOCLK/2//1Mclock------------------------------------------------------------------------TA1CCTL0&=~CCIE;//CCR0interruptenabled-----
12、--------------?????????????iamnotsureitisrightTA1CTL=TASSEL_2
13、TACLR;//SMCLK,contmode,clearTARLOW;DelayNus(18000);HIGH;DelayNus(30);P2DIR&=~BIT1;while(P2IN&BIT1);while(!(P2IN&BIT1));while(P2IN&BIT1);//Datacomeshumdh=receive();humdl=receive();temph=receive();templ=receive();check=rece
14、ive();cal=humdh+hum