DS18B20温度测量.doc_第1页
DS18B20温度测量.doc_第2页
DS18B20温度测量.doc_第3页
DS18B20温度测量.doc_第4页
DS18B20温度测量.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学专业课程设计说明书课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: DS18B20温度测量 初始条件:1. 提供单片机实验箱;2. 使用伟福软件进行调试程序。3. 先修课程:模拟电子技术、数字电子技术、Protues电路设计教程及单片机原理及应用等课程 要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求) 1、课程设计时间:1周;2、要求:利用DAC0832输出正弦波信号(用示波器观察输出波形),初始频率为50Hz。3、技术要求:变频采用“”、“”键 控制,实时测量输出信号的频率值,并分析和实测输出信号的频率范围频率范围:0255Hz。信号类型:正弦波。信号幅值:05V。误差范围:THNY点亮二极管 TTLN液晶显示实时温度 图 5-1 程序流程图流程图说明,从流程图可以大体看出程序有两个部分构成。5.2 系统实现的功能 1)DS18B20四路测温;2) 告警;3)液晶显示;4)按键调整冷库工作温度范围; 下面对每一个小模块分别详述程序构成:DS18B20四路测温。设计中可以选用2种电路连接方式。第一种,多个ds18b20串接,然后通过一根数据线与单片机的一个I/O口相连;第二种,多个ds18b20分别于单片机的不同的I/O口相连。下面,首先对2中多点测温的设计进行比较。 第一种方案讨论。如图5-2。设计DS28B20是一个集成度很高的智能温度传感器,基于它的支持单总线协议和64为独特光刻ROM识别的特性,在工程应用领域一般设计是选择在一根数据线上接上多个DS18B20。在程序设计中,可以通过搜索ROM指令识别每一个挂在数据线上的DS18B20。在单独对每一个操作,从而完成多点测温的功能。另外,这种方式有一些弊端。每次操作都需要2次对64位序列号匹配过程。多个器件串接,完成全部的查询就需要与器件个数成倍增长的耗时。这样的应用对一些实时性要求很高的系统当中,是非常占用系统资源的(虽然省掉了端口资源,但CPU不得不等待N长时间后才能获取多点的的温度值)。第二种方案讨论。如图5-3。Ds18b20分别于多个I/O口相连,如将八个ds18b20直接与P1口相连。操作这8个ds18b20时,就直接操作P1口,相当于再操作一个ds18b20一样。它的耗时将与操作一个ds18b20一样。只是在程序设计上进行一些巧妙的改进即可。 图 5-2四个ds18b20串接图5-3 4个ds18b20并接与P1口1 告警2 设置冷库的工作范围是在TLTH就之间的。将4路测温进行平均取值,再与TH和TL比较。如果测得的温度高于温度上限,则开启制冷设备,小风扇。3 如果测得的温度低于温度下限,则开启发光二极管。4 液晶显示。此次设计中选用12864液晶进行显示。设计中共分为3个屏来显示。开启设备后,液晶显示欢迎界面,持续2s后,进入主界面,温度值显示状态。主界面显示内容有:四路的温度,平均温度,系统工作工作状态(正常,开启加热设备,开启制冷设备)。电路连接图见5-4。 图 5-4 12864电路连接图 按键控制。设计中通过5个独立按键完成温度上限和温度下限的调控。见图5-6。 图 5-6 按键控制模块6系统电路图6.1 资源分配表P1口作DS28B20的数据采集输入口P0口作12864显示的数据输入口P2.5P2.7分别作液晶的数据/地址选择端口,液晶读写端口,液晶使能端口P2.0 继电器控制端口P3.2 用来作发光二极管模拟显示加热装置端口;P3.7 温度上限设置P3.5:TH温度+;P3.6: TH温度;P3.4: 退出设置;P3.3: 温度下限设置7实际测量数据仿真记录7.1 仿真数据记录见下表7-1所示。环境温度(C)测量温度(C)平均误差 120.220.220.120.320.20 2 23.123.023.223.023.30.025 3 24.424.324.624.324.40 4 27.727.727.528.027.60 530.230.130.330.230.30.0257.2误差分析 温度在寄存器中为12位,分辨率为0.0625;测温范围:-55度+125度在数据处理中,采用四舍五余法保留了一位小数,通过5组的测量的数据,平均温度和实际温度误差几乎可以忽略。- 18 -武汉理工大学专业课程设计说明书8课程设计心得9参考文献1姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版社.20042 李群芳,张士军,黄建.单片微型计算机与接口技术(第2版).北京:电子工业出版 社.20053 徐维祥,刘旭敏.单片微型计算机原理及应用.大连:大连理工大学出版社.20064 李广弟等 单片机基础 北京航空航天出版社, 2001.7 5 楼然苗等 51 系列单片机设计实例 北京航空航天出版社, 2003.3 6 唐俊翟等 单片机原理与应用 冶金工业出版社, 2003.9 7 刘瑞新等 单片机原理及应用教程 机械工业出版社, 2003.7 8 吴国经等 单片机应用技术 中国电力出版社, 2004.1 10成绩评定表本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:DS18B20温度测量课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日附录1:源程序- 26 -/* file: 冷库温度测量与控制系统*/#include#include#define uint unsigned int#define uchar unsigned charvoid delayus(uint i);void delayms(uchar x);void write_com(uchar comr );void write_dat(uchar dat);void set_pos(uchar x,uchar y);void init_lcd();void init_1();void init_2();void init_ds18();uchar read_bit(void);void read_byte();void write_byte(uchar dat); void tempchange(void);void read_temp(void);void display(uint t);void welcom();void temp_set();void temp_control();#define DB P0 / 液晶数据端口#define DQ P1 / ds18b20数据采集端口sbit relay=P20; /继电器控制端口sbit light=P32; /利用发光二极管模拟显示加热装置端口sbit RS=P27; /液晶的数据/地址选择端口sbit RW=P26; /液晶读写端口sbit EN=P25; /液晶使能端口sbit s1=P37; /温度上限设置sbit s4=P36; /TH温度+sbit s5=P35; /TH温度sbit s2=P34; /退出设置sbit s3=P33; /温度下限设置uint m,y;uchar j,i,z=0;uchar x14,x24,n8,zf4,flag,g; /系统默认的最适宜的环境工作为温度uint k=0,0,0,0; /全局变量,便于函数之间的调用,存储四个端口的温度数据,按字节存储uint t=0,0,0,0,0,0,0,0; /中间变量,存储四个端口的数据int q4;float f4;char TH=30,TL=5;/*液晶开始界面的静态显示界面*/uchar code zeros=冷库工作温度设置;/16uchar code ones=最高温度: 度;/14uchar code twos=最低温度: 度;/14uchar code zero= A B ;/16uchar code one= C D ;/16uchar code two=冷库实温 ;/15uchar code heat= 开启加热设备 ;uchar code cool= 开启制冷设备 ;uchar code well= 冷库温度良好 ;void main()init_lcd();delayms(3);welcom();for(i=0;i0;i-)delayms(100);read_temp(); /运行该函数后,就得到了温度的实际值了 for(i=0;i0) y=m;write_com(0x8D); display(y); else y=abs(m); z=1; write_com(0x8D); display(y); temp_set(); temp_control(); /*延时10*i us*/void delayus(uint i)while(i-);/*延时1ms*/void delayms(uchar x)uchar m,n;for(m=x;m0;m-)for(n=110;n0;n-);/*对液晶操作的命令写入*/void write_com(uchar com)RS=0; RW=0; EN=0;DB=com;delayms(5);EN=1;delayms(5);EN=0;/*写显示数据函数*/void write_dat(uchar dat)RS=1; RW=0; EN=0;DB=dat;delayms(5);EN=1;delayms(5);EN=0;/*设定显示位置*/void set_pos(uchar x,uchar y)uchar pos;if(x=0) x=0x80;/第1排,显示8个汉字else if(x=1) x=0x90;/第2排,显示8个汉字 else if(x=2) x=0x88;/第3排,显示8个汉字 else if(x=3) x=0x98;/第4排,显示8个汉字 pos=x+y;write_com(pos);/*lcd初始化设定*/void init_lcd()write_com(0x30); delayms(5); /功能设定为8位输出数据write_com(0x0C); delayms(5); /显示开,关闭光标write_com(0x01); delayms(5); /清除显示内容/*液晶启动的欢迎界面*/void init_1() uchar i; set_pos(0,0); for(i=0;i16;i+) write_dat(zeroi); set_pos(1,0); for(i=0;i16;i+) write_dat(onei); set_pos(2,0); for(i=0;i16;i+) write_dat(twoi);/*主界面的静态显示界面*/void init_2()uchar i;set_pos(0,0); for(i=0;i16;i+) write_dat(zerosi);set_pos(1,0); for(i=0;i14;i+) write_dat(onesi);set_pos(2,0); for(i=0;i14;i+) write_dat(twosi);write_com(0x95); write_dat(TH/10+0);write_dat(TH%10+0);write_com(0x8D); write_dat(TL/10+0); write_dat(TL%10+0);/*操作DS18B20*/*初始化ds1820温度传感器*/ void init_ds18() DQ =0x00; /单片机将DQ拉低 delayus(100); /精确延时 大于 480us DQ=0xff; /拉高总线 delayus(60); /*读一位(DS18B20驱动)*/uchar read_bit(void) uchar i=0,j; uchar dat=0; DQ=0x00;j+;j+;j+;/仅仅用于延时 DQ =0XFF; / 给脉冲信号 i+;i+;i+; /仅仅用于延时 dat=DQ; /每个端口读取一位(bit)信号,一次读取四个端口的数据delayus(5); return(dat); /*读取ds18b20的一个字节数据*/void read_byte() uchar i,j,x; ucharh=0x01,0x02,0x04,0x08; /h数组就是用于选择4个ds18b20器件 for(i=0;i8;i+) /第一层循环完成一个字节的存储 j=read_bit(); for(x=0;x4;x+)/第二层循环是将4个ds18b20读取的一个字节的数据分别存储与k【】数组中 switch(hx) / 器件选择 case 0x01: kx=(j&hx)1);break;case 0x02: kx=(j&hx)1);break;case 0x04: kx=(j&hx)1);break;case 0x08: kx=(j&hx)1);break; void write_byte(uchar dat)/写一个字节(DS18B20驱动) uchar i=0,t; DQ=0x00; delayus(5); for (i=8; i0; i-) DQ = 0; t=dat&0x01;if(t) DQ=0xFF;else DQ=0x00; delayus(3); DQ=0XFF; dat=1; void tempchange(void)init_ds18();delayms(1);write_byte(0xCC);/ 跳过读序号列号的操作 write_byte(0x44);/ 启动温度转换/温度转换, void read_temp(void)/读取温度(DS18B20驱动) uchar i; init_ds18(); write_byte(0xCC); /跳过读序号列号的操作 write_byte(0xBE); /读取温度寄存器 read_byte(); /得到8个字节的数组k【8】 for(i=0;i4;i+) /低八位ti=ki; for(i=0;i4;i+)ki&=0x0000; read_byte(); /程序运行之后,k【】就得到新的赋值 for(i=0;i4;i+)ti=(ki0x0800) ti=(ti); ti=ti+1; zfi=1;else zfi=0; for(i=0;i4;i+) fi=ti*0.0625; ti=fi*10+0.5; if(zfi=1) qi=0-ti; else qi=ti;void display(uint t)write_dat(:); if(z=1) write_dat(-); z=0;write_dat(t/1000+0);write_dat(t%1000/100+0);write_dat(t%100/10+0);write_dat(.);write_dat(t%10+0); void welcom()uchar i;uchar code a0=冷库温度控制系统;uchar code a3=毛秋阳制作;write_com(0x90);for(i=0;i16;i+) write_dat(a0i);write_com(0x88);for(i=0;i=0)write_com(0x8D);write_dat(TL/10+0); write_dat(TL%10+0); write

温馨提示

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

评论

0/150

提交评论