欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:5304523       资源大小:2.85MB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式课程设计 基于嵌入式系统的传感器环境检测.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(自动搜索串口失败,请检查串口是否正确接入。); /-


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开