嵌入式系统课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); //时钟使能