DHT11在stc12c5608ad上的延时函数跟stc89c516rd+有什么不一样
时间: 2023-12-06 12:40:06 浏览: 34
STC12C5608AD和STC89C516RD+都是STC公司的单片机,它们的延时函数实现方式应该是基本相同的。因此,DHT11在这两种单片机上的延时函数应该也是相同的。
但是,由于这两种单片机的主频不同,因此在实现延时函数时需要根据具体的主频进行调整。如果两种单片机的主频不同,那么它们的延时函数会有所不同。因此,需要对具体的主频进行调整,以确保延时函数的准确性。
相关问题
STC90C516RD+的dht11程序在STC12C5608不能用的原因
STC90C516RD+和STC12C5608是两种不同的单片机,它们的架构、指令集和特性都有所不同。因此,针对STC90C516RD+编写的DHT11程序可能无法直接在STC12C5608上运行。
要在STC12C5608上使用DHT11传感器,您需要重新编写适合STC12C5608的程序。首先,您需要了解STC12C5608的架构和编程方式,并根据其特性来编写相应的程序。然后,您需要修改DHT11程序的引脚定义、时序等参数,以适应STC12C5608的要求。
总之,您需要根据具体情况进行编程,才能在STC12C5608上使用DHT11传感器。
晶振频率11.0592的STC12C5608AD的dht11程序
以下是使用STC12C5608AD单片机和DHT11温湿度传感器的程序:
```
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DHT11=P3^4;
uchar humidity,temperature;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void start() //DHT11开始信号
{
DHT11=0;
delay(30);
DHT11=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
uchar response() //DHT11响应信号
{
uchar i;
for(i=0;i<8;i++)
{
while(!DHT11);
delay(5);
if(DHT11==0)
{
while(!DHT11);
return 0;
}
delay(5);
}
return 1;
}
uchar read_byte() //读取一个字节的数据
{
uchar i,j,k=0;
for(i=0;i<8;i++)
{
while(!DHT11);
delay(5);
j=DHT11;
delay(5);
k=(k<<1)|j;
}
return k;
}
void read_dht11() //读取温湿度数据
{
start();
if(response())
{
humidity=read_byte();
read_byte();
temperature=read_byte();
read_byte();
read_byte();
}
else
{
humidity=0;
temperature=0;
}
}
void main()
{
while(1)
{
read_dht11();
printf("Humidity=%d%%,Temperature=%dC\n",humidity,temperature);
delay(1000);
}
}
```
在程序中,需要使用STC12C5608AD的定时器和串口通信模块,程序中没有包含这些部分的代码。您需要根据自己的需要进行添加。