智能仪表报告_第1页
智能仪表报告_第2页
智能仪表报告_第3页
智能仪表报告_第4页
智能仪表报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能仪表原理与设计综合训练报告题目:温度采集仪的设计班级:姓名:学号:指导教师:王久龙张红琴成绩:2015年11月13日目录前言................................................2系统方案...........................................31.1温度采集的意义和目的1.2主要设计内容1.3课题的任务要求1.4单片机的选型1.5系统框图硬件设计....................................42.1系统硬件原理图2.2单片机模块化设计2.2.1主控模块2.2.2温度传感器模块2.2.3显示模块2.2.4报警模块2.2.5通信模块2.2.6按键电路2.2.7晶振控制电路2.2.8复位电路软件设计....................................103.1主程序设计3.2LCD液晶显示软件设计3.3温度采集仪软件设计系统的软硬件调试.............................134.1软件程序下载4.2硬件调试4.2.1上电前的调试4.2.2上电后的调试4.3软硬件联调结果4.4软硬件联调结果分析参考文献.....................................................15致谢.........................................................16附录A硬件原理图.............................................17附录B源程序清单.............................................17附录C元器件清单.............................................32前言温度是一种根本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量。因此研究温度的测量方法和装置具有重要意义。测量温度的关键是温度传感器,温度传感器的开展经历了三个开展阶段:传统的分立式温度传感器、模拟集成温度传感器、智能集成温度传感器。目前,国际上新型温度传感器正从模拟式向数字式,集成化向智能化、网络化的方向飞速开展。本文所介绍的智能温度测量系统是基于DS18B20型数字式温度传感器,在89C52单片机的控制下,对环境温度进行实时控制的装置。该系统测量范围宽、测量精确度高,该系统可广泛适用于人民的日常生活和工、农业生产的温度测量。系统方案1.1温度采集的意义和目的温度是一种根本的环境参数,人们的生活与环境温度息息相关,不仅是在工业生产过程中还是农业生产过程中都离不开温度的控制,随着人们生活水平的不断提高,人们对温度的要求也越来越高。温度现场比拟恶劣,远程温度测试就变得比拟重要,利用RS-232进行串口接收数据来模拟现实生活中队温度的实时观测与控制。1.2主要设计内容温度传感器DS18B20采集环境模拟信号,其输出送入AT89C52,单片机在程序的控制下,将处理过的数据当被测温度高于一定温度时,单片机发出报警信号。1.3课题的任务要求要求:通过温度传感器采集温度,并将温度传到单片机进行处理,并通过液晶显示,同时以单片机为核心的主控单元通过对按键的操作,设定上下限报警温度与实测温度进行比拟,并判断是否报警,且与PC机通信将监测的温度发送到PC机〔温度监测界面可用VB进行编程设计〕。目的〔技术指标〕:1.可以对0℃~+125℃温度进行实时采集并能〔通过液晶〕显示;2.可以通过按键人工设定上下限报警温度并判断是否报警〔蜂鸣器发出响声〕;3.实现下位机与PC机之间的串行通信〔在PC机上用VB所编写界面显示实测温度值〕。1.4单片机的选型选用单片机AT89C52单片机AT89C52采用采用的是CHMOS工艺:高速度,高密度,低功耗。可靠性高,便于扩展。控制功能强。单片机AT89C52片内存储容量小,除此之外,集成度高,体积小,性价比高,应用广泛。1.5系统框图图1.1整体设计方案图硬件设计2.1系统硬件原理图该温度采集仪系统由主控模块,温度传感模块,显示模块,按键模块,通信模块组成。2.2单片机模块化设计2.2.1主控模块图2.2单片机STC89C52引脚图端口线制用,每一个引脚并不完全相同,如图p3口的第二功能:电源线〔2条〕控制线〔6条〕平封锁状态。2.2.2温度传感器模块本设计选用的数字式集成温度传感器DS18B20。DS18B20是DALLAS半导体公司〔现属MAXIM公司〕设计生产的单总线数字温度传感器,其测量温度范围为-55℃~+125℃,在-10~+85℃时精度为±0.5℃。DS18B20的测温原理,低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,还隐含着计数门,当计数门翻开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度存放器中,减法计数器1和温度存放器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度存放器值的累加,此时温度存放器中的数值即为所测温度。DS18B20的封装与引脚图如下图。DS18B20的封装与引脚图2.2.3显示模块主要采用LCD1602液晶显示。主要实现的功能是通过单片机读取温度传感器转换的温度值,再将其所读取的十六进制数转换成十制数,通过静态显示,最后在LCD显示出温度数值。本设计液晶显示器选用LCD1602,将单片机输出的数据进行动态显示。仿真如下图。LCD1602仿真图2.2.4报警模块由一个自我震荡型的蜂鸣器,蜂鸣器是通过三极管放大信号.在所要求的温度到达一定的上界或者下界时(我的初始上界温度20℃,下界温度为26℃),通过三个按钮可改变上下界温度的范围,一个按钮是用来加,一个按钮是用来减,最后一个按钮是用来设置模式。只要温度不在其设置范围内,蜂鸣器就会发出响声。仿真图如下图。2.2.5通信模块主要是利用MAX232实现RS232的串行协议的电平转换,以保证采样参数的设置和温度向PC机正常发送。主要实现的功能是利用STC89C52的UART串行通信口和上位PC机实现串行通信。硬件电路如下图。MAX232硬件图2.2.6按键电路按键电路如图2.7所示。由K2、K3、K4三个按键控制上、下限温度值。P1.0接口接K1按键。P1.2接口接入K2按键。P1.3接口接K3按键。K1温度上下限减少键:减少温度上下限的值。2.K2温度上下限增加键:增加温度上下限的值。K3温控开关键:进入温控的切换键。按键电路图2.2.7晶振控制电路晶振采用的是11.0592MHZ的标准晶振。接入单片机的XTAL1、XTAL2。晶振控制电路如下图。晶振控制电路图2.2.8复位电路本设计兼有上电复位和人工复位。人工复位即按下K4使单片机复位。直接接到单片机的RESET引脚。复位电路如下图。复位电路软件设计3.1主程序设计主程序流程图如下图:3.2LCD液晶显示软件设计3.3温度采集仪软件设计第四章系统的软硬件调试4.1软件程序下载硬件电路焊接好后,先检查有无连线错误,确认无误后,先在电脑中安装单片机下载器PL-2303HX驱动,STC烧录下载软件,选择单片机芯片为STC89C52RC,翻开程序文件,把自己的程序加载进去,选择COM口,查看计算机-管理-设备管理,选择COM3开始下载程序。下载窗口如图4.1所示。图4.1程序下载窗口4.2硬件调试4.2.1上电前的调试将板子焊接好,在上电前先进行无电测试,这也是工作的第一步,主要用万用表来检测是否存在短路或断路的情况。4.2.2上电后的调试确认电路无错误后,用杜邦线正确连接好P3.2、P3.3、P3.4,确保电源线和地线均连接正确。将芯片下载好程序,接通电源,看液晶显示器上有没有正确的温度显示,使用DS18B20传感器接受温度,看是否到达报警温度报警。使用串口线将上位机与下位机连接起来,在上位机检测下位机的温度。4.3软硬件联调结果软硬件联调结果如表4-1所示。表4-1测试结果统计4.4软硬件联调结果分析本设计中所要求的温度采集的数据在液晶显示器1602第一行显示“NowTempurature”,第二行能显示温度上下限的范围〔20°~25°〕,同时通过单片机控制的按键来改变温度上下限范围值。按键一个能手动调节温度的上下限,一个可用来加温度,一个用来减温度。MAX232电路工作正常,单片机与PC机能正常实现串行通信并在VB程序编写的界面显示实时温度并且显示状态稳定。在设定的范围内判定然后可实现报警,即蜂鸣器会发出响声,告知现在所测温度不在其设定温度范围内,因此三个技术指标都能满足。参考文献[1]赵新民.智能化仪器设计根底.哈尔滨:哈尔滨工业大学出版社,1999.[2]楼然苗等51系列单片机设计实例北京航空航天出版社,2003.3.[3]唐俊翟等单片机原理与应用冶金工业出版社,2003.9.[4]刘瑞新等单片机原理及应用教程机械工业出版社,2003.7.[5]吴国经等单片机应用技术中国电力出版社,2004.1.[6]VisualBasic程序设计教程,吴凤翔,中国林业出版社,2002-11.

