多路温度采集控制系统.doc

上传人:豆**** 文档编号:33453122 上传时间:2022-08-11 格式:DOC 页数:19 大小:113.50KB
返回 下载 相关 举报
多路温度采集控制系统.doc_第1页
第1页 / 共19页
多路温度采集控制系统.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《多路温度采集控制系统.doc》由会员分享,可在线阅读,更多相关《多路温度采集控制系统.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品文档,仅供学习与交流,如有侵权请联系网站删除专业综合课程设计设计说明书设计题目: 多路数据(温度)采集系统的设计 学生学号: 学生姓名: 专业班级: 指导教师: 起止日期: 成绩评定: 嘉兴学院 机电工程学院指导教师评语及成绩评定指导教师评语:年 月 日成绩指导教师(签字):设计题目:多路数据(温度)采集系统的设计1 引言在科学研究中,运用数据采集系统可以获得大量的动态信息,这也是获取科学数据和生成的重要手段之一。无论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。随着计算机的发展,数据采集系统对通信起到了巨大的推动作用。计算机和通信紧密结合构成了灵活多样的通信控制系

2、统,也构成了强有力的信息处理系统。数据采集,从严格的意义上来说,应该是计算机控制的多路数据自动检测或巡 回检测,并能够对数据的存储、处理、分析计算以及从检测的数据中提取有用的信息,供显示、打印、绘图等作用。本次课程设计则是针对多路数据(温度)采集系统进行了初步的研究,使多路采集系统具有对多路模拟信号进行采集和处理的功能。整体设计中采用了模块化的设计,以单片机AT89C51为核心的4路温度采集控制系统:系统运行时,循环扫描显示对应的DS18B20温度传感器的温度,循环逐次显示温度;每隔10ms,采集一次温度。软件部分则是在Keil软件中,应用C语言编写。2多路数据(温度)采集系统的工作原理2.1

3、总体方案设计数据采集系统一般由数据输入通道、数据存储与管理、数据处理、数据输出及显示这五部分组成。输入通道要实现对被测对象的检测,采样和信号检测等工作。数据存储与管理要用存储器把采集到的信息存储起来,建立相应的数据库并进行管理与调用。数据处理就是从采集到的信息中删除有关干扰,与无关信息。对数据进行统计分析便于检索。数据输出及显示就是把数据以适当的形式输出与显示。主要结构如下图:传感器采集温度多路温度AT89C51单片机LED数码管显示警示灯、喇叭报警系统继电器控制系统2.2方案比较与论证2.2.1采集电路方案一:使用传统温度传感器。传统的温度检测大多以热敏电阻为传感器,采用热敏电阻,可满足40

4、摄氏度至90摄氏度测量范围,但热敏电阻可靠性差,测量温度准确率低,对于1摄氏度的信号是不适用的,还得经过专门的接口电路转换成数字信号才能由微处理器进行处理。对于这类传感器,使用起来较麻烦,但价格较便宜。方案二:使用数字式温度传感器。数字温度传感器使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分功能电路的集成,使总体硬件设计更简洁,能 有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这也就缩短了开发的周期使用起来方便,但价格昂贵。经过比较,从系统技术参数要求和功能

5、仿真方面考虑,数字式温度传感器比传统温度器功能更全面,使用时更方便,仿真时也更简便,故选用方案二。本次设计采用市面上运用较为广泛的数字式温度传感器DS18B20。2.2.2处理器选择方案一:采用AT89C52单片机作为处理器,能达到要求,但其内存过小,处理精度较低,不是最好的选择;方案二:采用TI公司的各种单片机,虽然能很好的达到设计的要求,但其成本过高,且程序较复杂,不适宜与本次设计。通过对比,方案一的AT89C52的功能完全能够符合题目的各个部分和发挥部分的设计,故选用方案一2.2.3 显示部分方案一:用LED数码管,其操作简单,显示直观。不仅程序的设计简易,而且对周围的环境要求很低,方便

6、维护方案二:用LCD液晶,具有体积小、低功耗、显示丰富等优点。电路连接简单,价格较高。总的来说,LCD液晶显示电路连接简单且能满足设计需求,又LCD1602上课时学过,不需再单独学习其他LCD显示程序编写要求,所以本设计选用LCD液晶显示。3 实现方案本次设计的电路主要包括了最小系统电路、温度采集系统电路、控制系统电路及显示系统电路等几部分电路组成。3.1 最小系统电路:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-5

7、1指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。下图中的晶振电路和复位电路与单片机连接构成最小系统电路。晶振电路:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。 复位电路:为在系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号3.2 温度采集电路由四个DS18B20温度传感器构成本系统的温度采集电路DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器5。该器件将

8、半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为-55+125 ,测温精度为士0.5;温度转换精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。(3)

9、系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在

10、空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长6。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。DS18B20主要特性 DS18B20的引脚图如下图所示。独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能

11、正常工作。DS18B20的引脚功能描述如表所示。图 DS18B20的引脚排列表 DS18B20引脚功能描述序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地DS18B20内部结构 DS18B20有 64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存

