温湿度控制系统毕业论文.doc

上传人:西安人 文档编号:3958097 上传时间:2019-10-11 格式:DOC 页数:52 大小:766.52KB
返回 下载 相关 举报
温湿度控制系统毕业论文.doc_第1页
第1页 / 共52页
温湿度控制系统毕业论文.doc_第2页
第2页 / 共52页
温湿度控制系统毕业论文.doc_第3页
第3页 / 共52页
温湿度控制系统毕业论文.doc_第4页
第4页 / 共52页
温湿度控制系统毕业论文.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《温湿度控制系统毕业论文.doc》由会员分享,可在线阅读,更多相关《温湿度控制系统毕业论文.doc(52页珍藏版)》请在三一文库上搜索。

1、学士学位毕业设计(论文)基于单片机的车间温湿度控制系统学生姓名:霍晓东 学 号:20084073831指导教师: 孟洁所在学院:信息技术学院专 业:电气工程及其自动化 中国大庆2012 年 5 月黑龙江八一农垦大学本科毕业设计(论文)任务书学生姓名霍晓东所在班级08级电气8班导师姓名孟洁导师职称副教授论文题目 基于单片机的车间温湿度控制系统题目分类 1应用与非应用类:工程 科研 教学建设 理论分析 模拟2软件与软硬结合类:软件硬件软硬结合非软硬件主要研究内容及指标:本设计主要研究如何应用单片机实现车间温湿度检测,应用STC89C52单片机,经过单总线式AM2301芯片分别对车间温湿度数据进行采

2、集,并通过液晶显示屏1602进行显示。指标:(1)温度测量范围为1530,湿度为4070%;(2)温度测量误差为0.1,湿度测量误差为3%;(3)具有量程自动转换功能主要参考文献:1、 康华光.电子技术基础M. 北京:高等教育出版社2、 彭介华.电子技术课程设计指导M. 北京:高等教育出版社3、 郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略M.电子工业出版社4、 黄智伟.印制电路板(PCB)设计技术与实践M北京:电子工业出版社,20095、 高吉祥等.电子技术基础实验与课程设计M北京:电子工业出版社,2002阶段规划:2011年12月20日 至2012年1月9日 系统分析准

3、备,硬件设计初步2012年 1月10日 至2012年1月16日 系统设计分析,硬件书面完成2012年 3 月1日 至2012年4月 17 日 硬件加工制作,编码测试及改进2012年 4 月18日 至2012年5月8日 整理论文材料及论文撰写2012年 5 月 9日 至2012年5月 19 日 答辩准备开题时间2012年12月20日完成论文时间2012年5月9日专业审定意见:系主任签字:年 月 日摘要摘要本设计是基于STC89C52单片机的温湿度检测电路设计,采用单总线传输模式的AM2301传感器,对温度湿度分别测量并通过液晶显示屏1602显示。单片机采集到AM2301温湿度传感器给出的数据进行

4、处理与计算,得出当前的温度与湿度并送给液晶屏显示。本系统具有可读性高,稳定性高,反应速度快,测量值准确的特点。关键词:温度 湿度 单片机2 ABSTRACTABSTRACT The temperature and humidity measurement system is based on singleline type temperature sensor DS18B20, capacitive moisture sensor SCM STC89C52 for temperature humidity measurement and respectively by LCD1602 disp

5、lay.SCM acquisition to Temperature sensor DS18B20 and humidity sensor HS1101 gives data processing and calculated, the current temperature and humidity and give the display on the LCD panel. This system has a readable, high stability, reaction speed, measured values exact characteristic.Keywords: Te

6、mperature Humidity MCU - II -目录目录摘要IABSTRACTII前言IV1设计要求12方案设计及论证22.1系统主要单元的选择与论证22.2 总体方案设计23 单片机主模块设计43.1单片机主电路设计43.2主程序流程图63.3主程序设计64 温湿度检测模块设计84.1温湿度检测电路设计84.2温湿度检测流程图94.3温湿度检测程序设计105液晶显示模块设计175.1 1602液晶显示模块电路设计175.2 液晶显示流程图185.3 液晶显示程序设计196. 系统测试216.1系统运行测试216.2主要指标测试216.3测试结果分析21参考文献22致谢23附录A:原

7、理图24附录: PCB图及元件分布图25附录C:元器件清单26附录D:程序清单27附录E:实物照片43-III前言前言随着智能检测技术的飞速发展,多传感器系统得到了广泛的应用。如何把多传感器集中于一个检测系统,综合利用来自多传感器的信息获得被测对象的可靠数据,是智能检测系统中需要解决的首要问题。为此,本设计利用STC89C52单片机制作了一个简便但精度较高的室内温湿度检测系统;它是利用DS18B20温度传感器作为测温元件;温度测量范围在-55125C;用HS1101湿度传感器作为测湿元件;湿度测量范围在0%100%RH;在同时该设计具备温湿度显示功能,主要原理是:通过温度传感器将非电量的温湿度

