资源简介
stm32开发之传感器DHT11,读取温度和湿度
,包括proteus仿真程序以及keil程序(没什么好说的了)
,包括proteus仿真程序以及keil程序(没什么好说的了)
代码片段和文件信息
#include //单片机工程可以不用
#include //这个头文件一定要包含 ---这个头文件官方帮我们定义好了所有寄存器的地址
#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(1)
{
tmp = SysTick->CTRL;//读取
//只要该条件为非零 就表示已经递减计数到0
if(tmp & 0x10000)
{
break;//跳出
}
}
SysTick->VAL = 0;//把计数值清零
SysTick->CTRL &= (~0x01) ;//关闭定时器 0xFFFFFFFE 1110
//0|任何位不会改变该位
//1|任何位都会变为1
}
void delay_s(unsigned int s)
{
while(--s)
{
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}
}
/*----DHT11传感器模块,读取温度和湿度------------------------------------------------------------------*/
void GPIO_INIT(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC ENABLE);
GPIO_InitTypeDef aaa;
aaa.GPIO_Pin = GPIO_Pin_All;//引脚号选择 PA0 也要按照官方的填法 怎么填 去头文件 stm32f4xx_gpio.h
aaa.GPIO_Mode = GPIO_Mode_OUT;//输出模式
aaa.GPIO_OType = GPIO_OType_PP;//推挽输出
aaa.GPIO_Speed = GPIO_High_Speed;//高速
//写入
GPIO_Init(GPIOC&aaa);//&
//控制引脚
GPIO_WriteBit(GPIOC GPIO_Pin_All 1);
}
//初始化PD0为输出模式
void DATAPin_ModeOut(void)
{
GPIO_InitTypeDef aaa;//定义一个结构体变量
//1、使能指定的GPIO模块时钟--默认复位后开机时钟不会全部提供给各个模块 使用时需要自己开启
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD ENABLE);
//2、初始化引脚
aaa.GPIO_Pin = GPIO_Pin_0;//引脚号选择 PA0 也要按照官方的填法 怎么填 去头文件 stm32f4xx_gpio.h
aaa.GPIO_Mode = GPIO_Mode_OUT;//输出模式
aaa.GPIO_OType = GPIO_OType_PP;//推挽输出 低功率设备驱动
aaa.GPIO_PuPd = GPIO_PuPd_UP;//内部上拉使能
aaa.GPIO_Speed = GPIO_High_Speed;//高速
GPIO_Init(GPIOD&aaa);//&
}
//初始化PD0为输入模式
void DATAPin_ModeIn(void)
{
GPIO_InitTypeDef aaa;//定义一个结构体变量
//1、使能指定的GPIO模块时钟--默认复位后开机时钟不会全部提供给各个模块 使用时需要自己开启
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_G
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-03-22 16:05 Keil5\
文件 0 2020-03-10 11:37 Keil5\LED.uvmpw
文件 94435 2020-03-22 16:05 Keil5\LED1.uvguix.摄心为戒
文件 20251 2020-03-22 14:04 Keil5\LED1.uvoptx
文件 19212 2020-03-14 15:46 Keil5\LED1.uvprojx
目录 0 2020-03-18 11:11 Keil5\Listings\
文件 73729 2020-03-22 14:06 Keil5\Listings\LED1.map
文件 68267 2020-03-22 13:55 Keil5\Listings\startup_stm32f401xx.lst
文件 7505 2020-03-23 16:28 Keil5\main.c
目录 0 2020-03-22 14:06 Keil5\ob
文件 344648 2020-03-22 13:55 Keil5\ob
文件 1939 2020-03-22 13:55 Keil5\ob
文件 342960 2020-03-22 13:55 Keil5\ob
文件 263936 2020-03-22 14:06 Keil5\ob
文件 4116 2020-03-22 14:06 Keil5\ob
文件 6290 2020-03-22 14:06 Keil5\ob
文件 21 2020-03-22 14:09 Keil5\ob
文件 46133 2020-03-22 14:06 Keil5\ob
文件 520 2020-03-22 14:06 Keil5\ob
文件 494 2020-03-11 22:27 Keil5\ob
文件 16623 2020-03-22 14:06 Keil5\ob
文件 312876 2020-03-22 14:06 Keil5\ob
文件 1522 2020-03-22 14:06 Keil5\ob
文件 332280 2020-03-22 14:06 Keil5\ob
文件 306826 2020-03-22 13:55 Keil5\ob
文件 1631 2020-03-22 13:55 Keil5\ob
文件 319680 2020-03-22 13:55 Keil5\ob
文件 79 2020-03-22 13:55 Keil5\ob
文件 6920 2020-03-22 13:55 Keil5\ob
文件 307293 2020-03-22 13:55 Keil5\ob
文件 1831 2020-03-22 13:55 Keil5\ob
............此处省略27个文件信息
- 上一篇:modbus模拟器.rar
- 下一篇:中国省级shp
评论
共有 条评论