DHT95中的SCK应该连接51单片机中的什么引脚
现在正在做测温度的系统,用到了DHT95温湿度传感器,在介绍用法时没说明白应该连接51单片机中的那个引脚,是连接48号aclk输出吗?还有测试时要对单片机写那些程序,只是...
现在正在做测温度的系统,用到了DHT95温湿度传感器,在介绍用法时没说明 白应该连接51单片机中的那个引脚,是连接48号aclk输出吗?还有测试时要对单片机写那些程序,只是完成简单的温度,适度的测量即可。急!我会酌情给分的,在知识面前我毫不吝啬分数。请大侠帮帮忙。。。。。
是,没有48号引脚,开始打算用430的,忘了看51的了。。。。。抱歉。。。单片机为 89C51RC。 只有40个引脚。。。
我现在的认识和最后一个回答者的观点一样,但是定义时那些测量温度,湿度的应该怎么写呢,已经知道了发送什么命令可以传回什么样的数据。。。。谢谢…… 展开
是,没有48号引脚,开始打算用430的,忘了看51的了。。。。。抱歉。。。单片机为 89C51RC。 只有40个引脚。。。
我现在的认识和最后一个回答者的观点一样,但是定义时那些测量温度,湿度的应该怎么写呢,已经知道了发送什么命令可以传回什么样的数据。。。。谢谢…… 展开
4个回答
展开全部
不清楚你用的是哪款51单片机,怎么会有48号那么多引脚(51一般都是40或者44个引脚)。
如何接,你首先要明白DHT95是用SPI同步串行通信来和单片机进行通信的,所以说,如果你的51单片机如果没有SPI功能,那就需要用程序来模拟了(很多51单片机都没有SPI功能的,你用的超过44个引脚的单片机我还真不好说有还是没有,自己看看吧)。
这里只说没有SPI功能的单片机和DHT95连接。因为SCK是传感器在SPI通信时候的频率输入(就是SPI时钟线),时钟线只能是用程序来模拟,比如说你看DHT95的的数据手册,里面说明了在SCK的下降沿发送数据,所以需要在单片机程序能控制的情况下发送和接受数据,因此不能使用你说的ACLK引脚。
另外看来你还没认真看过DHT95的数据手册,也不知道SPI通信的原理,要做这个传感器,先把上述的两个知识看一看吧。
补充:MSP430单片机有些芯片集成了SPI口,如果用它来和传感器连接就比较简单。而你说的89C51RC应该是STC89C51RC,这款芯片没有集成SPI口,所以需要自己用程序做模拟SPI,DHT95的销售商大连北方测控的网站上有关于51和这个传感器的通信程序,你可以去找来看看。但如果你是想学这东西,最好还是先看看SPI的通信原理,DHT95的数据手册,还有这个文章
如何接,你首先要明白DHT95是用SPI同步串行通信来和单片机进行通信的,所以说,如果你的51单片机如果没有SPI功能,那就需要用程序来模拟了(很多51单片机都没有SPI功能的,你用的超过44个引脚的单片机我还真不好说有还是没有,自己看看吧)。
这里只说没有SPI功能的单片机和DHT95连接。因为SCK是传感器在SPI通信时候的频率输入(就是SPI时钟线),时钟线只能是用程序来模拟,比如说你看DHT95的的数据手册,里面说明了在SCK的下降沿发送数据,所以需要在单片机程序能控制的情况下发送和接受数据,因此不能使用你说的ACLK引脚。
另外看来你还没认真看过DHT95的数据手册,也不知道SPI通信的原理,要做这个传感器,先把上述的两个知识看一看吧。
补充:MSP430单片机有些芯片集成了SPI口,如果用它来和传感器连接就比较简单。而你说的89C51RC应该是STC89C51RC,这款芯片没有集成SPI口,所以需要自己用程序做模拟SPI,DHT95的销售商大连北方测控的网站上有关于51和这个传感器的通信程序,你可以去找来看看。但如果你是想学这东西,最好还是先看看SPI的通信原理,DHT95的数据手册,还有这个文章
参考资料: http://wenku.baidu.com/view/361992e9856a561252d36f3b.html
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
你首先应该先了解下dht95四个脚的定义
定义如下
1 SCK 时钟信号
2 VDD 电源
3 GND 地
4 DATA 数据输出
那么就说它是通过IIC总线和单片机通讯的
但又不能按照IIC协议编址,
可是如果IIC总线上没有挂接别的元件,传感器可以连接到IIC总线上。
而89c51rc单片机硬件上是没有IIC总线,
只有通过软件模拟IIC总线。
而通过软件模拟IIC总线,单片机的任何两个I/O都可以成为IIC总线接口。
所以SCK和DATA可以和单片机任意两个I/O口相连,
只是需要你自己定义。
给个我写的你看看啊!
#define uchar unsigned char
sbit sda=P2^0;
sbit scl=P2^1;
uchar a;
void delay()
{ ;; }
void start() //开始信号
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop() //停止
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void respons() //应答
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}
void init()
{
sda=1;
delay();
scl=1;
delay();
}
void write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
// scl=0;
// delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_byte()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
void delay1(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void write_add(uchar address,uchar date)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_add(uchar address)
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}
void main()
{
init();
write_add(23,0xaa);
delay1(100);
P1=read_add(23);
while(1);
}
定义如下
1 SCK 时钟信号
2 VDD 电源
3 GND 地
4 DATA 数据输出
那么就说它是通过IIC总线和单片机通讯的
但又不能按照IIC协议编址,
可是如果IIC总线上没有挂接别的元件,传感器可以连接到IIC总线上。
而89c51rc单片机硬件上是没有IIC总线,
只有通过软件模拟IIC总线。
而通过软件模拟IIC总线,单片机的任何两个I/O都可以成为IIC总线接口。
所以SCK和DATA可以和单片机任意两个I/O口相连,
只是需要你自己定义。
给个我写的你看看啊!
#define uchar unsigned char
sbit sda=P2^0;
sbit scl=P2^1;
uchar a;
void delay()
{ ;; }
void start() //开始信号
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop() //停止
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void respons() //应答
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}
void init()
{
sda=1;
delay();
scl=1;
delay();
}
void write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
// scl=0;
// delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_byte()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
void delay1(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void write_add(uchar address,uchar date)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_add(uchar address)
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}
void main()
{
init();
write_add(23,0xaa);
delay1(100);
P1=read_add(23);
while(1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SCK 接 P1.7 口 很确定!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己定义,协议自己写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询