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

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

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

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

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

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);

}

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,'

!

'

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

'

//去掉负号

memset(shuzu,0,20);

sprintf(shuzu,"

%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((temperature<

zanshi_low)||(temperature>

zanshi_hign))

{

if(temperature<

zanshi_low)

{

flag=1;

printf("

chaoxiaxian"

}

if(temperature>

zanshi_hign)

flag=2;

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,"

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

}

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

temp_high--;

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

temp_low++;

temp_low--;

keyvalue=0;

voidTIM3_IRQHandler(void)//TIM3中断

if(TIM_GetITStatus(TIM3,TIM_IT_Update)!

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

TIM中断源

{

TIM_ClearITPendingBit(TIM3,TIM_IT_Update);

//清除TIMx的中断待处理位:

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

当前位置:首页 > 工程科技 > 信息与通信

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

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