首页 单片机数字温度计

单片机数字温度计

举报
开通vip

单片机数字温度计nullnull电子技术综合设计 数字温度计 刘全景 李瑞帅 李雪null*目录1.设计任务 2.设计方案 3.电路设计 4.程序设计 5.系统调试null*课题任务:基本要求:可测量温度范围:000.0℃-102.0℃,温度分辨力:0.4℃。测量相对误差:≤2%,用数码管实时显示被测量的温度。 提高要求:实现多个温度点的实时测量,实现温度的分档测量(102℃、51℃、25.5℃)。null方案一:采用热电偶温差电路测温,温度检测部分可以使用低温热电偶,热电偶由两个焊接在一起的...

单片机数字温度计
nullnull电子技术综合 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 数字温度计 刘全景 李瑞帅 李雪null*目录1.设计任务 2.设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 3.电路设计 4.程序设计 5.系统调试null*课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 任务:基本 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 :可测量温度范围:000.0℃-102.0℃,温度分辨力:0.4℃。测量相对误差:≤2%,用数码管实时显示被测量的温度。 提高要求:实现多个温度点的实时测量,实现温度的分档测量(102℃、51℃、25.5℃)。null方案一:采用热电偶温差电路测温,温度检测部分可以使用低温热电偶,热电偶由两个焊接在一起的异金属导线所组成。 热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考终点保持在抑制温度并测量该电压,便可推断出检测结点的温度,数据采集部分则由带有A/D通道的单片机,在将随被测温度变化的电压或者电流采集过来,进行A/D转换后,就可以用单片机进行数据处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作范围非常宽,且体积小,但是他们也存在着输出电压小,容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D转换电路,感温比较麻烦。  热电偶图设计方案方案二:由于本设计是测温电路,可以使用热敏电阻(图2)之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。热敏电阻方案三:考虑到用温度传感器 在单片机电路设计中,大多都使用传感器,所以这是非常容易想到的。 关于温度传感器温度计的两种方案。1:用AD590设计的电子数字温度计(用AD590和电子元件的组合)2:用DS18B20给予单片机AT89C51设计的单片机温度计。 AD590DS18B20总的来说DS18B20的优点都是在弥补AD590的缺点的。 综上,选择方案三中使用DS18B20方案。 null电路设计null(1)电源电路由于该系统需要稳定的5 V 电源, 因此设计时必须采用能满足电压、电流和稳定性要求的电源。该电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端3 个引脚,其内部设有过流保护、过热保护及调整管安全保护电路,由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。 (2)晶振电路晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。(3)复位电路为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。(4)温度传感器与 单片机的连接温度传感器的单总线(1-Wire)与单片机的P2.0 连接,P2.0是单片机的高位地址线A8。P2 端口是一个带内部上拉电阻的8 位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻, 某一引脚被外部信号拉低时会输出一个电流。 null程序设计null#include #include #define uint unsigned int #define uchar unsigned char uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x58,0x00}; /* 0 1 2 3 4 5 6 7 8 9 C 无*/ //-sbit KCHN=P3^0; //切换显示路数//-- sbit SEG1=P2^2; //段码位1 sbit SEG2=P2^3; sbit SEG3=P2^4; sbit SEG4=P2^5; sbit SEG5=P2^0; sbit SEG6=P2^1; //段码位6 sbit DQ1=P1^0; //传感器1 sbit DQ2=P1^1; sbit DQ3=P1^2; sbit DQ4=P1^3; //传感器4 uchar disbuf[4]; //显示缓冲温度显示用 uchar DQ_CHN; //DQ通道 uchar DQ1_SET[2]; uchar DQ2_SET[2]; uchar DQ3_SET[2]; uchar DQ4_SET[2]; 程序如下uchar ab; uchar disbuf[4]; //显示缓冲温度显示用 uchar mode; // 0正常巡检模式 1设置模式 2设置模式 uchar updown; uchar Temp; //温度 uchar count; int temp1; bit flag,kset_flag,kup_flag,kdown_flag; void delayms(uint z) //延时N ms {uint x,y; for(x=z;x>0;x--) for(y=120;y>0;y--);} /*延迟函数,x=1大约延迟1ms*/ void delay(uint x) {uint i,j; nullfor(i=0;i>=1;}delay_us(4); } case 2:{ for(i=0;i<8;i++) { DQ2=0; DQ2=dat&0x01; delay_us(5); DQ2=1; dat>>=1; } delay_us(4); } case 3:{ for(i=0;i<8;i++) { DQ3=0; DQ3=dat&0x01; delay_us(5); DQ3=1; dat>>=1;} delay_us(4);} case 4: { for(i=0;i<8;i++) {DQ4=0;nullDQ4=dat&0x01; delay_us(5); DQ4=1; dat>>=1; } delay_us(4); } default : break; } } /***读函数,每次返回16位的温度值*/ uint read() { uchar i=0; uchar dat = 0; switch(DQ_CHN) { case 0: break; case 1: { for (i=8;i>0;i--) { DQ1 = 0; // 给脉冲信号 dat>>=1; DQ1 = 1; // 给脉冲信号 if(DQ1) dat|=0x80; delay_us(4);} return(dat); break;} case 2:{ for (i=8;i>0;i--) {DQ2 = 0; // 给脉冲信号 dat>>=1; DQ2 = 1; // 给脉冲信号 if(DQ2) dat|=0x80; delay_us(4);} return(dat); break;} case 3: { for (i=8;i>0;i--) {DQ3 = 0; // 给脉冲信号 dat>>=1; DQ3 = 1; // 给脉冲信号 if(DQ3) dat|=0x80; delay_us(4); } return(dat); break;} case 4: { for (i=8;i>0;i--) {DQ4 = 0; // 给脉冲信号 dat>>=1; DQ4 = 1; // 给脉冲信号 if(DQ4) dat|=0x80; delay_us(4);} null return(dat); break;} default : break; } } /*读取温度函数,返回温度的绝对值, 并标注flag,flag=1表示负,flag=0表示正*/ uint readtemperature() {uchar a=0; uchar b=0; uint t=0; float tt=0; init1820(); if(!ab) { write(0xCC); // 跳过读序号列号的操作 write(0x44); // 启动温度转换 init1820(); if(!ab) {write(0xCC); //跳过读序号列号的操作 write(0xBE); //读取温度寄存器等( 共可读9个寄存器) 前两个就是温度 a=read(); b=read(); if(a==0xff) flag=1; else flag=0; t=b; t<<=8; t=t|a;tt=t*0.0625;//转换为实际温度值 t=(tt*100); //四舍5入为整数 return(t); } } } void deal() { temp1=readtemperature(); disbuf[0]=(temp1%10000)/1000; //9千 disbuf[1]=(temp1%1000)/100; //9百 disbuf[2]=((temp1%100/10)*4)%10; //xiaoshu disbuf[3]=temp1/10000; //万 Temp=(uchar)(temp1/100); } void disp_temp(void) { P0=tab[disbuf[3]]; SEG1=0; delay_us(300); SEG1=1; P0=tab[disbuf[0]]; SEG2=0; delay_us(300); SEG2=1; P0=(tab[disbuf[1]]+0x80); //小数点nullSEG3=0; delay_us(300); SEG3=1; P0=tab[disbuf[2]]; SEG4=0; delay_us(300); SEG4=1; P0=tab[0]; SEG5=0; delay_us(300); SEG5=1; P0=tab[DQ_CHN]; //显示通道 SEG6=0; delay_us(300); SEG6=1; } //--------- void dealset() {mode++; if(mode==3) mode=0;} void KEY_SCAN(void) //键盘扫描 {if(KCHN==0) {delayms(100); DQ_CHN++;if(DQ_CHN>4){DQ_CHN=1;}while(!KCHN){;}//等待按键释放} // 通道切换}void init() //定时器初始化 {TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; //开中断 ET0=1; // TR0=0; //} void main() {uint dis;init(); DQ_CHN=0x01; readtemperature(); //初始化DQ1 DQ_CHN=0x02; readtemperature(); //初始化DQ2 DQ_CHN=0x03; readtemperature(); //初始化DQ3 DQ_CHN=0x04; readtemperature(); //初始化DQ4 delayms(1000); //延时1s deal(); //读温度 DQ_CHN=0x01; //开机通道1 while(1) { if(mode==0) {deal(); //读温度 for(dis=0;dis<50;dis++) //显示一段时间 {KEY_SCAN();disp_temp();}}}}null系统调试 1.硬件调试 硬件的调试主要体现在温度传感器采集得到的温度经过放大器转化为温度—电压信号,只有选择好输出电压与温度的变化关系才能保证温度与电压成线形关系.实验时需注意反复调试,确定输出电压随温度变化为1V/K效果最佳,而且可以使得测量精度为正负0.4摄氏度,符合精度要求。为了排除干扰,需使得引线尽量短,减少交叉,对温度传感器进行保护等其他的措施来消除某些引脚上的”毛刺”及外界的干扰。而且,由于本实验可以实现多路显示数字温度,因此焊接时也要注意各温度传感器的引脚链接,避免各温度传感器之间的互相干扰。 2.软件仿真3.测试方案与系统调试 本系统的软件部分,全部采用C语言编写,可能会存在一些语法错误和逻辑错误,通过直接下载到单片机来具体调试。我们将采用自下到上的调试方法,即先单独调试好每一项功能,然后再连接成一个完整的系统调试.这样便可以保证软件编写的正确性和可行性。 (1)软硬综合调试 调试整个系统时,把软件编出的每一项功能结合相应的硬件进行调试.这样保证在综合调试的时候,顺利查找错误,具体分析解决. (2)数据指标测试 测试仪器:水银温度计,数字万用表等 (3)测试方法 用数字万用表系统前端部分归一化输出测试点,得到温度和电压成线性关系.使系统运转,采用同温度计捆绑同时测量水温变化情况,得出系统 null五、主要参考资料 [1]机械工业出版社 电子技术综合设计教程(国家级规化教材) [2] 夏继强. 单片机应用设计 培训 焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载 教程——实践篇[M]. 北京:北京航 空航天大学出版社, 2008. [3] 何立明. MCS-51单片机应用系统设计(系统配置与接口技术)[M]. 北京:北京航空航天大学出版社, 2003. [4] 李广弟, 朱月秀, 王秀山. 单片机基础[M]. 北京:北京航空航天大学出版社, 2001.7. [5] 康华光. 电子技术基础(模拟部分)(第五版)[M]. 武汉:华中科技大学出版社, 2007. [6]张毅坤. 单片微型计算机原理及应用:西安电子科技大学出版社,2008. [7].《模拟集成电路原理与实用电路》,邮电出版社; [8].《模拟集成电路应用》,西北工大出版社; [9].《电子技术综合应用》,电子科大出版社; [10].《传感器原理及应用》,天津大学出版社; null心得体会 作为一名电气的大三学生,我们觉得做单片机课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,感触最深的当属查阅大量的设计资料了。为了让我们的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。 其次,在这次课程设计中,我们运用了所学的专业课知识,如:C语言、模拟和数字电路知识等,我们自学了proteus仿真。在学习的过程中带着问题去学我们发现效率很高,这是 我们做这次课程设计的又一收获。 最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。 在这次的课程设计中,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。nullYou are more than welcomed to contact me!
本文档为【单片机数字温度计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_780683
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2013-01-17
浏览量:134