基于CortexM0的温湿度计设计嵌入式系统课程设计.docx
- 文档编号:9217369
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:20
- 大小:931.39KB
基于CortexM0的温湿度计设计嵌入式系统课程设计.docx
《基于CortexM0的温湿度计设计嵌入式系统课程设计.docx》由会员分享,可在线阅读,更多相关《基于CortexM0的温湿度计设计嵌入式系统课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于CortexM0的温湿度计设计嵌入式系统课程设计
成绩:
课程设计
课程名称
嵌入式系统
课题名称
基于Cortex-M0的温湿度计设计
专业
电子科学与技术
班级
学号
姓名
指导老师
目录
一、课题要求3
二、系统方案设计3
三、硬件设计
3.1硬件运行流程图4
3.2STM32模块4
3.3DHT11简介5
四、软件设计
4.2温湿度传感器DHT22的程序8
4.3温湿度显示部分10
4.4LCD配置程序11
五、系统调试与测试……………………………………….12
六、总结13
电气信息学院
课程设计任务书
课题名称
基于Cortex-M0的温湿度计设计
姓名
专业
电子科学与技术
班级
学号
16
指导老师
课程设计时间
2016年11月7日-2016年11月18日
审核意见
同意
审核人
一、任务及要求
采用Cortex-M0处理器(LPC11C14)设计一个温湿度计,具体要求如下:
1、熟悉RealViewMDK工具软件的使用方式。
2、掌握RealViewMDK软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真、调试。
3、采用温湿度传感器DHT11完成温湿度信息采集,并在液晶上显示测量结果。
4、在RealViewMDK软件上完成仿真,在FS11C14V6.0开发平台上完成硬件调试。
二、进度安排
第一周:
周一:
集中布置课程设计相关事宜,讲解课题要求。
周二~周三:
查找资料,设计系统方案。
周四~周日:
嵌入式软件设计,系统仿真调试。
第二周:
周一~周二:
实验开发系统联调。
周三~周五:
设计报告撰写。
周五进行答辩和设计结果检查。
三、参考资料
1、李佳,周志强.物联网技术与实践:
基于ARMCortex-M0技术.电子工业出版社.2012.12
2、李宁.ARMMCU开发工具MDK使用入门.北京航空航天大学出版社.2012.5
3、周润景.ARM7嵌入式系统设计与仿真——基于Proteus、Keil与IAR.清华大学出版社.2012.1
一、课题要求
采用Cortex-M0处理器(LPC11C14)设计一个温湿度计,具体要求如下:
1、熟悉RealViewMDK工具软件的使用方式。
2、掌握RealViewMDK软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真、调试。
3、采用温湿度传感器DHT11完成温湿度信息采集,并在液晶上显示测量结果。
4、在RealViewMDK软件上完成仿真,在FS11C14V6.0开发平台上完成硬件调试。
二、系统方案设计
3、硬件设计
3.1硬件运行流程图
3.2STM32模块
芯片的选择:
STM32ZET6
芯片的介绍:
内核:
ARM 32位的Cortex?
-M3 CPU
- 最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone 2.1)
- 单周期乘法和硬件除法
■ 存储器
- 从64K或128K字节的闪存程序存储器
- 高达20K字节的SRAM
■ 时钟、复位和电源管理
- 2.0~3.6伏供电和I/O引脚
- 上电/断电复位(POR/PDR)、可编程电压监测器(PVD)
- 4~16MHz晶体振荡器
- 内嵌经出厂调校的8MHz的RC振荡器
- 内嵌带校准的40kHz的RC振荡器
- 产生CPU时钟的PLL
- 带校准功能的32kHz RTC振荡器
■ 低功耗
- 睡眠、停机和待机模式
- VBAT为RTC和后备寄存器供电
■ 2个12位模数转换器,1μs转换时间(多达16个输入通道)
- 转换范围:
0至3.6V
- 双采样和保持功能
- 温度传感器
■ DMA:
- 7通道DMA控制器
- 支持的外设:
定时器、ADC、SPI、I2C和USART
3.3DHT11简介
DHT11是一款湿温度一体化的数字传感器。
该传感器包括一个电阻式测湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。
DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。
传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。
DHT11功耗很低,5V电源电压下,工作平均最大
电流0.5mA。
DHT11的管脚排列如图3所示:
图3DHT11原理图
管脚排列图虽然DHT11与DS18B20类似,都是单总线访问,但是DHT11的访问,相对DS18B20来说要简单很多。
下面我们先来看看DHT11的数据结构。
DHT11数字湿温度传感器采用单总线数据格式。
即,单个数据引脚端口完成输入输出双向传输。
其数据包由5Byte(40Bit)组成。
数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。
DHT11的数据格式为:
8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。
其中校验和数据为前四个字节相加。
传感器数据输出的是未编码的二进制数据。
数据(湿度、温度、整数、小数)之间应该分开处理。
例如,某次从DHT11读到的数据如图4所示:
图4某次读取到DHT11的数据
由以上数据就可得到湿度和温度的值,计算方法:
湿度=byte4.byte3=45.0(RH)温度=byte2.byte1=28.0(℃)
校验=byte4+byte3+byte2+byte1=73(=湿度+温度)(校验正确)
可以看出,DHT11的数据格式是十分简单的,DHT11和MCU的一次通信最大为3ms左右,建议主机连续读取时间间隔不要小于100ms。
4、软件设计
4.1软件流程图
4.2温湿度传感器DHT22的程序
打开DHT11数字温湿度传感器实验工程可以发现,我们在工程中添加了dht11.c文件和dht11.h文件,所有DHT11相关的驱动代码和定义都在这两个文件中,只需简单调用即可得到温湿度值。
打开dht11.c代码如下:
#include"dht11.h"
#include"delay.h"
voidDHT11_Rst(void)
{
DHT11_IO_OUT();
DHT11_DQ_OUT=0;
delay_ms(20);
DHT11_DQ_OUT=1;
delay_us(30);
}
u8DHT11_Check(void)
{
u8retry=0;
DHT11_IO_IN();
while(DHT11_DQ_IN&&retry<100)
{
retry++;
delay_us
(1);
};
if(retry>=100)return1;
elseretry=0;
while(!
DHT11_DQ_IN&&retry<100)
{
retry++;
delay_us
(1);
};
if(retry>=100)return1;
return0;
}
u8DHT11_Read_Bit(void)
{
u8retry=0;
while(DHT11_DQ_IN&&retry<100)
{
retry++;
delay_us
(1);
}
retry=0;
while(!
DHT11_DQ_IN&&retry<100)
{
retry++;
delay_us
(1);
}
delay_us(40);
if(DHT11_DQ_IN)return1;
elsereturn0;
}
u8DHT11_Read_Byte(void)
{
u8i,dat;
dat=0;
for(i=0;i<8;i++)
{
dat<<=1;
dat|=DHT11_Read_Bit();
}
returndat;
}
u8DHT11_Read_Data(u8*temp,u8*humi)
{
u8buf[5];
u8i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)
{
buf[i]=DHT11_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}elsereturn1;
return0;
}
u8DHT11_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOG,&GPIO_InitStructure);
GPIO_SetBits(GPIOG,GPIO_Pin_11);
DHT11_Rst();
returnDHT11_Check();
该部分代码首先是通过DHT11_Init()初始化传感器然后通过单总线操作时序来读取DHT11的温湿度值,DHT11的温湿度值通过DHT11_Read_Data(u8*temp,u8*humi)函数来读取,如果返回0,则说明读取成功,返回1则说明读取失败。
4.3温湿度显示部分
接下来温湿度显示部分,在主函数main.c里,我将代码设定在死循环while
(1)中,并设定温湿度检测时间,这样每隔100ms,温湿度就会重新检测一次,并且在LCD屏上显示,该显示代码如下:
if(t%100==0)
{
POINT_COLOR=BLUE;
DHT11_Read_Data(&temperature,&humidity);
tem=temperature;
hum=humidity;
LCD_ShowString(120,275,200,16,16,"Humi:
%");
LCD_ShowNum(120+40,275,humidity,2,16);
LCD_ShowString(30,275,200,16,16,"Temp:
C");
LCD_ShowNum(30+40,275,temperature,2,16);
}
4.4LCD配置程序
#include"lcd.h"
#include"stdlib.h"
#include"font.h"
#include"usart.h"
#include"delay.h"
u16POINT_COLOR=0x0000;
u16BACK_COLOR=0xFFFF;
_lcd_devlcddev;
voidLCD_WR_REG(u16regval)
{
LCD->LCD_REG=regval;
}
voidLCD_WR_DATA(u16data)
{
LCD->LCD_RAM=data;
}
u16LCD_RD_DATA(void)
{
returnLCD->LCD_RAM;
}
voidLCD_WriteReg(u8LCD_Reg,u16LCD_RegValue)
{
LCD->LCD_REG=LCD_Reg;
LCD->LCD_RAM=LCD_RegValue;
}
u16LCD_ReadReg(u8LCD_Reg)
{
LCD_WR_REG(LCD_Reg);
delay_us(5);
returnLCD_RD_DATA();
}
voidLCD_WriteRAM_Prepare(void)
{
LCD->LCD_REG=lcddev.wramcmd;
}
voidLCD_WriteRAM(u16RGB_Code)
{
LCD->LCD_RAM=RGB_Code;
}
u16LCD_BGR2RGB(u16c)
{
u16r,g,b,rgb;
b=(c>>0)&0x1f;
g=(c>>5)&0x3f;
r=(c>>11)&0x1f;
rgb=(b<<11)+(g<<5)+(r<<0);
return(rgb);
}
五、系统调试与测试
在编译成功之后,通过下载代码到ALIENTEK战舰STM32开发板上,可以看到LCD显示当前的温度值,如图5所示:
室外温度测试室内温度测试
图5调试与测试值
六、总结
本学期为期两周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处。
在这次课程设计中,我很清楚如果只是单一的显示温湿度,只是单一的实现基本功能是远远不够的。
所以我在实现基本要求的基础上,还增添了汉字模块。
用汉字在屏幕版上显示我的班级学号和名字,除此之外我在LCD显示屏画了温度和湿度计的模型,利用清屏函数来实现温湿度的动态显示,既简单又上档次。
在写程序中,我遇到过许许多多的困难,但是我始终记得老师跟我们说过的话:
“最好的老师其实就是自己,只要自己肯钻,什么问题都能解决”。
虽然我在很多时候都有放弃的念头,但是我还是坚持了下来,终于皇天不负苦心人,成功完成了自己的课程设计。
这次课程设计极大的锻炼了我的创作能力,极大锻炼了我的逻辑思维能力。
果然只有自己动手,自己动脑,才能发现自己的不足,才能更好完善自身。
最后,感谢老师的悉心指导,诚挚地说一声谢谢。
《嵌入式系统》课程设计成绩评分表
环节
评价内容
评价等级
优
良
中
及格
不及格
实践环节(70%)
设计方案的可行性;
仿真开发软件使用熟练程度;
程序设计开发能力;
系统调试测试能力;
课题设计要求完成情况;
解决问题能力及答辩情况;
纪律和出勤情况。
设计报告(30%)
设计方案正确、表达清楚;设计思路、实验(论证)方法科学合理;达到课程设计任务书规定的要求;图、表、文字表达准确规范。
综合评价
课程设计成绩评定为:
□优□良□中□及格□不及格
指导老师签名:
________________
日期:
________________
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CortexM0 温湿度 设计 嵌入式 系统 课程设计