STM32 Proteus仿真GP2Y101红外测距温度湿度DHT11内部RTC-0010
Proteus仿真小实验:
STM32 Proteus仿真GP2Y101红外测距温度湿度DHT11内部RTC-0010
功能:
硬件组成:STM32F103R6单片机 +LCD1602显示器+GP2Y1014AU红外测距+DHT11温度湿度+多个按键
1.单片机通过内部ADC采集GP2Y1014AU红外测距的电压。计算出距离。
2.单片机获取DHT11温度湿度。
3.使用单片机内部RTC计算时间。
4.LCD1602显示器显示温度湿度红外距离北京时间。
5.按键可以设定北京时间。
有功能视频哦:
可以哔哩哔哩B站,搜索UP主“单片机仿真汇”。在其空间中搜索关键词“红外测距”即可找到对应详细功能视频和介绍。
电路图:
部分源代码:
//按键扫描,获取按键状态
k1 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_11);
k2 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_12);
k3 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_13);
k4 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_0);
k5 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_1);
k6 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_2);
//小时
//表明按下
if(k1 == 0)
{
K1Flag = 1;
}
else
{
//释放后进行响应
if(K1Flag )
{
K1Flag = 0;
calendar.hour++;
if(calendar.hour>=24)
{
calendar.hour = 0;
}
//RTC_Init();
RTC_SetCounter(calendar.hour*3600+calendar.min*60+calendar.sec);//hour:min:sec;
}
}
//分钟
//表明按下
if(k2 == 0)
{
K2Flag = 1;
}
else
{
//释放后进行响应
if(K2Flag )
{
K2Flag = 0;
calendar.min++;
if(calendar.min>=60)
{
calendar.min = 0;
}
//RTC_Init();
RTC_SetCounter(calendar.hour*3600+calendar.min*60+calendar.sec);//hour:min:sec;
}
}
//秒钟
//表明按下
if(k3 == 0)
{
K3Flag = 1;
}
else
{
//释放后进行响应
if(K3Flag )
{
K3Flag = 0;