STM32温度报警传感器代码.docx

上传人:b****2 文档编号:2181149 上传时间:2022-10-27 格式:DOCX 页数:14 大小:18.55KB
下载 相关 举报
STM32温度报警传感器代码.docx_第1页
第1页 / 共14页
STM32温度报警传感器代码.docx_第2页
第2页 / 共14页
STM32温度报警传感器代码.docx_第3页
第3页 / 共14页
STM32温度报警传感器代码.docx_第4页
第4页 / 共14页
STM32温度报警传感器代码.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

STM32温度报警传感器代码.docx

《STM32温度报警传感器代码.docx》由会员分享,可在线阅读,更多相关《STM32温度报警传感器代码.docx(14页珍藏版)》请在冰豆网上搜索。

STM32温度报警传感器代码.docx

STM32温度报警传感器代码

主函数、main.c

#include"led.h"

#include"delay.h"

#include"sys.h"

#include"usart.h"

#include"lcd.h"

#include"ds18b20.h"

#include"key.h"

 

#include

#include

#include

inttemp_low=22;

inttemp_high=32;

intzanshi_low=0;

intzanshi_hign=0;

 

voidTIM3_Int_Init(u16arr,u16psc)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

NVIC_InitTypeDefNVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//时钟使能

TIM_TimeBaseStructure.TIM_Period=arr;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值计数到5000为500ms

TIM_TimeBaseStructure.TIM_Prescaler=psc;//设置用来作为TIMx时钟频率除数的预分频值10Khz的计数频率

TIM_TimeBaseStructure.TIM_ClockDivision=0;//设置时钟分割:

TDTS=Tck_tim

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上计数模式

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

TIM_ITConfig(//使能或者失能指定的TIM中断

TIM3,//TIM2

TIM_IT_Update,

ENABLE//使能

);

NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//TIM3中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占优先级0级

NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//从优先级3级

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能

NVIC_Init(&NVIC_InitStructure);//根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

TIM_Cmd(TIM3,ENABLE);//使能TIMx外设

}

u8flag=0;

intmain(void)

{

u8t=0;

 

u8shuzu[20];

u8keyvalue=0;

u8gaibianshui=0;

shorttemperature;

delay_init();//延时函数初始化

uart_init(9600);//串口初始化为9600

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组2

LED_Init();//初始化与LED连接的硬件接口

TIM3_Int_Init(9999,7199);//10Khz的计数频率,计数到5000为500ms

LCD_Init();

POINT_COLOR=RED;//设置字体为红色

LCD_ShowString(0,50,200,16,16,"STM32test");

LCD_ShowString(0,70,200,16,16,"name:

zhangqiqi");

//LCD_ShowString(0,90,200,16,16,"Max32CMin26C");

memset(shuzu,0,20);

sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);

LCD_ShowString(0,90,200,16,16,shuzu);

 

while(DS18B20_Init())//DS18B20初始化

{

LCD_ShowString(0,130,200,16,16,"DS18B20Error");

delay_ms(200);

LCD_Fill(0,130,239,130+16,WHITE);

delay_ms(200);

}

POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(0,110,260,16,16,"Thetemperatureis:

.Cnow");

LCD_ShowChar(0+25*8,110,',',16,0);

LCD_ShowChar(0+29*8,110,'!

',16,0);

while

(1)

{

 

POINT_COLOR=BLUE;//设置字体为蓝色

if(t%10==0)//每100ms读取一次

{

t=0;

temperature=DS18B20_Get_Temp();

if(temperature<0)

{

LCD_ShowChar(0+40,150,'-',16,0);//显示负号

temperature=-temperature;//转为正数

}

else

LCD_ShowChar(0+40,150,'',16,0);//去掉负号

memset(shuzu,0,20);

sprintf(shuzu,"Thetemperatureis:

%3d.%1dC",temperature/10,temperature%10);

LCD_ShowString(0,110,200,16,16,shuzu);

}

delay_ms(10);

//判断温度

zanshi_low=temp_low*10;

zanshi_hign=temp_high*10;

if((temperaturezanshi_hign))

{

if(temperature

{

flag=1;

printf("chaoxiaxian");

}

if(temperature>zanshi_hign)

{

flag=2;

printf("chaoshangxian");

}

}

else

{

flag=0;

LED0=1;//正常情况灯不亮

LED1=1;

}

//获取温度时间控制t

t++;

 

//浏览开关

KEY_Init();

delay_ms(10);

keyvalue=KEY_Scan(0);

if(keyvalue!

=0)

{

if(keyvalue==3)

{

gaibianshui=(gaibianshui+1)%3;

}

if(gaibianshui==1)//改变上限

{

if(keyvalue==2)//key1按下

{

temp_high++;

memset(shuzu,0,20);

sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);

LCD_ShowString(0,90,200,16,16,shuzu);

}

if(keyvalue==1)//key0按下

{

temp_high--;

memset(shuzu,0,20);

sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);

LCD_ShowString(0,90,200,16,16,shuzu);

}

}

if(gaibianshui==2)//改变上限

{

if(keyvalue==2)//key1按下

{

temp_low++;

memset(shuzu,0,20);

sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);

LCD_ShowString(0,90,200,16,16,shuzu);

}

if(keyvalue==1)//key0按下

{

temp_low--;

memset(shuzu,0,20);

sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);

LCD_ShowString(0,90,200,16,16,shuzu);

}

}

keyvalue=0;

}

}

}

 

voidTIM3_IRQHandler(void)//TIM3中断

{

if(TIM_GetITStatus(TIM3,TIM_IT_Update)!

=RESET)//检查指定的TIM中断发生与否:

TIM中断源

{

TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx的中断待处理位:

TIM中断源

//温度不正常处理灯

if(flag==1)

{

LED0=!

LED0;

}

if(flag==2)

{

LED1=!

LED1;

}

}

}

LED函数led.c

#include"led.h"

voidLED_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1