没有合适的资源?快使用搜索试试~ 我知道了~
STM32温度报警传感器代码.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 196 浏览量
2023-06-06
21:04:23
上传
评论
收藏 24KB DOCX 举报
温馨提示
试读
17页
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 <string.h>
#include <stdio.h>
#include <stdlib.h>
int temp_low = 22;
int temp_high = 32;
int zanshi_low=0;
int zanshi_hign=0;
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_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 外设
}
u8 flag=0;
int main(void)
{
u8 t = 0;
u8 shuzu[20];
u8 keyvalue=0;
u8 gaibianshui=0;
short temperature;
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, "STM32 test");
LCD_ShowString(0, 70, 200, 16, 16, "name: zhang qi qi ");
//LCD_ShowString(0,90,200,16,16,"Max 32 C Min 26 C");
memset(shuzu, 0, 20);
sprintf(shuzu, "Max is %2d C,Min is %2d C", temp_high, temp_low);
LCD_ShowString(0, 90, 200, 16, 16, shuzu);
while (DS18B20_Init()) //DS18B20 初始化
{
LCD_ShowString(0, 130, 200, 16, 16, "DS18B20 Error");
delay_ms(200);
LCD_Fill(0, 130, 239, 130 + 16, WHITE);
delay_ms(200);
}
POINT_COLOR = BLUE; //设置字体为蓝色
LCD_ShowString(0, 110, 260, 16, 16, "The temperature is: . C now
");
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); //显示
负号
剩余16页未读,继续阅读
资源评论
omyligaga
- 粉丝: 54
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功