12、器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC )。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。3.3 LCD1602液晶显示系统电路LLCD1602主要技术参数管脚:1602采用标准的16脚接口,其中:第1脚:GND为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对

13、比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。特性:3.3V或5V工作电压,对比度可调;内含复位电路;提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能.有80字节显示数据存储

14、器DDRAM;内建有192个5X7点阵的字型的字符发生器CGROM;8个可由用户自定义的5X7的字符发生器CGRAM.3.4 控制系统电路由继电器和按钮组成控制系统,其中按键控制系统最高温度,进而控制继电器的工作。继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。电磁继电器一般由铁芯、线圈、衔铁、

15、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。其结构图如下图所示。3.5 软件程序程序

16、流程图在程序进行初始化后,开始反复执行如下图所示流程的程序。程序流程图4 结论在这次的课程设计中,我的题目是多路数据(温度)采集系统的设计。在老师的提点下,首先就是要理解和解决多路该怎么样去实现,再就是利用单片机和LED实现采集和显示的功能。通过查找资料,对比系统的可行性等,最终确定了以上方案。在单片机课程设计中做成功过温度器的课程设计,一开始觉得很简单,不就是多了几个传感器罢了,后来发现自己眼高手低。事实并不是这么容易。在程序那关就走了好久,因为三个程序间需要相互关联,相互引用,一开始一直编译不通过。后来也是用了偏方,把主程序中需要引用的地方直接写入两个子程序里,这才成功编程。后边的prot

17、eus仿真里,前半部分比较顺利,后边又不如意了。仔细看了出错的地方,才发现,因直接偷懒,4个继电器部分,在做完第一个后后三个是复制剪贴的,导致命名重复。这也给我了一个警示,做人做事都不偷懒,要一步一个脚印的认真做好每件事,才能成功。总的来说,通过我在课程设计的实践过程,我懂得了活到老学到老这句名言的真正意义,学习是一个循序渐进的过程,不可能一蹴而就,不管是在以后的工作中、或者生活中都不能停止学习,不断的用知识武装自己,让自己全面发展,更能适应这个科技文化高速发展的世界。5 参考文献1张岩,胡秀芳等.传感器应用技术M.福建:科学技术出版社,2005.2杨树兴,李擎,苏中等.计算机控制系统M.北京

18、:机械出版社,2006.3蔡振江.单片机原理及应用M,北京:电子工业出版社,2007.4刘迎春,传感器原理设计与应用M,北京:国防科技大学出版社,2005:205-207.5金杰. DS18B20实现高精度温度测量J. 郑州电子报,2005,2:127. 6郭天祥.新概念51单片机C语言教程M.电子工业出版社7郑锋.51单片机典型应用开发范例大全M.中国铁道出版社8吴兴慧,王彩君.传感器与信号处理M.北京:电子工业出版社,1998.9苏家健.曹柏荣,汪志峰.单片机原理及应用技术M.北京:高等教育出版社,2006.10黄坚.自动控制原理及其应用M,北京:高等教育出版社,2004.11马西秦.自动

19、检测技术M,北京:机械工业出版社,2000.12李毅刚.单片机原理及应用M.北京:高等教育出版社,2004.13王晓明.电动机的单片机控制M.北京:北京航空航天大学出版社.2004.6 附录1) 硬件系统原理图2)程序代码Main:#include#include#define uchar unsigned char #define uint unsigned int#include18B20.h#includeLCD.h/#include sbit warning=P35;sbit greenled=P36;/485 收发控制/uchar flag1; / sign of the resul

20、t positive or negativeuchar j;int temper4;uchar code str4_sht11= max: min: ;sbit k1=P30;/setsbit k2=P31;/+sbit k3=P32;/-sbit sound=P17;char max=40;char min=10;uchar change_flag;uchar flag;void delay1(uint count) /delay1 uint i; while(count) i=200; while(i0) i-; count-;void serial_int() TMOD=0X01;/t1

21、工作在方式2 TH0=0xF0;/2400BIT/S TL0=0x0F; TR0=1;/打开计数器开始计数 ET0=0;void timer_isr() interrupt 1 TH0=0xF0; TL0=0x0F;sound=sound;void key1()if(k1=0)change_flag+; if(change_flag2) change_flag=0;while(k1=0);void key2()if(k2=0) if(change_flag=1) max+;if(change_flag=2) min+;while(k2=0);void key3()if(k3=0) if(cha

22、nge_flag=1) max-; if(change_flag=2) min-; while(k3=0);void key()/按钮 key2();key1();key3();void main() uchar i,a=1,b=1; warning=0; serial_int(); greenled=1; lcd_init(); for(i=0;i4;i+) tmpchange(i); temperi=tmp(i); display_1602(); while(1)if(change_flag=0)if(a=1) b=1; a=0; write_lcdcom(0x01); /显示清屏 dis

