⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +

📁 STM32的恒温消毒柜设计
💻
字号:
/******************** CHD1807 Team **************************
 * 文件名  :main.c
 * 描述    :LCD显示实验,可中英混合显示,可显示BMP格式的图片,可截图,
 *           截图保存在MicroSD卡中,文件名存为myScreen.bmp,
 *           需显示的BMP图片和字库存放在MicroSD卡中。         
 * 实验平台:CHD1807-STM32开发板
 * 库版本  :ST3.5.0
**********************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "SysTick.h"
#include "usart1.h"	
#include "lcd.h"
#include "sd_fs_app.h"
#include "Sd_bmp.h"
#include "led.h"
#include "exti.h"
#include "start.h"
#include"timetask.h"
#include"ds18b20.h"
#include"pwm_out.h"
#include"dsp.h"
#include "keyboard.h"
volatile int T_desired=0;
volatile u32 time=0;
volatile int temp;
volatile uint8_t status=0;
volatile int subflag=0,remain_time=600;
void temp_realdsp(int);
int min(int ,int);
volatile int pi;
int main(void)
{
	init();	
	///START_TIME;
	while(DS18B20_Init())//初始化DS18B20,兼检测18B20
	{
	    LCD_Rectangle(0,0,319,239,BLUE) ;
		LCD_Str_CH( 50,100,"沒有温度传感器请检查",RED,BLUE)	;
		//USART1_printf(USART1, "qing jian cha\n");
	}
	dsp();	 
	 while(1)
     {	
	 	   	temp=(int)(DS18B20_Get_Temp());
		     temp_realdsp(temp);
	         if(key_scan()==1)
			 {
				 GPIO_WriteBit(GPIOB, GPIO_Pin_14, 
				(BitAction)((1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_14))));
				status=1;
				subflag=1;
				
			//	GPIO_ResetBits(GPIOB, GPIO_Pin_15);
			 }	
			 if(key_scan()==4)
			 {
				 GPIO_WriteBit(GPIOB, GPIO_Pin_14, 
				(BitAction)((1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_14))));
				status=0;
			 }	
			 
		////////////////////////////////////////////////////////////////////////////////////
		if(subflag==1)
		{
		  START_TIME;
		  subflag=0;
		}
		if(status==1)
		{
		 GPIO_ResetBits(GPIOD, GPIO_Pin_13);
		 
		 if(time==18&&remain_time>0)
		 {
		 time=0;
		 remain_time--;
		 }
			LCD_Rectangle(240,55,69,15,BLUE) ;
		    LCD_Str_O(255, 55,"ok",BLACK);
			 LCD_Rectangle(240,90,60,25,BLUE) ;
			LCD_Num_6x12_O(245,95,remain_time, BLACK);
		    GPIO_ResetBits(GPIOB, GPIO_Pin_15);
			if(remain_time==0)
			{
			GPIO_ResetBits(GPIOB, GPIO_Pin_0);
			GPIO_SetBits(GPIOD, GPIO_Pin_13);
			RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|
			RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, DISABLE);
			RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, DISABLE);

			
			}
			 //////////////////////////////////////////////////////////////////////////
			if (T_desired<=35) 
					 {
						if((10*T_desired-temp)>10)
							 TIM_SetCompare3(TIM3, 800);
						 else if((10*T_desired-temp)>8)
						 	 TIM_SetCompare3(TIM3, 200);
						 else if((10*T_desired-temp)>6)	
						       TIM_SetCompare3(TIM3, 200);
						 else if((10*T_desired-temp)>4)
							       	TIM_SetCompare3(TIM3,800);
						 else if((10*T_desired-temp)>3)
							       	TIM_SetCompare3(TIM3,400);
					 	 else if((10*T_desired-temp)>2)
							       	TIM_SetCompare3(TIM3,200);
						 else if((10*T_desired-temp)>1)
							       	TIM_SetCompare3(TIM3,200);
						 else if((10*T_desired-temp)>0)
							       	TIM_SetCompare3(TIM3,600);
					  	else 	TIM_SetCompare3(TIM3,0); 
			    	}
			//////////////////////////////////////////////////////////////////////////
					 if (T_desired>=35&&T_desired<=42) 
					 {
						if((10*T_desired-temp)>10)
							 TIM_SetCompare3(TIM3, 1000);
						 else if((10*T_desired-temp)>8)
						 	 TIM_SetCompare3(TIM3, 200);
						 else if((10*T_desired-temp)>6)	
						       TIM_SetCompare3(TIM3, 200);
						 else if((10*T_desired-temp)>4)
							       	TIM_SetCompare3(TIM3,1000);
						 else if((10*T_desired-temp)>3)
							       	TIM_SetCompare3(TIM3,100);
					 	 else if((10*T_desired-temp)>2)
							       	TIM_SetCompare3(TIM3,200);
						 else if((10*T_desired-temp)>1)
							       	TIM_SetCompare3(TIM3,1000);
						 else if((10*T_desired-temp)>0)
							       	TIM_SetCompare3(TIM3,800);
					  	else 	TIM_SetCompare3(TIM3,0); 
			    	}
			////////////////////////////////////////////////////////////////////////////////////
				if (T_desired>42&&T_desired<50) 
				{
					if((10*T_desired-temp)>10)
						 TIM_SetCompare3(TIM3, 1000);
					 else if((10*T_desired-temp)>8)
					 	 TIM_SetCompare3(TIM3, 200);
					 else if((10*T_desired-temp)>6)	
					       TIM_SetCompare3(TIM3, 200);
					 else if((10*T_desired-temp)>4)
						       	TIM_SetCompare3(TIM3,1000);
					 else if((10*T_desired-temp)>3)
						       	TIM_SetCompare3(TIM3,1000);
				 	 else if((10*T_desired-temp)>2)
						       	TIM_SetCompare3(TIM3,500);
					 else if((10*T_desired-temp)>1)
						       	TIM_SetCompare3(TIM3,1000);
					 else if((10*T_desired-temp)>0)
						       	TIM_SetCompare3(TIM3,1000);
				  	else 	TIM_SetCompare3(TIM3,0); 
				}
		///////////////////////////////////////////////////////////////////
		if (T_desired>=51&&T_desired<58) 
		{
			if((10*T_desired-temp)>10)
				 TIM_SetCompare3(TIM3, 1000);
			 else if((10*T_desired-temp)>8)
			 	 TIM_SetCompare3(TIM3, 200);
			 else if((10*T_desired-temp)>6)	
			       TIM_SetCompare3(TIM3, 200);
			 else if((10*T_desired-temp)>4)
				       	TIM_SetCompare3(TIM3,1000);
			 else if((10*T_desired-temp)>3)
				       	TIM_SetCompare3(TIM3,1000);
		 	 else if((10*T_desired-temp)>2)
				       	TIM_SetCompare3(TIM3,500);
			 else if((10*T_desired-temp)>1)
				       	TIM_SetCompare3(TIM3,1000);
			 else if((10*T_desired-temp)>0)
				       	TIM_SetCompare3(TIM3,1000);
						else if((10*T_desired-temp)==00)
				       	TIM_SetCompare3(TIM3,120);
		  	else 	TIM_SetCompare3(TIM3,0); 
		}
		///////////////////////////////////////////////////
		if (T_desired>58&&T_desired<65)
		 {
			if((10*T_desired-temp)>10)
				 TIM_SetCompare3(TIM3, 1000);
			 else if((10*T_desired-temp)>8)
			 	 TIM_SetCompare3(TIM3, 1000);
			 else if((10*T_desired-temp)>6)	
			       TIM_SetCompare3(TIM3, 200);
			 else if((10*T_desired-temp)>4)
				       	TIM_SetCompare3(TIM3,1000);
			 else if((10*T_desired-temp)>3)
				       	TIM_SetCompare3(TIM3,1000);
		 	 else if((10*T_desired-temp)>2)
				       	TIM_SetCompare3(TIM3,500);
			 else if((10*T_desired-temp)>1)
				       	TIM_SetCompare3(TIM3,1000);
			 else if((10*T_desired-temp)>0)
				       	TIM_SetCompare3(TIM3,1000);
						else if((10*T_desired-temp)==0)
				       	TIM_SetCompare3(TIM3,900);
		  	else 	TIM_SetCompare3(TIM3,0); 
		}

	  }
	  if(status==0)
	  {
		   TIM_SetCompare3(TIM3,0); 
		   GPIO_SetBits(GPIOB, GPIO_Pin_15);
		   LCD_Rectangle(240,55,69,14,BLUE) ;
		   LCD_Str_O(255, 55,"stop",BLACK);
		 //  remain_time=600;
		   LCD_Rectangle(240,90,60,25,BLUE) ;
			LCD_Num_6x12_O(245,95,remain_time, BLACK);
		   if(key_scan()==2)  //S5down
		   {
			   remain_time=remain_time+1;
			   LCD_Rectangle(240,90,60,25,BLUE) ;
			LCD_Num_6x12_O(245,95,remain_time, BLACK);
		   }
		   if(key_scan()==3)   // S8down
		   {
			   remain_time=remain_time-1;
			   if(remain_time<10)
			   remain_time=10;
			   LCD_Rectangle(240,90,60,25,BLUE) ;
			LCD_Num_6x12_O(245,95,remain_time, BLACK);
		   }



	  }
	  

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	 } 
}
int  min(int a ,int b)
{
  return  b?(a>b) :a ;
}
void temp_realdsp(int temp)
{
			//	temp=(int)(DS18B20_Get_Temp());
			    LCD_Rectangle(146,57,26,19,BLUE) ;
				LCD_Num_6x12_O(150,58,((temp)/10), BLACK);
				LCD_Str_O(160, 55,".",BLACK); 
				LCD_Num_6x12_O(166,58,(temp%10), BLACK);
				//printf("wendu:%d\r\n",temp);
}		
	  
/******************* CHD1807 Team *****END OF FILE************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -