?? +
字號:
/******************** 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 + -