STM32温度报警传感器代码Word格式.docx
- 文档编号:14418453
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:15
- 大小:18.72KB
STM32温度报警传感器代码Word格式.docx
《STM32温度报警传感器代码Word格式.docx》由会员分享,可在线阅读,更多相关《STM32温度报警传感器代码Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
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的中断待处理位:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 温度 报警 传感器 代码