基于STM32开发板的实用温度及设计.docx

上传人:b****5 文档编号:4963621 上传时间:2022-12-12 格式:DOCX 页数:9 大小:218.52KB
下载 相关 举报
基于STM32开发板的实用温度及设计.docx_第1页
第1页 / 共9页
基于STM32开发板的实用温度及设计.docx_第2页
第2页 / 共9页
基于STM32开发板的实用温度及设计.docx_第3页
第3页 / 共9页
基于STM32开发板的实用温度及设计.docx_第4页
第4页 / 共9页
基于STM32开发板的实用温度及设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

基于STM32开发板的实用温度及设计.docx

《基于STM32开发板的实用温度及设计.docx》由会员分享,可在线阅读,更多相关《基于STM32开发板的实用温度及设计.docx(9页珍藏版)》请在冰豆网上搜索。

基于STM32开发板的实用温度及设计.docx

基于STM32开发板的实用温度及设计

 

实用温度计

 

生产组长:

丁广杰

设计组长:

栗向滨

小组成员:

常聪颖,李磊,贾丽娜,

关胜盘,孟纯,李森源,

史海彬,解伟,任修峰

日期:

2012年9月20日

 

实用温度计

——第二组生产实习设计报告

1、概述

温度,对农作物的产量尤为重要,因此对当前温度的测量以及通过对温度的测量而得出相应的温度指标就显得尤为重要,我们设计的温度计则恰恰解决了这个问题。

我组所设计的温度计具有显示时间,显示当前温度,一段时间的温度指标以及当前温度与指标下应该注意的事项等。

为了达到远程监测,我组还添加了通信的发送功能。

因为温度指标与时间密切相关,所以我们还相应的增加了整点计时报时功能。

二、总体设计

(一)总体系统结构

(2)模块划分

1、测温模块:

主要通过读取温度传感器DS18B20的测量值完成温度的测量功能。

2、显示模块:

将当前的温度,一段时间的温度指标以及当前温度与指标下应该注意的事项显示在OLED上

3、按键模块:

用于调整时间以及对OLED进行画面切换

4、SD卡读取模块:

对存入其中的宜忌事项进行读取

5、RS232通信模块:

将当前时间、当前温度、一段时间的温度指标以及当前温度与指标下应该注意的事项传至上位机

(三)人员分工

丁广杰,栗向滨:

整体规划与安排

常聪颖,李磊:

OLED的使用

其中常聪颖负责主程序的整合

贾丽娜,孟纯:

SD卡的读取与温度指标的计算

关胜盘,解伟:

日历时钟与键盘的使用

史海彬,任修峰:

用RS232与上位机联机

李森源:

温度的测量

3、关键模块设计

(一)温度18B20:

每经过一定时间,读取18B20所测得温度,并实时显示,同时STM32的处理显示温度指标。

约一分钟保存一次所测温度,计算温度指标并在需要时与SD卡里的值惊醒比对面,待需要时进行屏显。

(二)时间PCF8563T:

用按键设置好准确时间,当达到正点时产生中断,单片机接收后,使蜂鸣器报点,报时10秒后消失。

(三)存储SD卡:

因为得出的当前温度与指标下应该注意的事项以及不同作物相应的生长温度等均需要进行存储以便分析,这些数据均是需存至存储卡中的。

(四)通信RS23:

通过RS232与PC上位机进行联通将当前温度,一段时间的温度指标以及当前温度与指标下应该注意的以及事项等传到PC级处从而实现远程监控。

4、测试结果

测试显示,最终结果基本达到了预期目标,三个界面均正常显示:

(1)界面一:

当前时间与当前的实时温度

(2)界面二:

显示温度指标,分别为“平均温度”、“最大值”与“最小值”

(3)界面三:

针对当前温度以及温度指标进行相应的提醒

(4)每当到达整点便报时整点10秒

(5)以上的三个界面均由拨码开关进行切换

(6)四个按键均可以对时间的“小时”与“分钟”进行加减操作

5、总结

经过两周多努力,从开始的确定题目到最终的完成设计成果,二组中的每一位成员都表现出了积极的态度,认真分析题目,不畏艰难的研究程序,一些有基础的成员还义务的挑起了不属于自己分工范围的任务,加班加点地完成了本组的最终成果!

虽然设计上各项性能指标均达到了预期的的目标,但是在答辩之后我们又发现了一些问题以及需要改进的地方:

1、上位机的端口号可以设计成自动识别模式

2、上位机的界面可以做的更加炫目与完善一些以及将上位机获得的温度数据显示成浮点数

3、Sprintf通过设置sprintf(s,"f%",temp)显示带小数点的温度值

4、RS232是全双工通信

5、对于串口丢失数据的问题,因为温度不会在短时间内突变,所以出现间歇间断点丢失数据的情况,可以忽略不计,可以设置检测间断时间的机制,如果出现间断时间太长则报警提醒系统处理

6、时钟芯片可以直接读出小时,分钟以及秒的信息

7、OLED的行距可以通过writedata进行行距设置

8、SD卡通过将属性中的只读改作既可读又可写的“W+”从而实现数据可以写进SD卡这项功能

9、直接测出来的温度值与实际的温度值有出入需要标定,我组进行减去2.5摄氏度惊醒标定

10、通过对测得的温度值进行数字滤波可以提高温度显示的稳定度,如果算法合理,可以达到显示三位小数仍然具有一定的稳定度的能力

11、应该设置异常值剔除机制,通过设定正常值以及对前后温度差值的检测进行异常值的剔除

六、附录

(一)关键程序代码

1、主程序

intmain(void)

{

SystemInit();//设置系统时钟

LED_GPIOInit();

NVIC_Configuration();

RS232Init(9600);

TIMER3_Init();

oledinit();

SW_GPIOInit();

BuzzOff();

while

(1)

{test();

}

}

2、检测程序

voidtest()

{

keytest();

timechange();

}

3、键盘检测

voidkeytest()

{

if(SW3Up()&&SW4Up())

{if(0==a)

WriteData(0,0,132,0,8,0);//清屏

calculateshow(&ave,&max1,&min1);

a=1;

b=c=0;

}

elseif(SW3Down()&&SW4Down())

{if(0==b)

WriteData(0,0,132,0,8,0);//清屏p1

Function_Time1();

a=c=0;

b=1;

}

elseif(SW3Up()||SW4Up())

{

if(0==c)

{

WriteData(0,0,132,0,8,0);//清屏

//Function_Time1();

//temp=get_temp();

fileshow();//&temp);

c=1;

a=b=0;

}

}

}

4、时间设置

voidtimechange()

{

while(KEY1Read())

{while(KEY1Read());

RealTime.hour++;

if(RealTime.hour>23)

RealTime.hour=0;

SetTime(&RealTime);

break;

}

while(KEY3Read())

{while(KEY3Read());

RealTime.minute++;

if(RealTime.minute>59)

RealTime.minute=0;

SetTime(&RealTime);

break;

}

while(KEY2Read())

{while(KEY2Read());

a=RealTime.hour;

RealTime.hour--;

b=RealTime.hour;

if(a==0)

RealTime.hour=23;

SetTime(&RealTime);

break;

}

while(KEY4Read())

{while(KEY4Read());

b=RealTime.minute;

RealTime.minute--;

if(b==0)

RealTime.minute=59;

SetTime(&RealTime);

break;

}

if(RealTime.minute==0)

{

if(RealTime.second>=0)

{

if(RealTime.second<=10)

{BuzzOn();

DelayMs(200);

BuzzOff();

DelayMs(200);

}

}

}

}

(2)照片

界面一

界面二

界面三

通讯界面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1