ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:2.85MB ,
资源ID:5304523      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5304523.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式课程设计 基于嵌入式系统的传感器环境检测.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

嵌入式课程设计 基于嵌入式系统的传感器环境检测.docx

1、嵌入式课程设计 基于嵌入式系统的传感器环境检测嵌入式系统软件开发课程设计报告题 目: 基于嵌入式系统的传感器环境检测 学 院: 物理与电子信息工程学院 专业: 计算机科学与技术 班级: 10计本 姓 名: 左凌轩 学 号: 10110013151 指导老师: 徐玉 完成日期: 2013.3.30 摘 要设计多传感器实现环境质量检测的多功能、实时数据保存以及查看,有利于各个领域在环境方面的检测和测试,方便在环境相应参数的调查和研究。本文采用Stm32开发版、BMP085、SHT1X、光强、雨量等灵敏度较高的先进传感器分别检测温度、气压、湿度、光强、雨量,并在上位机中用C+实现实时显示和数据库的保

2、存。从设计中,各种检测和数据挖掘明显趋于简单。关键词: 传感器 检测 数据 注:上位机关键代码见附录Abstract.Key Words: 第一章设计目的1.1 掌握STM32嵌入式系统各功能模块的使用方法。1.2 掌握SHT1x温湿度传感器、BMP085气压传感器、GL5528光敏电阻、雨量传感器的数据采集与处理方法。1.3 掌握嵌入式系统上位机软件的实现方法。第二章 课程设计要求2.1嵌入式系统要求2.1.1、SHT1x温湿度传感器的信息采集与处理2.1.2、BMP085气压传感器的信息采集与处理2.1.3、基于GL5528光敏电阻的亮度信息采集与处理2.1.4、雨量传感器的数据采集与处理

3、2.1.5、传感器信息的LCD显示界面设计2.1.6、串口通讯程序与相应通讯协议设计与实现2.2上位机要求2.2.1、传感器信息的显示2.2.2、串口配置(串口号、波特率的选择)2.2.3、传感信息的数据库保存2.2.4、数据库信息的可视化显示 第三章 系统原理3.1硬件电路本课程设计涉及的环境监测系统在STM32嵌入式实验教学系统的基础上实现,相关的硬件原理图如下图所示 (图1)3.2 SHT1x温湿度传感器SHT1x温湿度传感器是应用非常广泛一类环境传感器,可以数字形式提供14位分辨率的温度信息与12位分辨率的相对湿度信息。该传感器提供专用的同步半双工串行接口向CPU传送采集的传感信息,其

4、时钟信号连接STM32的PC14端口,数据信号连接STM32的PA9端口。STM32利用GPIO口模拟SHT1x专用的串口通讯协议以实现传感信息采集。3.3 BMP085气压传感器BMP085是Bosch公司推出的一款绝对压力传感器,可以数字形式提供16-19位分辨率的绝对压力信息与16位分辨率的温度信息。STM32利用I2C1与该传感器通讯,PB6端口连接其时钟信号,PB7连接其数据信号。3.4GL5528光敏电阻光敏电阻的阻值随着亮度的提升而降低,基于此原理可利用上图所示电路中的电阻分压电路检测光敏电阻的阻值,进而根据阻值与亮度的关系计算环境中的光照强度。3.5雨量传感器雨量传感器由一系列

5、互不连通的导线构成,当雨滴落到各导线上,由于水的导电作用雨量传感器的电阻会降低,阻值随着雨滴增多而降低,基于此原理可利用上图所示的电路中的分压电路检测雨量传感器的阻值,进而判断雨量大小。 第四章 系统开发步骤4.1开发板模块初始配置void RCC_Configuration(void);void SysTick_Configuration(void);/系统时钟初始化void GPIO_Configuration(void);/管脚初始化void EXTI_Configuration(void);/中断处理void NVIC_Configuration(void);/优先级响应初始化void

6、 ADC_Configuration(void); /数模转换以及模数转换void DAC_Configuration(void);void USART_Configuration(void);/串口模块初始化void TIM_Configuration(void);/void I2C_Configuration(void);/数据总线初始化4.2传感器模块初始配置void BMP085_BufferRead(u8 *pBuffer, u8 ReadAddr, u8 NumByteToRead);void BMP085_ReadCalCoeff(void);u16 BMP085_ReadTem