8、值转换为电量输出并由AD转换器对模拟信号进行数字化,然后通过单片机读取温湿度传感器转换的温湿度值,当温度超过一定值时蜂鸣器报警。-IV-黑龙江八一农垦大学毕业论文(设计)1设计要求基于单片机的室内温湿度检测电路设计要求如下:(1)设计制作一个温湿度计,温度测量范围为-4050,湿度为0100%;(2)温度测量误差为0.1,湿度测量误差为3%;(3)具有量程自动转换功能;(4)其他创新性设计,如低功耗等。-45-2方案设计及论证2.1系统主要单元的选择与论证2.1.1单片机控制模块的选择论证方案一:采用XC9000系列的FPGA。该类器件具有并行处理能力,能快速的响应外部的各种数字信号,但在数据

9、处理方面过于复杂,而且芯片价格较昂贵。 方案二:采用单片机作为控制核心,单片机数学运算功能较强。在程序相互调用方面,处理方便灵活,性能稳定,适合实际应用。且单片机技术发展较为成熟,价格便宜。基于以上分析,采用单片机控制可更为简便灵活地实现系统功能,故拟采用方案二。2.1.2 温度湿度检测模块的选择与论证方案一:选用DHT11作为温湿度检测模块。DHT11是一款数字输出的复合传感器,包含一个电阻式感湿元件和NTC式温度检测元件,可测2090%RH湿度,误差5%RH,050摄氏度,误差2摄氏度。方案二:选用DS18B20温度传感器和HS1101湿度传感器。DS18B20是一线式数字温度传感器,具有

10、独特的单线式接口方式,测量范围在-55125,误差为-+0.5。最高精度可达0.0625。HS1101是电容式湿度传感器,可测相对湿度范围在0%100%RH,误差为-+2%RH。上述数据可知,根据设计要求,本模块采用方案二。2.1.3 显示模块的选择与论证方案一:采用12864液晶模块显示测得的数据,可显示较多组的数据,字体较大,可清晰读数,但12864液晶模块价格昂贵,接线复杂,故不采用。方案二:采用1602液晶模块显示所测数据,1602液晶接线简单方便,同时也能满足显示需要,价格远低于12864液晶。因此,本方案为首选方案。综上所述,显示模块选择方案二。2.2 总体方案设计经分析,系统选用

11、单片机STC89C52、温度传感器DS18B20、湿度传感器HS1101、LCD液晶显示1602。由温度检测电路和湿度检测电路将检测到的数据送到单片机,单片机对接收到的数据进行处理并送到1602显示,5V稳压电源给各个部分供电。电源DS18B20温度检测显示模块单片机HS1101 湿度检测图1系统组成框图如图1所示,本系统由单片机主模块、DS18B20温度检测模块、HS1101湿度检测模块、1602液晶显示模块4部分组成。3 单片机主模块设计3.1单片机主电路设计单片机主模块包括了电源电路、晶振电路、复位电路,同时接入了各个模块的接口,保证了整个系统的灵活性。3.1.1 电源电路图2电源电路如

12、图2所示:系统的供电既能由USB供电又能由电源供电,S1是电源开关,DS1为电源指示灯。3.1.2 复位电路图3复位电路按键后:电容器被短路放电、RST直接和VCC相连,就是高电平,此时进入“复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到RST,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。3.1.3 单片机电路与晶振电路 图4单片机电路与晶振电路如图4所示,图中的晶振电路的作用是提供时序的频率,统一单片机和外部设备的时钟周期。单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能。硬件实

13、现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起。这种设计方法可以降低系统设计的复杂性。控制电路的核心器件是由美国Atmel公司生产的STC89C52单片机。STC89C52是一种低功耗、高性能的CMOS8位微控制器,具有8K在系统可编程Flash存储器,采用的工艺是Atmel公司的高密度非易失存储器技术;片上Flash允许程序存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业控制和嵌入式系统中。3

14、.2主程序流程图开始初始化Key2键按下?Key1键按下?显示湿度显示温度图5 主程序流程图3.3主程序设计如图5所示,主程序如下:/* 主函数 */*/void main() EA=1; /开总中断 init_t0(); /初始化定时器 init_t1(); TR0=1; /定时器开始工作 TR1=1; ET0=1; lcd_init() ; /初始化LCD ok_menu();BEEP=0;while(1) if(key1=0) lcd_init; wendu_Menu (); do Read_Temperature() ; Disp_Temperature() ; baojing();