23、play_1602();tmpchange(j); for(i=0;i3) j=0;if(temperjmax)|(temperjmin)&(temperj850)warningreenled=0;/nn=0;EA=1;else EA=0;warning=0; greenled=1; else key(); if(b=1)a=1; b=0; write_lcdcom(0x01); /显示清屏 write_lcdcom(0x80);/第一行lcd显示地址for(i=0;i32;i+)write_lcddate(str4_sht11i);/显示table1中的字符 else lcd_set(max

24、,min);DS18B20:#include#includesbit DS0=P10; /define interfacesbit DS1=P11; /define interfacesbit DS2=P12; /define interfacesbit DS3=P13; /define interface#define BIT1(x) (10) i-; count-;uchar No_number; void dsreset(uchar m) uint i; DS&=NBIT1(m); i=103; while(i0)i-;/480us,reset DS|=BIT1(m);/keep fre

25、e i=4; while(i0)i-;bit tmpreadbit(uchar m) /read a bit uint i; bit dat; DS&=NBIT1(m);i+; /i+ for delay DS|=BIT1(m); /a=DS; i+;i+;/读时间片,要大于60us if(DS&BIT1(m) dat=1; else dat=0; i=8;while(i0)i-; return (dat);uchar tmpread(uchar m) /read a byte date uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(m)

26、; dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tmpwritebyte(uchar dat,uchar m) /write a byte to ds18b20 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /置高 1 DS&=NBIT1(m); i+;i+; DS|=BIT1(m); i=8;while(i0)i-; else DS&=NBIT1(m); i=8;while(i0)i-;/写0要保持低电平60us DS|=BIT1(m); i+;i+;void tmpcha

27、nge(uchar m) dsreset(m); delay(1); tmpwritebyte(0xcc,m); tmpwritebyte(0x44,m); uint tmp(uchar m) float tt; uchar a,b; int temp; dsreset(m); delay(1); tmpwritebyte(0xcc,m); tmpwritebyte(0xbe,m); a=tmpread(m); b=tmpread(m); temp=b; temp0xf8) /判别负号位 flag=1; temp=temp+1; else flag=0; tt=temp*0.0625; tem

28、p=tt*10+0.5; return temp;LCD1620:#include#include#define uchar unsigned char #define uint unsigned intsbit lcdrs=P20;sbit lcdwr=P21;sbit lcden=P22;uchar code str1= 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;/温度图标uchar code str6_sht11= The present temp is; /uchar code str4_sht11=max: min: ;/uchar code s

29、tr2_sht11=temp=;uchar code str7_sht11=NO. ;/清除没不要的显示uchar change_flag;void delay_1602(uint delay_time)/延时函数for(;delay_time0;delay_time-);void write_lcdcom(uchar date)/写lcd1602命令lcdwr=0;lcdrs=0;delay_1602(5);P0=date;lcden=1;delay_1602(5);lcden=0;void write_lcddate(uchar lcddate)/写1602数据lcdwr=0;lcdrs=

30、1;delay_1602(5);P0=lcddate;lcden=1;delay_1602(5);lcden=0;void lcd_init()/1602初始化write_lcdcom(0x38); /display mode/write_lcdcom(0x38); /display mode/write_lcdcom(0x38); /display modewrite_lcdcom(0x06); /显示光标移动位置write_lcdcom(0x0c); /显示开及光标设置write_lcdcom(0x01); /显示清屏void display_1602()/显示字符子函数uchar i;l

31、cdwr=0;lcdrs=0;lcden=0; delay_1602(10);write_lcdcom(0x80);/第一行lcd显示地址/*/for(i=0;i32;i+) write_lcddate(str6_sht11i);/显示table1中的字符 delay_1602(10); write_lcdcom(0xc0);/第二行LCD显示起始地址for(i=0;i32;i+) write_lcddate(str7_sht11i);/显示table2中的字符lcdwr=1;lcdrs=1;lcden=1;void lcd_printf(uchar number,uint x,uchar a

32、dd)/LCD数据显示函数uchar x1,x2,x3,x4;x1=x/1000;x2=x%1000/100;x3=x%100/10; x4=x%10; write_lcdcom(0xc4); write_lcddate(number+0x30); write_lcdcom(0xca); if(flag=1) write_lcddate(-); else write_lcddate( ); write_lcdcom(add); write_lcddate(x1+0x30);/write_lcddate(x1+0x30);/0x30是0的ascii码 write_lcddate(x2+0x30)

33、;write_lcddate(x3+0x30);/0x30是0的ascii码 write_lcddate(.);write_lcddate(x4+0x30);write_lcddate( ); write_lcddate(C);void lcd_set(char max,char min)uchar x1,x2,x3,x4; uchar flag_max,flag_min; if(max0)flag_max=1; max=-max; else flag_max=0; if(min0)flag_min=1; min=-min; else flag_min=0; x1=max/10;x2=max%10;x3=min/10; x4=min%10; write_lcdcom(0xc4); if(flag_max=1) write_lcddate(-); write_lcddate(x1+0x30); write_lcddate(x2+0x30); write_lcdcom(0xD0); if(flag_min=1) write_lcddate(-); write_lcddate(x3+0x30); write_lcddate(x4+0x30);【精品文档】第 - 17 - 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