版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子技术综合设计选题名称:数字温度计的设计组 员:周梁 学号:09114043 向宇 学号:09113839 张鹏 学号:02110545班 级:孙越崎学院11级1班指导老师:许燕青成 绩: 课题名称:数字温度计一、设计内容及性能指标测量环境温度,采用接触式温度传感器测量,用数码管显示温度值 利用温度传感器(DS18B20)测量某一点环境温度 测量范围为0101,精度为±0.4 用数码显示屏进行实际温度值显示 能够根据需要方便设定上下限报警温度二、方案设计梗概(一)方案选择由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在
2、将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度
3、。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外AT89S51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可
4、以根据需要设定上下限报警温度。工作原理框图如下: (二)系统框图该系统可分为以下七个模块:1、控制器:采用单片机AT89S51对采集的温度数据进行处理;2、温度采集:采用DS18B20直接向控制器传输12位二进制数据;3、温度显示:采用了lcd显示屏显示实际温度值;4、门限设置:主要实现模式切换及上下门限温度的调节;5、报警装置:采用发光二极管进行报警,低于低门限或高于高门限均使其发光;6、复位电路:对整个系统进行复位;7、时钟振荡模块:为整个系统提供统一的时钟周期。 (三)系统程序设计系统程序的设计主要包括C程序主函数,DS18B20复位函数,DS18B20
5、写字节函数,DS18B20读字节函数,温度计算转换函数和显示函数等。具体程序将在实验中编译调试。三、实验具体设计(1) 主控模块:STC89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见下图。而且EA需要接高电平以使CPU访问单片机内部程序。 电路图如图所示:(2) 温度传感器电路:VCC接高电平,DQ端接单片机的P2.4口,单片机从DS18B20读取温度和报警温度,此时作为输入口,当设置报警温度时单片机向DS18B20内部存储器写入数据,此时作为数
6、据输出端口。DQ与VCC之间需要一个电阻值约为5K的上拉电阻。 电路图如图所示:(3) 报警与控制电路:报警电路中使用P1.0-P1.3作为控制按键输入端口,P1.0和P1.1对应的按键作为最高温度的上升和下降设置,P1.2和P1.3对应的按键作为最低温度的上升和下降设置。P2.3作为报警指示灯端口,当指示灯对应的端口为高电平时就会报警。电路图如图所示:(4) 显示电路:在液晶显示电路的设计中选择具有单向输出数据功能的P0端口向液晶显示模块提供数据,P2.0、P2.1、P2.2口作为控制液晶显示模块的端口,在PO口上需要外加上拉电阻,才可以使液晶显示模块正常显示。上拉电阻我们用的是10K的排阻
7、,由于程序中没有涉及到RW,所以将RW端接地。电路图如图所示:最终设计图:程序设计方面程序设计分为四部分:分别为主程序,液晶显示子程序,温度检测程序,报警设置程序。(1) 主程序设计:主程序的作用是调用3个子程序,分别为温度测试及处理子程序,报警子程序,液晶显示子程序。主程序流程图如下图所示:(2) 温度检测子程序设计:DS18B20在单片机控制下分三个阶段:DS18B20 初始化、读DS18B20时序、写DS18B20时序。 其中读DS18B20时序(左)、写DS18B20时序(右)的流程图如下图所示:(3) 液晶显示子程序设计:液晶显示程序分为显示字符子程序和指定LCD位置写入子程序,液晶
8、显示程序的作用是向液晶显示送数,控制系统的显示部分 。LCD显示有两种:显示字符(左)和指定LCD位置显示(右)。程序流程图分别如下图: (4) 报警设置子程序设计:通过按键设置上限报警温度和下限报警温度,当实际温度超过设置温度范围时,进行报警。报警设置流程图如下:系统调试方面调试目的:使单片机程序C语言源代码能够正常运行。 当程序无错误时,如下图,就可以将程序下载到单片机进行实物调试。 调试的结果:经调试液晶显示的结果与预设相同,显示出了精确到十分位的实时温度。 系统功能方面系统能够通过DS18B20测量温度,并将实时温度显示到液晶屏,精确到十分位。且能动态响应,当温度改变时数码管温度示值能
9、立即改变,显示相应的温度值。 通过四个按键能分别设置测量温度的最高值和最低值,并且每次上升或下降0.4,达到要求。 当温度超过测温范围时,LED灯闪光,达到报警要求。 四、实验成果实物展示 五、实验小结经过一个月的电子综合设计,我们终于将数字温度计做好了,虽然我们的温度计功能简单,但我们还是花了好大的劲才将实物完完全全做好,这其中的酸甜苦辣值得我们回味。由于是初次尝试电子设计,起初我们没有任何头绪,不知道应该干啥,于是上网查了查关于数字温度计的设计报告,了解了DS18B20温度传感器的工作原理,以及关于温度计设计的总体硬件电路,然后就迫不及待的去整理元件清单,想去万虹桥电子市场买电子元器件,但
10、去了好几次每次都没买全回来,因为我们并没有自己事先设计好我们的温度计电路,只是根据网上找的几份资料综合一下就草率的定好了清单。不过所幸,期间过程挺快乐的。 设计电路的时候,我们打算用protues软件,我在网上找到教学视频,学会了软件的使用方法,最后终于画好了雏形,于是开始进行艰难的程序设计。刚开始我们打算用汇编的,因为单片机刚学完,学的就是汇编,上网找了几个程序,还好大部分还是能看懂的,不过找的几个都不完全符合要求,后来我们从视频里学会了使用Keil软件编写程序。根据网上找的几个程序编写,不懂得就看书,上网查,请教朋友。慢慢的感觉上来了,感觉程序变得越来越来简单了,电路跟着程序的改变也在改变
11、,起初我们用四位数码管来显示温度,后来发现LCD1602的显示更方便,更有效,再后来又加了按键控制温度上下限程序。就这样改来改去,最后程序正确,仿真成功。我们想着仿真成功,焊接要小心谨慎一定能做出来的。焊接时,起初也是没有经验,我们试过几次都没有成功,总结一下原因发现首先是元件的放置不合理,导致导线连接很乱,很难检查电路。在大概十四周的一个周末我们又花时间做了一下硬件方面的,尽管线路依然没有整理好,但欣喜的是实验结果出来了。但在交实验成果的前一周,可能是导线的某处连接出现了问题,介于时间问题,我们只能把一个不成功的作品提交上去。经过这次电子设计综合实验,我们真的学到了好多书本之外的知识,以及动
12、手实践的能力,这是以后必须培养的,还有大家在一起学习的团结协作能力。关于单片机的使用应用方面有了更深的认识,虽然现在技术科技在发展,我们有更先进的生产技术,但有些基础的一定要扎实掌握。这次经历很深刻,让人进步,受益良多。六、附录程序及元器件清单C语言:#include<reg52.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit leden=P22;sbit ledrs=P20;sbit ds=P24;sbit key1=P10;/按一下,温度上限加1sbit key2
13、=P11; /按一下,温度上限减1sbit key3=P12; /按一下,温度下限加1sbit key4=P13; /按一下,温度下限减1sbit led0=P23;uint temp;float f_temp; uchar TFLAG;uint num=520; /温度上限uint num2=255; /温度下限unsigned char disdata4;void delay(uint z) /延时uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void delayms(uint xms) /延时 uint i,j; for(i=xms;i&
14、gt;0;i-) for(j=10;j>0;j-);void write_com(uchar com) /lcd1602写指令ledrs=0;P0=com;delay(5);leden=1;delay(5);leden=0;void write_date(uchar date) /lcd1602写数据ledrs=1;P0=date;delay(5);leden=1;delay(5);leden=0;void init() /lcd1602初始化leden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);v
15、oid dsreset(void) /ds18b20初始化uint i;ds=0;i=103;while(i>0)i-;ds=1;i=4;while(i>0)i-;bit tempreadbit(void) /ds18b20读字节uint i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i>0)i-;return(dat);uchar tempread(void) /ds18b20读字uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tempreadbit();dat=(j<<7)|(da
16、t>>1);return(dat);void tempwritebyte(uchar dat) /ds18b20写字uint i;uchar j;bit testb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i>0)i-; elseds=0;i=8;while(i>0)i-;ds=1;i+;i+;void tempchange(void) dsreset();delay(1);tempwritebyte(0xcc);tempwrite
17、byte(0x44); /ds18b20温度转换指令uint get_temp() /ds18b20温度转换uchar a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread();b=tempread();temp=b;temp<<=8;temp=temp|a;if(temp<0x0800)f_temp=temp*0.0625;TFLAG=0;elsef_temp=(temp)+1;f_temp=f_temp*0.0625;TFLAG=1;temp=f_temp*10;return t
18、emp;void warn() /闪烁报警led0=1;delay(100);led0=0;void deal(uint t) /数据处理if(t>num)|(t<num2)warn();elseled0=0;void keyscan() /按键扫描if(key1=0)delayms(1);if(key1=0)num=num+4;while(!key1);if(key2=0)delayms(1);if(key2=0)num=num-4;while(!key2);if(key3=0)delayms(1);if(key3=0)num2=num2+4;while(!key3);if(ke
19、y4=0)delayms(1);if(key4=0)num2=num2-4;while(!key4);void display(uint j) /显示 uchar FLAGDAT; disdata0=j/1000+0x30; disdata1=j%1000/100+0x30; disdata2=j%100/10+0x30; disdata3=j%10+0x30; if(TFLAG=0) FLAGDAT=0x20; else FLAGDAT=0x2d; if(disdata0=0x30) disdata0=0x20; if(disdata1=0x30) disdata1=0x20; write_
20、com(0x80); write_date(num/100+0x30); /温度上限第一位write_com(0x81);write_date(num%100/10+0x30); /温度上限第二位write_com(0x82);write_date(0x2e); /小数点write_com(0x83);write_date(num%10+0x30); /小数位write_com(0x84);write_date(0xdf);write_com(0x85);write_date(0x43); write_com(0x86);write_date(0x3e); /<write_com(0x8
21、7);write_date(0x54); /twrite_com(0x88);write_date(0x3e);/<write_com(0x89);write_date(num2/100+0x30); /温度下限第一位write_com(0x8a);write_date(num2%100/10+0x30);/温度下限第二位write_com(0x8b);write_date(0x2e);write_com(0x8c);write_date(num2%10+0x30);write_com(0x8d);write_date(0xdf);write_com(0x8e);write_date(0x43);write_com(0x40+0x80); write_date(0x54);/Twrite_com(0x40+0x81); write_date(0x45);/Ewrite_com(0x40+0x82); write_date(0x4d);/Mwrite_c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文主题教学计划例文
- 生产工作计划集锦
- 实验学校2025工作计划
- 八年级上册生物教学计划例文
- 有关暑期计划书
- 医院医生工作计划文档
- 放学期小学美术教研组工作计划范文
- 《多熟种植》课件
- 《型玻璃完美版》课件
- 航次租船合同的权利义务
- (T8联考)2025届高三部分重点中学12月联合测评语文试卷(含答案解析)
- 2024年考研(英语一)真题及参考答案
- 2023年军队文职统一考试(公共科目)试卷(含解析)
- 2024年大学生军事理论知识竞赛题库及答案(共110道题)
- 仓库负责人年终总结
- 地质灾害治理施工组织设计方案
- 安装工程计量与计价课件:安装工程定额计价体系
- 心肺复苏术课件2024新版
- 中国校服产业挑战与机遇分析报告 2024
- 辽宁省大连市2023-2024学年高三上学期双基测试(期末考试) 地理 含答案
- 2024年4s店提前还款协议书模板
评论
0/150
提交评论