7、p(void);/读取温度u32 BMP085_ReadPressure(void);/读取气压void SHT1x_DataOut(void);void SHT1x_DataIn(void);u8 SHT1x_WriteByte(u8 value);u8 SHT1x_ReadByte(u8 ack);void SHT1x_TransStart(void);void SHT1x_ConnectionReset(void);/SHT1x初始化连接u8 SHT1x_ReadReg(u8 *pvalue);u8 SHT1x_Measure(u16 *pvalue, u8 mode);u8 SHT1x

8、_ReadTempHumi(float *ptemp,float *phumi);float GL5528_ReadLight(void);/获取光强u16 Rain_Read(void);/获取雨量数值4.3 UI、传感器数据读取显示以及串口传输4.3.1 UI设置 Key1按下选择查看的项目,Key2按下确认进入查看的项目实时图形设置,Key3退出当前的页面(只在查看实时显示时有效)。4.3.2数据读取void getall();/读取所有数据void settingdetail();/设置单个读取信息void DiscribeLine();/UI画图函数4.4上位机串口软件编写以及测试本

9、组采取的是C+ Builder IDE下的软件编写,在串口通讯方面使用了Victor串口通讯控件、EXCLE导出控件、以及自编注册表自动获取控件、Chart查看显性实时图像信息,以及数据库连接和数据库的存储(其中使用了SQLserver数据库及其触发器编程)。4.4.1对应串口设置固定波特率为:9600自动搜索串口(从上位机注册表读取):ComX4.4.2图像实时显示4.4.3数据库保存4.4.3历史数据查看以及到处生成EXCEL4.4.5历史数据图像显示4.5 整体测试和调试第五章 总结从上述设计中,本文顺利地解决了嵌入式系统的设计与编码,上位机的界面设计以及算法设计与编码,即可以简单快捷地

10、使用此设计作为环境检测的标准。同时在设计的过程中遇到了许多困难和疑惑,但是在不懈努力与坚持下,本组组员都得以克服。最后让组员收获颇多。第六章 附录6.1 Comopeator(主界面)/-#ifndef ComOpeatorH#define ComOpeatorH/-#include #include #include #include #include YbCommDevice.h#include #include #include #include #include Chart.hpp#include Series.hpp#include TeEngine.hpp#include TeeP

11、rocs.hpp#include #include #include #include #include #include #include #include #include #include /-class TComConnection : public TForm_published: / IDE-managed Components TYbCommDevice *YbCommDevice1; TMemo *Memo1; TButton *Button2; TComboBox *cbb_com; TButton *Button3; TButton *btClear; TLabeledEd

12、it *LabeledEdit1; TLabeledEdit *LabeledEdit2; TLabeledEdit *LabeledEdit3; TLabeledEdit *LabeledEdit4; TLabeledEdit *LabeledEdit5; TLabeledEdit *LabeledEdit6; TChart *Chart1; TBarSeries *Series1; TButton *btshow; TButton *btdataopen; TADOConnection *ADOConnection1; TADOQuery *ADOQuery1; TDateTimePick

13、er *DateTimePicker1; TButton *btdataclose; TTimer *Timer1; TPanel *Panel1; TDBGrid *DBGrid1; TDateTimePicker *DateTimePicker2; TDateTimePicker *DateTimePicker3; TADOQuery *ADOQuery2; TButton *Button1; TButton *Button4; TButton *Button5; TDataSource *DataSource1; TImage *Image1; TButton *Button6; voi

14、d _fastcall Button2Click(TObject *Sender);/ void _fastcall Button1Click(TObject *Sender); void _fastcall YbCommDevice1Package(TObject *Sender, int NotifyType); void _fastcall Button3Click(TObject *Sender); void _fastcall cbb_comSelect(TObject *Sender); void _fastcall btdatacloseClick(TObject *Sender

15、); void _fastcall btClearClick(TObject *Sender); void _fastcall btshowClick(TObject *Sender); void _fastcall btdataopenClick(TObject *Sender); void _fastcall Timer1Timer(TObject *Sender); void _fastcall Button1Click(TObject *Sender); void _fastcall Button4Click(TObject *Sender); void _fastcall Butto