15、while(key2) ;if(key2=0)lcd_init;shidu_Menu();do if(int_flag=1) disp(); while(key1); 4 温湿度检测模块设计4.1温湿度检测电路设计DS18B20温度检测模块和HS1101湿度检测模块电路原理图如下所示: 图6 温湿度检测电路图4.1.1 HS1101湿度检测传感器工作原理如图6所示,C2为HS1101湿度检测传感器,其工作电路由555多谐振荡器来实现,HS1101作为电容变量接在555芯片的2、5脚之间,引脚7用作电阻R5的短路,等量电容HS1101通过R5、R8充电到门限电压(约0.67V),通过R5放电到触

16、发电平,然后R5通过7短路到地,传感器由不同的电阻R5、R8充放电,进行工作循环,形成方波。其周期计算如下: T充电=C*(R5+R8)*In2; T放电=C*R8*In2; 由此可知输出方波频率为f=1/(T充电+ T放电)=1/C*(R5+2R8)*In2;可见空气湿度通过555测量振荡电路,就转变为与之呈反比例的频率信号。4.1.2 DS18B20温度检测传感器工作原理 DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储

17、器资源,它们分别是: ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。 RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到

18、更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。4.1.3蜂鸣器电路原理 如图6所示,蜂鸣器额定电流IB30mA,而对于STC89C52单片机,P1口的灌电流为 16mA,上拉电流为60A,由此可见,仅靠单片机的P1插针座口电流是不能驱动蜂鸣器的,必须使用集晶体管放大电路,为了使单片机消耗的功率更小,所以使用 PNP型晶体管9012。STC89C52采用的晶振电路采用110592MHz的无

19、源晶振,微调电容大小取30pF。4.2温湿度检测流程图4.2.1温度检测流程图初始化从18B20读字节初始化是否成功向18B20写字节读取温度显示温度图7 温度检测流程图4.2.2湿度检测流程图开定时T0,T1关闭T0并根据频率算出湿度是否计满1S初始化显示湿度 图8 湿度检测流程图4.3温湿度检测程序设计4.3.1温度检测程序温度检测部分程序如下:/* /*温度测量* /* /*初始化ds1820 */*/Init_DS18B20(void) DQ = 1 ; /DQ复位 Delay(8) ; /稍做延时 DQ = 0 ; /单片机将DQ拉低 Delay(90) ; /精确延时 大于 480

20、us DQ = 1 ; /拉高总线 Delay(8) ; presence = DQ ; /如果=0则初始化成功 =1则初始化失败 Delay(100) ; DQ = 1 ; return(presence) ; /返回信号,0=presence,1= no presence/* 读一个字节 */*/ ReadOneChar(void)unsigned char i = 0 ;unsigned char dat = 0 ;for (i = 8 ; i 0 ; i-) DQ = 0 ; / 给脉冲信号 dat = 1 ; DQ = 1 ; / 给脉冲信号 if(DQ) dat |= 0x80 ;

21、 Delay(4) ; return (dat) ;/* 写一个字节 */*/ WriteOneChar(unsigned char dat)unsigned char i = 0 ; for (i = 8 ; i 0 ; i-) DQ = 0 ; DQ = dat&0x01 ; Delay(5) ; DQ = 1 ; dat=1 ; /* 读取温度 */*/ Read_Temperature(void) Init_DS18B20() ; WriteOneChar(0xCC) ; / 跳过读序号列号的操作 WriteOneChar(0x44) ; / 启动温度转换 Init_DS18B20()

22、 ; WriteOneChar(0xCC) ; /跳过读序号列号的操作 WriteOneChar(0xBE) ; /读取温度寄存器 temp_data0 = ReadOneChar() ; /温度低8位 temp_data1 = ReadOneChar() ; /温度高8位 (详细见附录)4.3.2湿度检测程序湿度检测程序如下:/*湿度测量*/ /软件延时/void delays(unsigned int cnt) while(-cnt);/定时器0初始化void init_t0(void) TMOD=(TMOD&0xF0)|0x01; /定时器0工作于方式1/ TH0=(65536-5000

23、0)/256; /定时50ms/ TL0=(65535-50000)%256;TH0=0x4c;TL0=0x00;/ 定时器1初始化void init_t1(void) TMOD=(TMOD&0x0F)|0x50; /定时器1用作计时 TH1 =0x00; TL1 =0x00;/定时器0中断服务程序void int_t0(void) interrupt 1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; int_count+; if(int_count=20) TR1=0; int_flag=1; int_count=0x00; /定时器1中断服务程

