249-基于stm32单片机超声波测距温湿度检测LCD1602显示(源程序+原理图+元件清单)

       一:功能介绍:

1、系统组成:采用stm32f103c8t6核心板+DHT11温湿度+超声波模块+LCD1602显示屏+蜂鸣器+按键
2、通过DHT11传感器采集温湿度,显示到LCD1602上面;
3、通过超声波传感器检测距离,显示到LCD1602上面;
4、通过按键设置温度和距离的阈值,显示到LCD1602上面;
5、当温度大于设置阈值或者检测距离小于阈值,蜂鸣器进行报警提醒;

二:实物演示视频

249-基于stm32单片机超声波测距温湿度检测LCD1602显示

三:程序代码展示(采用C语言编写,使用keil5编译,代码有中文注释,新手容易看懂)

 

void anjiansaomiao(void)
{
	static u8_t k1,k2,k3,k4;
	static u8_t K1Flag=0,K2Flag=0,K3Flag=0,K4Flag=0;	
	//按键扫描,获取按键状态
	k1 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_15);
	k2 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_14);
	k3 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_13);
	k4 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_12);

	//小时设定值+
	//表明按下
	if(k1 == 0)
	{
		K1Flag = 1;
	}
	else
	{
		//释放后进行响应
		if(K1Flag )
		{
			K1Flag = 0;
			wendu++; 
			if(wendu>99) wendu=99;			
		}
	}
	//小时设定值-		
	//表明按下
	if(k2 == 0)
	{
		K2Flag = 1;
			
	}
	else
	{
		//释放后进行响应
		if(K2Flag )
		{
			K2Flag = 0;
			wendu--;  
				if(wendu<0) wendu=0;
		}
	}	
	
	
	//分钟设定值+
	//表明按下
	if(k3 == 0)
	{
		K3Flag = 1;
	}
	else
	{
		//释放后进行响应
		if(K3Flag )
		{
			K3Flag = 0;
			juli++; 
				if(juli>99) juli=99;
		}
	}
	//分钟设定值-		
	//表明按下
	if(k4 == 0)
	{
		K4Flag = 1;			
	}
	else
	{
		//释放后进行响应
		if(K4Flag)
		{
			K4Flag = 0;
			juli--;  
				if(juli<0) juli=0;
		}
	}			
}

int main()
{
	TIMER2_init(999,71);	
	SysTick_Init(72);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
	USART1_Init(9600);
	LED_Init();
	DHT11_Init ();
	beep1=1;
Ultrasonic_init();
		delay_ms(100);
	GPIO_Configuration();
	Init1602();		WrByte1602(0,1,'T');	
	while(1)
	{
		anjiansaomiao();
				DHT11_Read_TempAndHumidity ( & DHT11_Data );
				sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END", 
									ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int, 
			            DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
                  ucBuzzerStatus );

			WrByte1602(0,1,'T');
			WrByte1602(0,2,'=');
			WrByte1602(0,3,AsciiCode[DHT11_Data.temp_int%1000/100]);//温度
			WrByte1602(0,4,AsciiCode[DHT11_Data.temp_int%100/10]);
			WrByte1602(0,5,AsciiCode[DHT11_Data.temp_int%10]);
			WrByte1602(0,7,'H');
			WrByte1602(0,8,'=');			
			WrByte1602(0,9,AsciiCode[DHT11_Data.humi_int%1000/100]);//湿度
			WrByte1602(0,10,AsciiCode[DHT11_Data.humi_int%100/10]);
			WrByte1602(0,11,AsciiCode[DHT11_Data.humi_int%10]);
			WrByte1602(0,14,AsciiCode[wendu%100/10]);
			WrByte1602(0,15,AsciiCode[wendu%10]);
			WrByte1602(1,14,AsciiCode[juli%100/10]);
			WrByte1602(1,15,AsciiCode[juli%10]);
			oled_Ultrasonic();

if(DHT11_Data.temp_int>wendu) 
{
	beep1=0;
}
else 	beep1=1;

	}
}

四:原理图文件展示(采用AD(Altium Designer)打开)

 五:实物图展示:

六: 资料清单展示:

资料包百度网盘下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子工程DIY工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值