欢迎来到天天文库
浏览记录
ID:13380825
大小:1.44 MB
页数:13页
时间:2018-07-22
《基于stm32开发板的实用温度及设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实用温度计生产组长:丁广杰设计组长:栗向滨小组成员:常聪颖,李磊,贾丽娜,关胜盘,孟纯,李森源,史海彬,解伟,任修峰日期:2012年9月20日实用温度计——第二组生产实习设计报告一、概述温度,对农作物的产量尤为重要,因此对当前温度的测量以及通过对温度的测量而得出相应的温度指标就显得尤为重要,我们设计的温度计则恰恰解决了这个问题。我组所设计的温度计具有显示时间,显示当前温度,一段时间的温度指标以及当前温度与指标下应该注意的事项等。为了达到远程监测,我组还添加了通信的发送功能。因为温度指标与时间密切相关,所以我们还相应的增加了整
2、点计时报时功能。二、总体设计(一)总体系统结构(二)模块划分1、测温模块:主要通过读取温度传感器DS18B20的测量值完成温度的测量功能。2、显示模块:将当前的温度,一段时间的温度指标以及当前温度与指标下应该注意的事项显示在OLED上3、按键模块:用于调整时间以及对OLED进行画面切换4、SD卡读取模块:对存入其中的宜忌事项进行读取5、RS232通信模块:将当前时间、当前温度、一段时间的温度指标以及当前温度与指标下应该注意的事项传至上位机(三)人员分工丁广杰,栗向滨:整体规划与安排常聪颖,李磊:OLED的使用其中常聪颖负责主
3、程序的整合贾丽娜,孟纯:SD卡的读取与温度指标的计算关胜盘,解伟:日历时钟与键盘的使用史海彬,任修峰:用RS232与上位机联机李森源:温度的测量三、关键模块设计(一)温度18B20:每经过一定时间,读取18B20所测得温度,并实时显示,同时STM32的处理显示温度指标。约一分钟保存一次所测温度,计算温度指标并在需要时与SD卡里的值惊醒比对面,待需要时进行屏显。(二)时间PCF8563T:用按键设置好准确时间,当达到正点时产生中断,单片机接收后,使蜂鸣器报点,报时10秒后消失。(三)存储SD卡:因为得出的当前温度与指标下应该注
4、意的事项以及不同作物相应的生长温度等均需要进行存储以便分析,这些数据均是需存至存储卡中的。(四)通信RS23:通过RS232与PC上位机进行联通将当前温度,一段时间的温度指标以及当前温度与指标下应该注意的以及事项等传到PC级处从而实现远程监控。三、测试结果测试显示,最终结果基本达到了预期目标,三个界面均正常显示:(一)界面一:当前时间与当前的实时温度(二)界面二:显示温度指标,分别为“平均温度”、“最大值”与“最小值”(三)界面三:针对当前温度以及温度指标进行相应的提醒(四)每当到达整点便报时整点10秒(五)以上的三个界面均
5、由拨码开关进行切换(六)四个按键均可以对时间的“小时”与“分钟”进行加减操作四、总结经过两周多努力,从开始的确定题目到最终的完成设计成果,二组中的每一位成员都表现出了积极的态度,认真分析题目,不畏艰难的研究程序,一些有基础的成员还义务的挑起了不属于自己分工范围的任务,加班加点地完成了本组的最终成果!虽然设计上各项性能指标均达到了预期的的目标,但是在答辩之后我们又发现了一些问题以及需要改进的地方:1、上位机的端口号可以设计成自动识别模式2、上位机的界面可以做的更加炫目与完善一些以及将上位机获得的温度数据显示成浮点数3、Spri
6、ntf通过设置sprintf(s,"f%",temp)显示带小数点的温度值4、RS232是全双工通信5、对于串口丢失数据的问题,因为温度不会在短时间内突变,所以出现间歇间断点丢失数据的情况,可以忽略不计,可以设置检测间断时间的机制,如果出现间断时间太长则报警提醒系统处理6、时钟芯片可以直接读出小时,分钟以及秒的信息7、OLED的行距可以通过writedata进行行距设置8、SD卡通过将属性中的只读改作既可读又可写的“W+”从而实现数据可以写进SD卡这项功能9、直接测出来的温度值与实际的温度值有出入需要标定,我组进行减去2.5
7、摄氏度惊醒标定10、通过对测得的温度值进行数字滤波可以提高温度显示的稳定度,如果算法合理,可以达到显示三位小数仍然具有一定的稳定度的能力1、应该设置异常值剔除机制,通过设定正常值以及对前后温度差值的检测进行异常值的剔除六、附录(一)关键程序代码1、主程序intmain(void){SystemInit();//设置系统时钟LED_GPIOInit();NVIC_Configuration();RS232Init(9600);TIMER3_Init();oledinit();SW_GPIOInit();BuzzOff();wh
8、ile(1){test();}}2、检测程序voidtest(){keytest();timechange();}2、键盘检测voidkeytest(){if(SW3Up()&&SW4Up()){if(0==a)WriteData(0,0,132,0,8,0);//清屏calculates
此文档下载收益归作者所有