24、序void int_t1(void) interrupt 3 T1count+; void disp(void) /湿度显示函数 int_flag=0; sum=TL1+TH1*256+T1count*65536; /计算1秒内的脉冲个数 /以下将数据格式化,转成LCD可显示的BCD码wet=100-(sum-4000)/50;/* 湿度计算公式 le0=wet%10; /最低位 wet=wet/10; le1=wet%10; /第二位 wet=wet/10; le2=wet%10; /第三位 wet=wet/10; int_count=0x00; T1count=0; TH1=0x00; T

25、L1=0x00; TR1=1; lcd_pos(0x4a) ; lcd_wdat(le2+48); lcd_pos(0x4b) ; lcd_wdat(le1+48); lcd_pos(0x4c) ; lcd_wdat(le0+48); delays(100); void wendu_Menu () /显示温度的菜单 uchar m ; lcd_pos(0) ; /设置显示位置为第一行的第1个字符 m = 0 ; while(cdis1m != 0) /显示字符 lcd_wdat(cdis1m) ; m+ ; lcd_pos(0x40) ; /设置显示位置为第二行第1个字符 m = 0 ;whi

26、le(cdis2m != 0) lcd_wdat(cdis2m) ; /显示字符 m+ ; writetab() ; /自定义字符写入CGRAM delay1(5) ; lcd_pos(0x4d) ; lcd_wdat(0x00) ; /显示自定义字符 void shidu_Menu () /显示湿度的菜单 uchar m ; lcd_pos(0) ; /设置显示位置为第一行的第1个字符 m = 0 ; while(cdis3m != 0) /显示字符 lcd_wdat(cdis3m) ; m+ ; lcd_pos(0x40) ; /设置显示位置为第二行第1个字符 m = 0 ; while(

27、cdis4m != 0) lcd_wdat(cdis4m) ; /显示字符 m+ ; writetab() ; /自定义字符写入CGRAM delay1(5) ; lcd_pos(0x4d) ; lcd_wdat(0x00) ; /显示自定义字符 void ok_menu() uchar m; lcd_pos(0) ; /设置显示位置为第一行的第1个字符 m = 0 ; while(cdis5m != 0) /显示字符 lcd_wdat(cdis5m) ; m+ ; lcd_pos(0x40) ; /设置显示位置为第二行第1个字符 m = 0 ; while(cdis6m != 0) lcd_

28、wdat(cdis6m) ; /显示字符 m+ ;5液晶显示模块设计5.1 1602液晶显示模块电路设计显示模块选用1602字符型液晶模块,是目前工控系统中使用最为广泛的液晶屏之一。1602字符型液晶模块是点阵型液晶,驱动方便,经编码后显示内容多样化。系统的输入模块采用中断扫描的44矩阵键盘,相比定时扫描方式,提高了MCU的使用效率。1602液晶显示模块电路原理图如图9所示:图9 1602液晶显示电路在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面

29、中,一般的输出方式有以下几种:发光管、LCD数码管、液晶显示器。 在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高、数字式接口 、体积小、重量轻 、功耗低 、 1602LCD 主要技术参数: 显示容量:162 个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm 引脚功能说明:1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口, 第 1 脚:VSS 为地电源。 第 2 脚:VDD接 5V正电源。 第 3 脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最

30、高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 R/W共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W为低电平时可以写入数据。 第 6 脚:E端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 714脚:D0D7为 8 位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。5.2 液晶显示流程图开

31、始初始化是否忙碌?写指令LCD初始化写数据设置显示位置显示图10 液晶显示流程图5.3 液晶显示程序设计液晶显示部分程序如下:/*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /*/*写显示数据到LCD */*RS=H,R

32、W=L,E=高脉冲,D0-D7=数据。 */*/void lcd_wdat(uchar dat) while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ;delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /* LCD初始化设定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 lcd_wcmd(0x38) ; /16*2显示,5*7点阵,8位数据 delay1(5) ; lcd_wcmd(

33、0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x0c) ; /显示开,关光标 delay1(5) ; lcd_wcmd(0x06) ; /移动光标 delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 delay1(5) ;/* 设定显示位置 */*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /数据指针=80+地址变量/*自定义字符写入CGRAM /*/void writetab() unsigned char i ; lcd_wcmd(0x40) ; /写CGRAM for (i = 0 ; i 8 ; i+) lcd_wdat(mytab i ) ; /*us级延时函数 */*/void Delay(unsigned int num) while( -num ) ;(详细见附录)6. 系统测试6.1系统运行测试主程序进行键盘扫描,单片机根据判断键盘哪个键按下,显示温度或湿度。如果key1键按下就调用温度检测程序,单片机对18B20进行初始化,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1