基于STM32的防火防盗智能系统

基于STM32 的防火防盗智能系统包含:“STM32F103C8T6,0.96寸OLED,MQ_2烟雾传感器,红外监测传感器,4*4矩阵键盘,声光报警”

该系统为了方便直接由模块拼组。实现功能比较简单,后期继续扩展。可以实现实时显示温度值,密码输入功能,烟雾报警,红外报警。

 主函数代码如下:

while(1)
	{
        k++;
		ad = ADC_Trans();
		val = 3.3/4095*ad;
		printf("电压值:%f\r\n",val);
	   if(val>1.5)		
    { 
		  printf("电压值:%f\r\n",val);
			delay_ms(2000); 
			
		  OLED_ShowChinese(32,16,22,16,1);//烟
		  OLED_ShowChinese(48,16,23,16,1);//雾
		  OLED_ShowChinese(64,16,31,16,1);//异
		  OLED_ShowChinese(80,16,32,16,1);//常
		  OLED_Refresh();
			
		  GPIO_ResetBits(LED1_PORT,LED1_PIN);
		  GPIO_SetBits(BUZ_PORT,BUZ_PIN);
	}
		 
		  

		
		while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_14) == SET )    ///红外
			 {
				 
				 OLED_ShowChinese(32,16,27,16,1);//有
		     OLED_ShowChinese(48,16,28,16,1);//人
		     OLED_ShowChinese(64,16,29,16,1);//出
		     OLED_ShowChinese(80,16,30,16,1);//没
			   OLED_Refresh();
			   GPIO_ResetBits(LED1_PORT,LED1_PIN); 
				 GPIO_SetBits(BUZ_PORT,BUZ_PIN);
//				 printf("warning");
//            delay_ms(2000);    
				  
			 }
			 
			  if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_14) != SET&&val<1.5)
				{ 
				  GPIO_SetBits(LED1_PORT,LED1_PIN);
		      GPIO_ResetBits(BUZ_PORT,BUZ_PIN);
		
	      	}
				 
		if(k%50==0)
		{
			temper=DS18B20_GetTemperture();
			if(temper<0)
			{
				printf("检测的温度为:-");
			}
			else
			{
				printf("检测的温度为: ");
			}
			printf("%.2f°C\r\n",temper);
			temp  = (uint16_t)DS18B20_GetTemperture();
			OLED_ShowNum(0,0,temper,2,16,1);
			OLED_ShowString(16,0,"^C",16,1);
			OLED_Refresh();
		}
		delay_ms(10);
		
		key_val = Matrix_Key_Scan();
		 if (key_val > 0 && key_val < 17)
			 printf("This is S%d key\r\n",key_val);
		 
		 OLED_ShowChinese(32,16,12,16,1);//输
		 OLED_ShowChinese(48,16,13,16,1);//入
		 OLED_ShowChinese(64,16,14,16,1);//密
		 OLED_ShowChinese(80,16,15,16,1);//码	
		 OLED_Refresh();
		 
		 if (key_val > 0 && key_val < 10)
		 {
		     OLED_ShowString(Xlocation+8,Ylocation,"*",16,1); 
			   Xlocation = Xlocation+8; 
 
			   pass_word_Input[j] =key_val;
		     j++;
			  if(Xlocation==72){Xlocation=24;j=0;}
		
		 }
		  if(key_val == 10)      ///A-确认密码
		 {
			
			  if(pass_word_Input[0]==1&&pass_word_Input[1]==2&&pass_word_Input[2]==3&&pass_word_Input[3]==4
					&&pass_word_Input[4]==5&&pass_word_Input[5]==6)
				{
				  OLED_Clear();
					OLED_ShowChinese(32,32,14,16,1);//密
					OLED_ShowChinese(48,32,15,16,1);//码
					OLED_ShowChinese(64,32,16,16,1);//正
					OLED_ShowChinese(80,32,17,16,1);//确
					OLED_Refresh();delay_ms(5000);
					OLED_Clear();
					
					OLED_ShowChinese(32,16,12,16,1);//输
		      OLED_ShowChinese(48,16,13,16,1);//入
		      OLED_ShowChinese(64,16,14,16,1);//密
		      OLED_ShowChinese(80,16,15,16,1);//码	
					OLED_Refresh(); Xlocation=24;j=0;
					for (j=0;j<=5;j++)
					{
                pass_word_Input[j]=0;
					
					}
				}
			
			 
				else
			 {
				  OLED_Clear();
					OLED_ShowChinese(32,32,14,16,1);//密
					OLED_ShowChinese(48,32,15,16,1);//码
					OLED_ShowChinese(64,32,18,16,1);//错
					OLED_ShowChinese(80,32,19,16,1);//误
					OLED_Refresh();delay_ms(5000);
					OLED_Clear();
				 
				  GPIO_ResetBits(LED1_PORT,LED1_PIN); 
				  delay_ms(2000);
					GPIO_SetBits(LED1_PORT,LED1_PIN);
				 
					OLED_ShowChinese(32,16,12,16,1);//输
		      OLED_ShowChinese(48,16,13,16,1);//入
		      OLED_ShowChinese(64,16,14,16,1);//密
		      OLED_ShowChinese(80,16,15,16,1);//码	
					OLED_Refresh(); Xlocation=24;j=0;
				  

				}
			 
		
	}
	
}	
		

	}

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值