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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

温湿度检测仪的设计报告.docx

1、温湿度检测仪的设计报告电子电路综合实验设计报告设计题目:温湿度检测仪的设计学生姓名:学 号:专业年级:指导教师:起止日期:2016年5月2016年6月电气与信息工程学院2016年6月19日 3.2 方案二- 21 目的与意义温湿检测在仓库管理、生产制造、气象观测、科学研究、国防军事以及日常生活中有广泛的应用,传统的模拟式温湿度传感器一般都要设计信号调理电路并需要经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复度、互换性、一致性等方面往往不尽人意。由于温湿度传感器及其控制系统是20世纪90年代才兴起的行业,因此利用温湿度传感器设计一款将度高、稳定性好、成本低的温湿度检测器有一定的

2、市场前景。此单片机课程设计采用具有高精度,防干扰等优点的传感器,结合单片机技术,设计完成的温湿度检测器具有易携带、低功率等特点。克服了传统温湿度检测器需要校准的过程和精度较低的缺点。2 设计要求 (1)模拟单总线协议与DTH11进行通信; (2)LCD1602第一行显示检测的温度值:Temperature 22 (3)LCD1602第二行显示检测的湿度值:Humidity 75%RH3 方案设计温湿度检测器的组成部分:图3.1 组成模块3.1 方案一主控芯片采用STC89C52RC,温度传感器采用DTH11。选择该方案的原因:(1)单片机软件编程可简单地实现多数功能,自由度大,结构清晰,便于调

3、试和维 护,可读性和移植性强。并且具有体积小,搭建简单等优点。(2)STC89C52RC的应用十分广泛,相关技术的使用都很熟练,开发难度小。(3)DTH11温湿度传感器是一款含有己校准数字信号书序的温湿度复合传感器。 它应用的数字采集技术和温湿度传感技术,可确保产品具有极高的可靠性与卓越的长期稳定性。(4)传感器包括一个电阻感湿与元件和一个NTC测温元件,因此DTH11品质卓越、响应速度快、抗干扰能力强。(5)DTH11进行温湿度检测时,在0-50内最高精度为5%左右,精度较高。(6)DTH11是将温度和湿度一起测量,具有搭建电路简单、体积小、编程容易的有点。3.2 方案二主控芯片采用MSP4

4、30F149,温度传感器采用DS18B20和一个湿度传感器相结合。选择该方案的原因:(1)MSP430F149功耗低,内部集成高速12位ADC性能强大。(2)DS18B20是数字信号输出,易于单片机处理和控制,消除了传统测量方法的许多外围电路。(3)DS18B20在0-100最大线性误差小于1。(4)DS18B20的单总线数据传输方式有利于提高信号的稳定性和精度。从两种方案的综合情况来考虑,选择方案一较符合实际情况。因为本设计比较简单,不需要MSP430F149如此功能强大的单片机,并且MSP430F149成本高,是TPFQ贴片封装,必须采用PCB制版,增加了开发周期。而且使用DS18B20和

5、一个湿度传感器来测量温湿度具有电路搭建复杂,体积大,编程困难等缺点。4 系统硬件设计STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8k在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数

6、器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。STC89C52RC的引脚图如下: 图4.1 STC89C52RC引脚图根据设计要求写出设计的系统硬件框图,给出如下所示的硬件结构框图:图4.2 硬件结构图4.1 STC89C52主控电路单片机控制模块由STC

7、89C52RC最小系统组成,其中包括单片机、晶振电路和复位电路。晶振电路由18,19引脚接入2个30pf的电容和一个11.059MHz的晶振组合而成。最小系统如图4.3所示。图4.3 单片机最小系统4.2 DTH11温湿度检测电路DTH11具有品质卓越、超快响应、抗干扰能力强、精度高、性价比极高等优点。采用单总线串行通信方式,供电电压范围为3.0V至5.5V,测量温度范围为0至50,湿度为20%至90%。DHT11芯片封装和管脚如图4.4所示。图4.4 DTH11封装图和引脚图DTH11引脚说明,如表4.1 表4.1 DTH11引脚说明DTH11的硬件设计,如图4.5所示。图4.5 DTH11

8、硬件连接图4.3 LCD1602液晶屏显示电路1602采用标准的16脚接口,如图4.6所示,其中:1脚:GND为电源地2脚:VCC接5V电源正极3脚:V0为液晶显示器对比调整端4脚:RS为寄存器选择端5脚:RW为读写信号线6脚:EN为使能端714脚:与单片机双向通信的8位数据端1516脚:空脚或背灯电源图4.6 1206硬件连接图5 系统软件设计硬件设计是基于多个电路组合而成的整体,所以系统的程序设计思想也是面向各个硬件电路而设置的子程序(或者是面向各个子功能而设置的子程序),通过主程序按照一定的逻辑关系去调用它们,从而实现整个系统的功能。这样可以避免主程序代码过长,方便出错调试分析。5.1

