STM32(stm32f401xx)开发之传感器 DHT11 (读取温度和湿度))

本文介绍了如何使用STM32F401xx进行DHT11传感器的开发,通过Proteus仿真和Keil编程实现温度与湿度的读取。提供了仿真图及程序下载链接。
摘要由CSDN通过智能技术生成

Proteus和Keils程序下载(百度网盘)

链接:https://pan.baidu.com/s/1sxLmNcx8sUK-0OkzDexNVQ?pwd=nxfn
提取码:nxfn

(有一说一,CSDN上传资源就算本来下载积分设成0,也会自己调高,真的难受,还是放链接了)

STM32开发之传感器 DHT11 (读取温度和湿度))

proteus仿真图

在这里插入图片描述

keil程序

#include <stdio.h>//单片机工程可以不用

#include <stm32f4xx.h>//这个头文件一定要包含 ---这个头文件官方帮我们定义好了所有寄存器的地址


#define LCD_RS GPIO_Pin_0
#define LCD_RW GPIO_Pin_1
#define LCD_EA GPIO_Pin_2

int Tem = 8;
int Hum;

unsigned char table[]="Tem 00 Hum 00";
/*----systick定时器模块,用于精准延时------------------------------------------------------------------*/
void systick_init(void)
{
   
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

}

void delay_us(unsigned int us)
{
   
	unsigned int set_time = us*84;//得到设定值  us*84<16777215   us<199728
	unsigned int tmp;
	
	//初始化
	SysTick->LOAD = set_time;//把当前获取需要的延时的时间设定值丢给LOAD寄存器 24bit
	SysTick->VAL  = 0;//先清空计数器的当前值  写0  之后再开启定时器后 会将LOAD的设定值自动装载进VAL

	//开滴答定时器
	SysTick->CTRL |= 0x01;//给最低位1 开滴答定时器
	
	while(1)
	{
   
		tmp = SysTick->CTRL;//读取
		//只要该条件为非零 就表示已经递减计数到0
		if(tmp & 0x10000)
		{
   
			break;//跳出
	
		}
	}
	SysTick->VAL = 0;//把计数值清零
	SysTick->CTRL &= (~0x01) ;//关闭定时器   0xFFFFFFFE 1110
	//0|任何位不会改变该位
	//1|任何位都会变为1
}
void delay_ms(unsigned int ms)
{
   
	unsigned int set_time = ms*84000;//得到设定值  us*84000<16777215   us<199.728  最高这一次延时
	unsigned int tmp;
	
	//初始化
	SysTick->LOAD = set_time;//把当前获取需要的延时的时间设定值丢给LOAD寄存器 24bit
	SysTick->VAL  = 0;//先清空计数器的当前值  写0  之后再开启定时器后 会将LOAD的设定值自动装载进VAL

	//开滴答定时器
	SysTick->CTRL |= 0x01;//给最低位1 开滴答定时器
	
	while
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值