嵌入式系统课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学 生 课 程 实 践 能 力 考 查

题目:温度按键设定、显示、报警系统设计

课程名称:嵌入式系统开发 专业班级: 学生学号: 学生姓名:

考查地点: 考查时长: 4小时 所属院部: 指导教师:

2017 — 2018学年 第 2 学期

金陵科技学院教务

成绩

2017-2018学年第2学期《嵌入式系统开发》实践能力考核

任课教师签名:

日期:

温度按键设定、显示、报警系统设计

要求:

1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。

2、通过按键可以设置环境温度的上限和下限,

WK_UP键按下调节上限,再按下调节下限,再按下调节上限……

KEY1按下加1;

KEY0按下减1,

根据上限和下限判断当前温度有没有超出范围。

3、当温度超过上限,LED1隔1秒亮一次。超过下限,LED2隔1秒亮一次。(也可自定义报警方式)

4、串口波特率一律用9600bps。

液晶显示的信息:

STM32 test

name: xxxxxxxxx

Maximum is 32C,Minimum is 26 C

The temperature is 29 C,now!

(xxxxx是自己的名字拼音)

目录:

第一章.系统要求

1.1设计要求

1.2设计方案

第二章.硬件设计

2.1开发板原理图

2.2 DS18B20模块

2.3按键模块

2.4 LCD显示模块

2.5 LED 模块

第三章.软件设计

3.1程序流程图

3.2程序部分代码

3.2.1主函数、main.c

3.2.2 LED 函数led.c

3.2.3温度代码 s18b20.c

3.2.4键盘代码key.c

第四章.实物效果图

第五章.课程总结

第一章.设计要求及方案

1.1设计要求

1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。

2、通过按键可以设置环境温度的上限和下限,

WK_UP键按下调节上限,再按下调节下限,再按下调节上限……

KEY1按下加1;

KEY0按下减1,

根据上限和下限判断当前温度有没有超出范围。

3、当温度超过上限,LED1隔1秒亮一次。超过下限,LED2隔1秒亮一次。(也可自定义报

警方式)

4、串口波特率一律用9600bps。

液晶显示的信息:

STM32 test

name: xxxxxxxxx

Maximum is 32C,Minimum is 26 C

The temperature is 29 C,now!

(xxxxx是自己的名字拼音)

1.2设计方案

本次课程设计的要求是使用STM32F103设计一个温度测控系统,ALIENTEK MiniSTM32 V3 版开发板选择的是 STM32F103RCT6 作为 MCU,它拥有的资源包括:48KB SRAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、2 个 DMA 控制器(共 12 个通道)、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 12 位 ADC、1 个 12 位 DAC、1 个SDIO 接口及 51 个通用 IO 口。在本课程中使用了以下部分来完成课程设计的要求:

1.应用DS18B20进行温度的检测。

2.应用按键模块进行外部的上下限数值设定。

3.应用LED的闪烁进行报警。

4.应用LCD显示实时温度、上下限等信息。

第二章.硬件设计2.2 DS18B20设计

2.3按键模块

ALIENTEK MiniSTM32 开发板总共有 3 个按键,其原理图如下:

2.4 LCD显示模块2.5 LED 模块

其中PWR 是开发板电源指示灯,为蓝色。LED0 和LED1 分别接在PA8 和PD2 上,PA8还可以通过TIM1 的通道 1 的PWM 输出来控制DS0 的亮度。为了方便大家判断,我们选择了DS0 为红色,DS1 为绿色的LED 灯。

第三章.软件设计

3.1程序流程图

温度显示及报警模块按键设定模块

3.2程序部分代码

3.2.1主函数、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

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中指定的参数初始化外设

相关文档
最新文档