Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MCSP432 外接DHT11温湿度传感器

$
0
0

按照51的形式修改代码操作DHT11温湿度传感器的发现发送的数据电压正常,但是一直得不到DH11温湿度传感器的回应,

51的代码:

void RH(void)
{
//主机拉低18ms
P2_0=0;
Delay(180);
P2_0=1;
//总线由上拉电阻拉高 主机延时20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主机设为输入 判断从机响应信号
P2_0=1;
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!P2_0) //T !
{
U8FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!P2_0)&&U8FLAG++);
U8FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((P2_0)&&U8FLAG++);
//数据接收状态
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;
P2_0=1;
//数据校验

我修改后的代码:

void RH(void)
{
//主机拉低18ms
P5->DIR |= 0x01;
P5->OUT &= ~0x01;
Clock_Delay1ms(18);
P5->OUT |=0x01;
//总线由上拉电阻拉高 主机延时20us
P5->DIR &= ~0x01;
Clock_Delay1us(20);
//主机设为输入 判断从机响应信号
P5->DIR &= ~0x01;
//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!(P5->IN&0x01)) //T !         此处一直检测不到低电平的回应
{
U8FLAG=2;
//判断从机是否发出 80us 的低电平响应信号是否结束
while((!(P5->IN&0x01))&&U8FLAG++);
U8FLAG=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while((P5->IN&0x01)&&U8FLAG++);
//数据接收状态
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;
P5->DIR |=0x01;
P5->OUT |=0x01;
//数据校验

我不知道我这样操作GPIO的方式是否正确 ,有没有GPIO操一线式的例子可以参考。


Viewing all articles
Browse latest Browse all 3634

Trending Articles