【单片机毕业设计4-基于stm32c8t6的红外测温系统】

【单片机毕业设计4-基于stm32c8t6的红外测温系统】

  • 前言
  • 一、功能介绍
  • 二、硬件部分
  • 三、软件部分
  • 总结


前言

这里是小殷学长,单片机毕业设计篇4基于stm32的红外测温系统
创作不易,拒绝白嫖可私

在这里插入图片描述


一、功能介绍

------------------------------------------红外测温系统-----------------------------------------
1.OLED可实时显示当前所测温度以及温度阈值 测温时间
2.可通过按键进行温度阈值的调节,按键按下一次测温一次
3.超过阈值蜂鸣器发出警报
4.温度正常舵机旋转模拟开门
5.数据(实时温度、温度阈值、测温时间)可通过蓝牙实时上传到手机 以及蓝牙进行参数调节
6.语音模块进行温度播报
功能可定制


实物展示

【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第1张图片

二、硬件部分

下面为该毕设中所用到的相关硬件说明,具体参数不做细节描述

硬件材料

【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第2张图片
【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第3张图片

PCB和原理图

【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第4张图片

【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第5张图片

三、软件部分

【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第6张图片

main.c部分代码

int main(void)
{		

	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
	delay_init();
	LED_Init();
	Buzzer_Init();
	Init_Usart();
	Exit_Init();
	servo_init();
	SMBus_Init();
	OLED_Init();
	OLED_Clear(0);
	printf("欢迎使用红外测温系统");//发送语音合成指令
	USART1_SendString((unsigned char *)"======HardWare Init Finished======\r\n");
	Buzzer_Voice();
	while(1)
	{	
			Interface_Task(index_mode);     //界面显示
			Logical_Task();                 //逻辑处理
			Usart_Task();                   //串口任务
	}
}
 
//1 蓝牙 RX- PA9  TX-PA10
void USART1_IRQHandler(void)
{
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
	{
		Usart_cmd = USART_ReceiveData(USART1);
		USART_ClearFlag(USART1, USART_FLAG_RXNE);
	}
}


//中断20ms进一次
void TIM3_IRQHandler(void)   //TIM3中断
{
	static unsigned char count = 0;
	static unsigned char clear = 0,t = 0;
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
		{		
			if(start_temp == 1)           //开始测温
			{
				t_temp = SMBus_ReadTemp();
				temp = t_temp*10;   //转成整数方便显示
				OLED_ShowNum(58,3,temp/100,1,16);	
				OLED_ShowNum(70,3,temp/10%10,1,16);	
				OLED_ShowChar(80,3,'.',8);
				OLED_ShowNum(86,3,temp%10,1,16);
				printf("当前温度为%d%d.%d\r\n",temp/100,temp/10%10,temp%10);
				t_hour = hour,t_min = min,t_sec = sec; //保存测温时间
				send_flag = 1;                         //数据发送到手机
				start_temp = 0;
				logical_flag = 1;
				servo_flag = 1;
				flag = 1;
				clear = 1;
			}
			//下面为定时清除温度
			if(clear == 1 )
			{
				t++;
				if(t >= 100)  //2s后temp清0
				{
					t = 0;
					temp = 0;
					clear = 0;
				}
			}
			//下面为实时时间处理
			if(timer_flag == 1)
			{
					count++;
					if(count == 50)  //1s
					{
						count = 0;		
						sec++;
						if(sec == 60)
						{
							sec = 0;
							min++;
							if(min == 60)
							{
								min = 0;
								hour++;
								if(hour == 24)
								{
									hour = 0;
								}
							}
						}
					//sprintf(str_t,"%02d:%02d:%02d\r\n",hour,min,sec);
					//printf("%s\r\n",str_t);
					}					
				}
			TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志  //10ms	
		}
}

总结

上面为基于stm32f103c8t6的红外测温系统相关的大致介绍,源码,pcb和原理图以及相关文档说明做了详细说明,有需可私

创作不易,拒绝白嫖

【单片机毕业设计4-基于stm32c8t6的红外测温系统】_第7张图片

在这里插入图片描述

你可能感兴趣的:(毕业设计,单片机,课程设计,stm32)