[7]VisualBasic程序设计教程,龚沛增,清华大学出版社,2004.

[8]VisualBASIC程序设计,谭浩强,清华大学出版社,2000.

[9]VisualBasic6.0程序设计,刘新民,清华大学出版社,2004.

[10]VisualBasic程序设计教程,罗朝盛,人民邮电出版社,2005.

[11]VisualBasic程序设计教程,刘炳文,许蔓舒清华大学出版社,2000.[12]徐爱军,徐阳,智能化测量控制仪表原理与设计〔第三版〕[M].北京航空航天大学出版社,2002-11.致谢本次智能仪表实训,硬件局部看上去很简单,其实实际上要想真的焊好,也没有那么容易,因为还要拆上液晶,所以焊之前的排版很重要。软件设计也十分不易,要去找很多资料。当然,这一切的过程都离不开老师的帮助,在此非常感谢王九龙和张红琴两位老师的悉心教导,真是受益匪浅,希望以后还有这样的时机。附录A硬件原理图附录B源程序清单#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^7;//DS18B20定义使用单片机P37端口sbitlcden=P2^7;//1602使能sbitlcdrs=P2^5;//1602数据/命令选择端sbitlcdrw=P2^6;//1602读/写选择端sbitGLED=P1^7;//绿色LED正常范围值点亮,在本次设计中未参加sbitRLED=P3^3; //红色LED超过正常范围值点亮sbitBLED=P3^4; //蓝色LED低于正常范围值点亮〔本次设计中用红色LED灯替代〕sbitBELL=P3^2; //蜂鸣器报警控制端#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^7;//DS18B20定义使用单片机P37端口sbitlcden=P2^7;//1602使能sbitlcdrs=P2^5;//1602数据/命令选择端sbitlcdrw=P2^6;//1602读/写选择端sbitGLED=P1^7;//绿色LED正常范围值点亮,在本次设计中未参加sbitRLED=P3^3; //红色LED超过正常范围值点亮sbitBLED=P3^4; //蓝色LED低于正常范围值点亮〔本次设计中用红色LED灯替代〕sbitBELL=P3^2; //蜂鸣器报警控制端sbitK1=P1^0; //设置键/确定键sbitK2=P1^1; //数字调整键加1sbitK3=P1^2; //箭字调整键减****************************/sbitK1=P1^0; //设置键/确定键sbitK2=P1^1; //数字调整键加1sbitK3=P1^2; //箭字调整键减1uintwendu=0;//温度初始数值0度uchartem_h=27,tem_l=15;//温湿度上下限变量ucharkeyflag_1=0;//按键标志位根据按键次数执行操作内容/********************延时函数,延时一毫秒************************/voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=112;y>0;y--);}/**************************1602显示****************************/voidwrite_cmd(charcmd)//写指令函数{ lcdrs=0;//低电位送指令 P0=cmd; delay(1); lcden=1; delay(1); lcden=0;}voidwrite_data(uchardat)//写数据函数{ lcdrs=1;//高电位送数据 P0=dat; delay(1); lcden=1; delay(1); lcden=0;}voidwrite_str(uchar*str)//写字符串函数{ while(*str!='\0') { write_data(*str++); delay(60); }}/***************************初始化******************************/voidinit(){lcdrw=0;//先将RW拉低 lcden=0;//再把EN拉低 write_cmd(0x38);//显示模式设置 write_cmd(0x0c);//开启显示屏,关光标,光标不闪烁 write_cmd(0x06);//显示地址递增,即写一个数据后,显示位置右移一位 write_cmd(0x01);//去除屏幕 write_cmd(0x80);//数据指针把光标移到第一行第一个位置}/************************DS18B20程序*************************/bitinit_DS18B20(){ ucharnum; bitflag; DQ=1; for(num=0;num<2;num++);//先拉高 DQ=0; for(num=0;num<200;num++);//480-960us powerup DQ=1; for(num=0;num<20;num++); //>60uswait flag=DQ; //响应 for(num=0;num<150;num++); // 60-240usds18b20存在信号 DQ=1; returnflag;}voidDS18B20_WR_CHAR(ucharbyte)//写18b20数据//{ ucharnum; ucharnum1; for(num1=0;num1<8;num1++) { DQ=0; //拉低 _nop_(); //下拉1us _nop_(); DQ=byte&0x01; //写数据,从地位开始 for(num=0;num<20;num++); //>60uswait byte>>=1; DQ=1; //拉高 _nop_(); _nop_(); } //8位数据,一位一位的写入ds18b20}ucharDS18B20_RD_CHAR() //读18b20数据{ ucharnum; ucharnum1; ucharbyte=0; for(num1=0;num1<8;num1++) { DQ=0; //拉低 _nop_(); DQ=1; for(num=0;num<1;num++);//<10us byte>>=1; if(DQ==1) byte|=0x80; else byte|=0x00; DQ=1; //拉高 _nop_(); _nop_(); for(num=0;num<20;num++);//>60us } returnbyte;}voidDS18B20_WENDU(){ uchartemperaturel=0; uchartemperatureh=0;if(init_DS18B20()==0) { DS18B20_WR_CHAR(0xcc); //发命令:SkipROM,跳过读序列号 DS18B20_WR_CHAR(0x44); //启动温度转换if(init_DS18B20()==0) { DS18B20_WR_CHAR(0xcc); //发命令:SkipROM,跳过读序列号 DS18B20_WR_CHAR(0xBE); //读取温度 _nop_(); temperaturel=DS18B20_RD_CHAR(); //温度值低8为存入temperaturel temperatureh=DS18B20_RD_CHAR(); //温度值高8为存入temperatureh wendu=(temperatureh*256+temperaturel)*0.625;//完成数据整合,温度比正常大10倍 init_DS18B20(); } }}voidkeyscan() //按键扫描{ if(K1==0) { delay(5); if(K1==0) { keyflag_1++;//键一按下,标志位加1 while(!K1); } } if(keyflag_1==3){keyflag_1=0;write_cmd(0x0c);} if(keyflag_1==1){write_cmd(0x89);write_cmd(0x0d);}//温度上限末位翻开光标 if(keyflag_1==2){write_cmd(0x8f);write_cmd(0x0d);}//温度下限末位翻开光标 if(keyflag_1!=0) { if(K2==0) //限值加键 { delay(5);//按键消除抖动判断 if(K2==0) { while(!K2); if(keyflag_1==1) { tem_h++;if(tem_h==100)tem_h=0;write_cmd(0x88);write_data(tem_h/10+48); write_data(tem_h%10+48); } if(keyflag_1==2) { tem_l++; if(tem_l==100)tem_l=0; write_cmd(0x8e); write_data(tem_l/10+48); write_data(tem_l%10+48); } } } if(K3==0) //限值减键 { delay(5);//按键消除抖动判断 if(K3==0) { while(!K3); if(keyflag_1==1) { tem_h--;if(tem_h==0)tem_h=99;write_cmd(0x88);write_data(tem_h/10+48); write_data(tem_h%10+48); } if(keyflag_1==2) { tem_l--; if(tem_l==0)tem_l=99; write_cmd(0x8e); write_data(tem_l/10+48); write_data(tem_l%10+48); } } } } }/**********************报警判断函数******************************/voidbaojing() {ucharu;u=((wendu/100)%10)*10+(wendu/10)%10;//如果用同一个wendu变量,进入功能选择是,wendu原来的值没有保存变为0if(u>=tem_h)//温度大于设定上限值{RLED=0;GLED=1;BELL=0;}elseif(u<tem_l)//温度低于下限值{BLED=0;GLED=1;BELL=0;} else{GLED=0;BELL=1;BLED=1;RLED=1;}}/************************主函数******************************/voidsend(ucharc) //向串口发送字符{ SBUF=c;while(TI==0); TI=0;}voidmain(){ init();//初始化1602界面+48的作用是实现十进制和ASCII码之间的转换,目的是使1602液晶正常显示十进制数write_str("SET:h=27l=15"); write_cmd(0x88); write_data((tem_h/10)+48); write_data(tem_h%10+48); write_cmd(0x8e); write

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论