16、n5Click(TObject *Sender); void _fastcall Button6Click(TObject *Sender);private: / User declarations bool comStatus; bool aotuCom; bool datain; bool dymcshow;public: / User declarations _fastcall TComConnection(TComponent* Owner); void FillInfo(int varity , UnicodeString s); void FillDatabase(); bool

17、 DBGrid2Excel(TDataSet *dataset, String filename);/-extern PACKAGE TComConnection *ComConnection;/-#endif/-#include #pragma hdrstop#include ComOpeator.h#include his.h/-#pragma package(smart_init)#pragma link YbCommDevice#pragma link Chart#pragma link Series#pragma link TeEngine#pragma link TeeProcs#

18、pragma resource *.dfmTComConnection *ComConnection;/-_fastcall TComConnection:TComConnection(TComponent* Owner) : TForm(Owner) comStatus = false; aotuCom = false; datain = false; dymcshow = false; Memo1-Clear();/-void _fastcall TComConnection:Button2Click(TObject *Sender) try if(!comStatus) YbCommDe

19、vice1-Active = true; /打开串口 YbCommDevice1-PackageType = cptFrameTimeout; /使用超时的方法识别每帧数据 YbCommDevice1-UsePackage = true; /启动 Package Button2-Caption=关闭串口; else YbCommDevice1-Active = false; Button2-Caption=打开串口; catch(Exception &e) ShowMessage(打开串口失败,请先选择自动或检查串口是否正确接入。); comStatus = !comStatus;/-/*vo

20、id _fastcall TComConnection:Button1Click(TObject *Sender) int nBytes = 0; char Buffer1000; wchar_t *EndPtr; UnicodeString head=09 A1 ff ff ff ff ff ff ; UnicodeString code=head + Edit1-Text;/ UnicodeString code= Edit1-Text; UnicodeString t,s = code.Trim(); /去掉两端的空格 while(s.Length()0) int p = s.Pos(

21、); /空格 if(p0) t = s.SubString(1,p-1); s = s.SubString(p+1,s.Length().Trim(); BuffernBytes+ = wcstol(t.w_str(), &EndPtr, 16); /十六进制字符串转成字节 else /还剩下最后一个字节 t = s; s = ; BuffernBytes+ = wcstol(t.w_str(), &EndPtr, 16); /十六进制字符串转成字节 YbCommDevice1-Write(Buffer,nBytes);*/-void _fastcall TComConnection:YbCo

22、mmDevice1Package(TObject *Sender, int NotifyType) unsigned char Buf1000; /接收缓存 int n = YbCommDevice1-ReadPackage(Buf,100); int varity = -1; if(n0) /收到数据的字节数 UnicodeString s; for(int i=0; iLines-Add(s); if(varity =0) FillInfo(varity,s); s=; continue; else if(Bufi =0xa0 & BufiLines-Add(s); /在 Memo1 里显

23、示出收到的数据, 将会是完整的一帧数据 /-void _fastcall TComConnection:Button3Click(TObject *Sender) try TRegistry *reg = new TRegistry(KEY_READ); TStringList *strlist = new TStringList; reg-RootKey = HKEY_LOCAL_MACHINE;/*2013-1-26 未能将转义符转义,致使注册表打开失败,经过修改随即可行。*/ reg-OpenKeyReadOnly(HARDWAREDEVICEMAPSERIALCOMM); reg-Ge

24、tValueNames(strlist); cbb_com-Clear(); for( int i=0; iCount;i+ ) strlist-Stringsi = reg-ReadString(strlist-Stringsi); cbb_com-Items-Add(strlist-Stringsi); cbb_com-ItemIndex = 0; delete reg,strlist; cbb_comSelect(this); aotuCom = true; catch(Exception &e) ShowMessage(自动搜索串口失败,请检查串口是否正确接入。); /-void _f

25、astcall TComConnection:cbb_comSelect(TObject *Sender) try /* 串口号的形式是COMC, 其中C的取值不定,这里要将C提取出来, 就是去掉前面三个字符,并且不要后面/r和/n 那么它的长度就是length-3-2,而它的子串是从第四个开始的 */ YbCommDevice1-PortName = cbb_com-Items-Text; UnicodeString s=YbCommDevice1-PortName; s=s.SubString(4,YbCommDevice1-PortName.Length()-5); YbCommDevice1-PortNo = StrToInt(s); catch(Exception &e) ShowMessage(自动搜索串口失败,请检查串口是否正确接入。); /-

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2