温湿传感子程序计算机Labview_计算机-Labview.pdf
-
资源ID:95397047
资源大小:126.18KB
全文页数:4页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
温湿传感子程序计算机Labview_计算机-Labview.pdf
include,rioCC2530.h,r#define uchar unsigned char#define uint unsigned int#define DHT11_DATA Pl_2 温湿度传感器数字输出口 uchar Overtime_counter;/判断等待是否超时的汁数器。利用 uchar 型的数值范围进展自动 延时控制(时长由初值决定),并判断是否超时 uchar bitvalue;从 DATA 总线上读到的位值 uchar T_dan_H.T_d&_LRH_dMa_HRH_data_L,checkda(a;/校验过的温度高 8 位,温度低 8 位,湿度高 8 位,湿度低 8位,校验和 8 位 uchar T_data_Hjemp,T_data_L_temp,RH_data_Hjemp.RH_data_L_tenip.checkdata_temp;/未经校验的数据 uchar comdatay/从 DHT11 读取的一个字节的数据 void initUART(void);void UartTX_Send_String(uchar*Datajnt len);uchar table16;延时函数 void Delay_l Ous(void)uchar i;for(i=0;i0;i-)for(j=0;j10;j+)Delay_10us();串口初始化 void initUARTtest(void)CLKCONCMD&=-0 x40;晶振 while(!(SLEEPSTA&0 x40);/等待晶振稳泄 CLKCONCMD&=0 x47;/TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD 1=0 x04;关闭不用的 RC 振荡器 PERCFG=0 x00;位置 1 P0 口 POSEL=0 x3c;/P0 用作串口 P2DIR&=0XC0;/P0 优先作为串口 0 UOCSR 1=0 x80;/UART 方式 UOGCR 1=10;/baud_c UOBAUD 1=216;波特率设为 57600 UTXOIF=0;)/串口发送字符串函数 void UartTX_Send_String(uchar*Data,int len)intj;for(j=0;jlen;j+)UODBUF=Paia 卄;while(UTXOIF=0);UTXOIF=0;从 DHT11 读取一个字节函数 void Read_Byte(void)uchar i;for(i=0;i8;i 卄)循环 8 次,读取 8bit 的数据(Overtime_counter=2;/读取并等待 DHT11 发岀的 12-14us低电平开场信号 PlDIR=OxOO;while(!DHTl 1_DATA)&O vertime_counter+);DelayOus();DelayOus();Delay_10us();Delay_10us();Delay_10us();Dclay_10us();Dclay_10us();Dclay_10us();/50us 的低电平再加上26-28us的髙电平判断上下电平 bit_vahic=O:/跳过门限后判断总线是高还是低,高为 1,低为 0 if(DHTll_DATA)bit_value=l;Overtime_counter=2 JI 等待 lbit 的电平信号完毕,不管是 0 是 1 在 118us 后都变为低电 平,否那么错误超时 whilc(DHTl 1_DATA)&Overtime_counter+);/i U8FLAG 加到 255 后溢岀为 0,跳出 循环,并后加加为 1 if(Overtime-counter=1)break;超时那么跳岀 for 循环 comdata=l;/左移 1 位,LSB 补 0 是否超时从总线上读到的位值校验过的温度高位温度低位湿度高位湿度低位校验和位未经校验的数据从读取的一个字节的数据延时函数卄延时晶振大约为串口初始化晶振等待晶振稳泄分频不分频关闭不用的振荡器位置口用作串口优电平开场信号的低电平再加上的髙电平判断上下电平跳过门限后判断总线是高还是低高为低为等待的电平信号完毕不管是是在后都变为低电平否那么错误超时加到后溢岀为跳出循环并后加加为超时那么跳岀循环左移位补赋值读取个应信号判断从机是否有低电平响应信号如不响应那么跳岀响应那么向下运行判断发出的的低电平响应信号是否完毕判断是否发出的髙电平如发岀那么进入数据接收状态读取湿度值整数局部的高读取湿度值小数局部的低读取温度值整comdatal=bit_value;/LSB 赋值 读取 5 个字节的函数 void Read_DHTll(void)uchar checksum;PlDIR=0 x04;DHT1 l.DATA=0;/主机拉低 18ms Dclay_100us(180);DHT11_DATA=1;总线由上拉电阻拉髙 主机延时 20us-40us DelayOus();DelayOus();DelayOus();DelayOus();DHTU_DATA=1;/主机转为输入或者输岀髙电平,DATA 线由上拉电阻拉高,准备判断 DHT11 的响应信号 PlDIR=0 x00;if(!DHTll_DATA)/判断从机是否有低电平响应信号如不响应那么跳岀,响应那么向下 运行 Overtime_counter=2;/判断 DHT11 发出的 80us 的低电平响应信号是否完毕 while(!DHTl 1_DATA)&Ovcrtimc_coumcr+);Overtime_counter=27/判断 DHT11 是否发出 80us 的髙电平,如发岀那么进入数据接收 状态 whilc(DHTl 1_DATA)&O vert i me.coun ter+);Read_Byte();/读取湿度值整数局部的高 8bit RH_data_H_temp=comdata;Rcad_Bytc();读取湿度值小数局部的低 8bit RH_data_L_temp=comdata;Read_Byte();/读取温度值整数局部的髙 8bit T_data_H_temp=comdata;Rcad_Bytc();读取温度值小数局部的低 8bit T_data_Ljemp=comdata;Read_Byte();/读取校验和的 8bit checkdata_temp=comdata;PlDIR=0 x04;DHTl 1_DATA=1;/读完数据将总线拉高 checksum=(T_data_H_temp+T_data_L_temp+RH_data_H_temp+R H_d ata_LJe mp);/进展数据校验 if(checksum=checkdata_temp)RH_data_H=RH_data_H_temp;是否超时从总线上读到的位值校验过的温度高位温度低位湿度高位湿度低位校验和位未经校验的数据从读取的一个字节的数据延时函数卄延时晶振大约为串口初始化晶振等待晶振稳泄分频不分频关闭不用的振荡器位置口用作串口优电平开场信号的低电平再加上的髙电平判断上下电平跳过门限后判断总线是高还是低高为低为等待的电平信号完毕不管是是在后都变为低电平否那么错误超时加到后溢岀为跳出循环并后加加为超时那么跳岀循环左移位补赋值读取个应信号判断从机是否有低电平响应信号如不响应那么跳岀响应那么向下运行判断发出的的低电平响应信号是否完毕判断是否发出的髙电平如发岀那么进入数据接收状态读取湿度值整数局部的高读取湿度值小数局部的低读取温度值整RH_data_L=RH_data_L_temp;T_data_H=T_data_H_temp:T_data_L=T_data_L_temp;checkdata=checkdatajemp;字符输出函数 void outchar(void)table0=RH_data_H/10+O;tablet 1=RH_da(a_H%10+0:table2=1?;table3=RH_data_L/10+,0,;table4=RH_data_L%40+0;tablet 5=%;table6=T_data_H/10+,0,;table7=T_data_H%10+0;table8=7;table9=T_data_U10+,0,;tablet 10=T_data_L%10+0;tablell=C;table 12=f;void main(void)initUARTtest();Delay00us(1500):/延时 100US(32M 晶振)while(l)Read_DHTll();/调用温湿度读取子程序 outchar();UartTX_Send_String(tabIeJ4);Delay00us(20000);循环采样的延时,读取模块数据周期不易小于 2S 是否超时从总线上读到的位值校验过的温度高位温度低位湿度高位湿度低位校验和位未经校验的数据从读取的一个字节的数据延时函数卄延时晶振大约为串口初始化晶振等待晶振稳泄分频不分频关闭不用的振荡器位置口用作串口优电平开场信号的低电平再加上的髙电平判断上下电平跳过门限后判断总线是高还是低高为低为等待的电平信号完毕不管是是在后都变为低电平否那么错误超时加到后溢岀为跳出循环并后加加为超时那么跳岀循环左移位补赋值读取个应信号判断从机是否有低电平响应信号如不响应那么跳岀响应那么向下运行判断发出的的低电平响应信号是否完毕判断是否发出的髙电平如发岀那么进入数据接收状态读取湿度值整数局部的高读取湿度值小数局部的低读取温度值整