9、主程序程序流程图主函数主要是对系统所有硬件进行初始化让整个系统能够正常工作,具体程序执行过程见图5.1主函数流程图。图5.1主函数流程图实现主程序的关键代码如下:void main() tem=0; hum=0; delay_ms(1000); /DTH11开始一秒有错误输出 InitLcd1602(); while(1) DTH11_DUSHU(); Display_DTH11(); delay_ms(1000); 5.2 温湿度检测程序温湿度检测软件设计遵循单总线协议,MCU通过时序来写入和读出DTH11中的诗句。DTH11通过如下步骤完成操作:复位、接受应答、读取ROM序列号、启动温湿度

10、转化、等待操作完成、保持数据。流程图如5.2所示。图5.2 温湿度检测软件流程图实现温湿度检测的程序如下/*初始化DTH11bit Init_DTH11() bit flag; uchar num; DQ=0; delay_ms(19); / 18ms DQ=1; for(num=0;num11;num+); / 20-40us 34.7us flag=DQ; for(num=0;num27;num+); for(num=0;num27;num+); return flag;/*读DTH11数据uchar DTH11_RD_CHAR() uchar byte=0; uchar num; uch

11、ar num1; while(DQ=1); for(num1=0;num18;num1+) while(DQ=0); byte=1; / for(num=0;DQ=1;num+); if(num10) byte|=0; else byte|=1; return byte;/*读取DTH11温度和湿度void DTH11_DUSHU() uchar num; if(Init_DTH11()=0) hum=DTH11_RD_CHAR(); DTH11_RD_CHAR(); tem=DTH11_RD_CHAR(); DTH11_RD_CHAR(); DTH11_RD_CHAR(); for(num=

12、0;num17;num+); DQ=1; 5.3 LCD1206显示程序图5.3 LCD1206显示流程图LCD1206显示程序如下:1206初始化程序省略。void LcdSetCursor(unsigned char x,unsigned char y) /坐标显示 unsigned char addr; if(y = 0) addr = 0x00 + x; else addr = 0x40 + x; Write_Cmd(addr|0x80);void DisplayOneChar (uchar X,uchar Y,uchar DData)/显示字符 if(Y) X|=0X40; /Y=1

13、,显示第二行,Y=0显示第一行 X|=0X80; Write_Cmd(X); /X用来显示哪一位 Write_Data(DData); /Ddata用来写数据void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str) /显示字符串 LcdSetCursor(x,y); /当前字符的坐标 while(*str != 0) Write_Data(*str+)display02=0,0; /显示第一行的00位置的数据display12=0,0; /显示第二行的00位置的数据void Display_DTH11() displ

14、ay01=tem/10%10; display00=tem%10; LcdShowStr(0, 0, table0); DisplayOneChar (12, 0, ASCII display01 ); DisplayOneChar (13, 0, ASCII display00 ); DisplayOneChar (14, 0, 0xdf ); DisplayOneChar (15, 0, 0x43 ); /显示温度 display11=hum/10%10; display10=hum%10; LcdShowStr(0, 1, table1); DisplayOneChar ( 9, 1,

15、ASCII display11 ); DisplayOneChar (10, 1, ASCII display10 ); DisplayOneChar (11, 1, ASCII10 ); DisplayOneChar (12, 1, 0x52); DisplayOneChar (13, 1, 0x48);/显示湿度 6 系统测试结果与分析6.1 系统测试结果测试地点:室内,测试结果如表6.1所示。标准温度测试温度标准湿度测试湿度262765%63%表6.1 测试结果6.2系统结果分析测量结果和标准温湿度有一定的误差,但是在误差范围内。证实了理论的科学性和可行性。系统可改进之处:进一步严格和完

16、善DTH11的 时序,可提高测量精度。7 总结通过这次设计我真的学到了很多东西。不仅了解了单片机的原理级应用,温湿度传感器方面的知识。另外也使我体会了一般的设计过程。也让我觉得单片机没有我想象中的那么难。上课的时候一直觉得单片机是一科很难的课程,需要极强的逻辑思维能力,能把自己的思维用程序表达出来。我觉得这就是单片机编程的最大困难。而我也是一开始就被这个拦路虎吓住了。没有努力过就放弃了。这门课对我来说怎么可能不难呢。虽然在此次设计过程中遇到了很多问题,但是在老师和同学的帮助下我顺利完成了这次温湿度检测器的设计。参考文献1.黄友锐.单片机原理及应用.合肥:合肥工业大学出版社,2006.112.黄

17、智伟.无线发射与接收电路设计M.北京:北京航空航天大学出版社,2004.3.陈杰,黄鸿.传感器与检测技术.北京:高等教育出版社,2002.84.荚荚庆,王代华,张志杰.基于nRF905的无线数据传输系统J.国外电子元器件.2008 (1):29-31.5.李建设.低功耗低成本温湿度测量仪的设计J.节能,2006,(05)6.谭浩强.C程序设计.北京:清华大学出版社,1991.77.孟臣,李敏.数字式温湿度传感器原理与应用J.世界电子元器件,2003(8):66268.8.CotterW.塞尔.无线通信设备与系统设计大全M.张之超等译.北京:人民邮电出版社,2004附录附录A 系统实物图附录B

18、系统主程序#include#include/*/*定义区*/*#define uchar unsigned char#define uint unsigned int#define LCD1602_DB P2 sbit DQ=P37; sbit LCD1602_RS = P07;sbit LCD1602_RW = P06;sbit LCD1602_EN = P05; void Lcd1602_Delay1ms(uint c);void Read_Busy(); void Write_Cmd(unsigned char cmd); void Write_Data(unsigned char da

19、t); void LcdSetCursor(unsigned char x,unsigned char y); void DisplayOneChar (uchar X,uchar Y,uchar DData); void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str); void InitLcd1602(); /*/*1602显示初始化 */*uchar code ASCII=0123456789%c;uchar code table0=Temperature:00;uchar code table1=Humidi

20、ty:00;uchar tem;uchar hum;void InitLcd1602() Write_Cmd(0x38); Write_Cmd(0x0c); Write_Cmd(0x06); Write_Cmd(0x01); void Read_Busy() unsigned char sta; LCD1602_DB = 0xff; LCD1602_RS = 0; LCD1602_RW = 1; do LCD1602_EN = 1; sta = LCD1602_DB; LCD1602_EN = 0; while(sta & 0x80);void Write_Cmd(uchar cmd) /写命

21、令 Read_Busy(); LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DB = cmd; LCD1602_EN = 1; LCD1602_EN = 0; void Write_Data(uchar dat) /读数据 Read_Busy(); LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DB = dat; LCD1602_EN = 1; LCD1602_EN = 0;/*/*定义显示函数 */*void LcdSetCursor(unsigned char x,unsigned char y) unsigned cha

22、r addr; if(y = 0) addr = 0x00 + x; else addr = 0x40 + x; Write_Cmd(addr|0x80);void DisplayOneChar (uchar X,uchar Y,uchar DData)/显示字符 if(Y) X|=0X40; /Y=1显示第一行,Y=0显示第二行 X|=0X80; Write_Cmd(X); /X用来选择哪一位 Write_Data(DData); /Ddata用来写数据void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str) /显

23、示字符串 LcdSetCursor(x,y); /当前字符坐标 while(*str != 0) Write_Data(*str+); /*/*延时函数*/*void delay_ms(uint z) uint x,y; for(x=z;x0;x-) for(y=114;y0;y-);/*/*DTH11模块*/*/*初始化DTH11bit Init_DTH11() bit flag; uchar num; DQ=0; delay_ms(19); / 18ms DQ=1; for(num=0;num11;num+); / 20-40us 34.7us flag=DQ; for(num=0;num

24、27;num+); for(num=0;num27;num+); return flag;/*读DTH11数据uchar DTH11_RD_CHAR() uchar byte=0; uchar num; uchar num1; while(DQ=1); for(num1=0;num18;num1+) while(DQ=0); byte=1; / for(num=0;DQ=1;num+); if(num10) byte|=0; else byte|=1; return byte;/*读取DTH11温度和湿度void DTH11_DUSHU() uchar num; if(Init_DTH11()

25、=0) hum=DTH11_RD_CHAR(); DTH11_RD_CHAR(); tem=DTH11_RD_CHAR(); DTH11_RD_CHAR(); DTH11_RD_CHAR(); for(num=0;num17;num+); DQ=1; /*/*将检测到的数据显示模块*/*display02=0,0;display12=0,0; void Display_DTH11() display01=tem/10%10; display00=tem%10; LcdShowStr(0, 0, table0); DisplayOneChar (12, 0, ASCII display01 ); DisplayOneChar (13, 0, ASCII display00 ); DisplayOneChar (14, 0, 0xdf ); DisplayOneChar (15, 0, 0x43 ); display11=hum/10%10; display10=hum%10; LcdShowStr(0, 1, table1); DisplayOneChar (

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

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