单片机数字温度计的设计课程设计.docx
- 文档编号:1803436
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:156KB
单片机数字温度计的设计课程设计.docx
《单片机数字温度计的设计课程设计.docx》由会员分享,可在线阅读,更多相关《单片机数字温度计的设计课程设计.docx(16页珍藏版)》请在冰点文库上搜索。
单片机数字温度计的设计课程设计
单片机原理及应用
课程设计论文
2009届自动化专业0906***班级
题目数字温度计的设计
姓名***学号***
指导教师
二О一二年六月二日
一、
数字温度计的基本原理
数字温度计工作的基本原理是:
采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值
数字温度计根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。
二、设计方案
本设计以检测温度并显示温度提供上下限报警为目的,按照系统设计功能的要求,确定系统由4个模块组成:
主控器、测温电路,报警电路,显示电路。
系统以为传感器用以将温度模拟量转化为电压数字量以总线传入单片机,以AT89C51为主芯片,在主芯片对DS18B20传入的温度值进行处理,由单片机程序控制,将经处理后的温度由LED显示器显示出来。
LED温度显示电路
AT89C51
单片机
DS18B20
测温电路
上下线报警电路
电源、时钟复位电路
测温电路的总体系统框图
三、硬件设计
温度检测
每次测温由单片机向测温传感器发出特定脉冲,测温传感器能够检测到脉冲并做相应的工作。
传感器将模拟温度信号经过采集,数字处理,放大后输出。
DS18B20使用一个单线接口发送或接受信息,因此在单片机和DS18B20之间只需要有一个模数转换电路,把传感器采集到的模拟信号转化为数字信号传递给单片机,用于读写和温度转换的电源可以从数据线获得,无需外接电源。
数字信号的处理及温度显示
送入单片机内部的数字信号经过单片机的处理,将数据用LED显示屏显示出来。
其处理过程主要由单片机能存储的程序进行控制。
报警功能
在单片机程序内设置了报警温度的上下限值,当所测得的温度超过了这一数值,将会由蜂鸣器发出报警。
报警功能是本系统的重要功能之一,在工业应用中常常需要在特定的温度条件下进行报警,当温度超出范围时及时的报警是十分必要的。
AT89C51简介
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。
所以,我们选用51系列单片机AT89C51。
AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4KB的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚,并集成了Flash程序存储器,既可在线编程(ISP),也可用传统方法进行编程,因此,低价位AT89C51单片机可应用于许多高性价比的场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。
单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
AT89C51的主要特性如下:
①与MCS-51兼容;
②4K字节可编程闪烁存储器;
③三级程序存储器锁定;
④128×8位内部RAM;
⑤32根可编程I/O线;
⑥两个16位定时器/计数器;
⑦5个中断源;
⑧可编程串行通道;
⑨片内振荡器和时钟电路。
DS18B20简介
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
具有3引脚TO-92小体积封装形式,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
其工作电源既可在远端引入,也可采用寄生电源方式产生。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
DS18B20支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
根据本设计的要求,根据多次比较和选择,决定采用DS18B20温度传感器。
显示电路设计
发光二极管是半导体二极管的一种,可以把电能转化成光能,常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
发光二极管的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。
发光二极管的特点是:
工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。
把它的管心做成条状,用7条条状的发光管组成7段式半导体数码管,每个数码管可显示0~9十个数字。
时钟电路的设计
本电路选石英晶振作为时钟组件,接至AT89C51的XTAL1,XTAL2引脚组成时钟电路。
石英晶片所以能做振荡电路(谐振)是基于它的压电效应,从物理学中知道,若在晶片的两个极板间加一电场,会使晶体产生机械变形;反之,若在极板间施加机械力,又会在相应的方向上产生电场,这种现象称为压电效应。
如在极板间所加的是交变电压,就会产生机械变形振动,同时机械变形振动又会产生交变电场。
一般来说,这种机械振动的振幅是比较小的,其振动频率则是很稳定的。
石英晶体振荡器是利用石英晶体的压电效应来起振,振荡器直接应用于电路中。
蜂鸣器电路的设计
目前,在许多情况下需要对环境的温度进行限定,随着人民生活的改善和工业的发展,安全问题变的就更加的重要。
环境温度一旦超过限定值,势必会对所处环境的人或设备造成影响,更甚者将会给个人和社会造成巨大的损失和社会影响。
因此,在某些特定环境内安装温度报警器进行监控也成为一种必然的需要。
设计要求到上下限温度限制时有声音提醒信号产生,可选择一只蜂鸣器来实现这一功能。
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作发声器件。
电压式蜂鸣器(HA)工作时约需10mA的驱动电流,并设计一个相应的驱动及控制电路。
数字温度计设计的原理图如下:
四、软件设计
编程语言选择:
51的编程语言常用的有两种,一种是汇编语言,一种是C语言。
汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,C语言很好的结构性和模块化更容易阅读和维护,用C编写程序比汇编更符合人们的思考习惯,开发者可以更专心的考虑算法而不是考虑一些细节问题这样就减少了开发和调试的时间,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
主程序的设计
主程序的主要功能是负责多点温度数据的实时采集、传输,处理和显示。
其程序流程图1所示。
图2读温度流程图
读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图2所示
温度转换命令字程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如下图,图3所示:
图3温度转换流程图图4温度计算流程图
计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4所示
温度采集模块设计
为本温度采集系统开发的软件程序,可以对DS18B20内部的寄存器编程控制DS18B20的工作方式,以及从这些数据寄存器读取温度值,最后把经过单片机数据处理后的温度送到LED上显示。
AT89C51扮演着上传下达的角色,单片机端的程序采用了C语言。
整个软件采用了模块化的程序设计方法。
为了实现AT89C51和DS18B20之间的串行通信,编写了一些专用子程序。
这些子程序段包括:
符号定义、AT89C51的端口初始化、启动信号时序产生、停止信号时序产生、发送字节、读取字节、读取温度、显示。
系统电路在上电后开始工作,最先程序单片机进行初始化设置,然后单片机利用模拟I2C总线对DS18B20进行寻址。
单片机在接收到DS18B20应答后,紧接着单片机利用命令(AAh、ACh、EEh、22h)将设置/状态寄存器的值通过I2C总线写入DS18B20状态寄存器,该系统中把DS18B20设置为连续温度转换工作方式,之后DS18B20在单片控制下进行温度测量,然后DS18B20把所采集的温度传输给单片机。
主程序:
#include
#include"DS18B20.H"
sbitbeep=P0^0;//蜂鸣器控制口
externunsignedintwendu;
unsignedintH=33,L=30;
voidmain(void)
{
unsignedinttemp;
unsignedchartemp_h,temp_l;
Delay(50000);
Lcd_Init();//12864初始化
Lcd_DisplayString(0,2,"温度检测");
Lcd_DisplayString(1,1,"温度:
");
while
(1)
{
temp=read_temp()*0.625;//读取温度
if(temp>H*10)//温度高于33摄氏度则报警//上下限报警判断
{
beep=0;
red_H=0;
}
elseif(temp { beep=0; green_L=0; } else//否则取消报警 { beep=1; green_L=1; red_H=1; } Lcd_WriteCmd(0x90+0x04);//把收到的温度信息显示在12864上 Lcd_WriteData(temp/1000+0x30); Lcd_WriteData(temp%1000/100+0x30); Lcd_WriteData(temp%100/10+0x30); Lcd_WriteData('.'); Lcd_WriteData(temp%10+0x30); Lcd_WriteData('C'); Delay(20000); } DS18B20测温子程序: voiddsreset(void)//发送DS18B20复位与初始化命令 { uinti; DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--; } bittmpreadbit(void)//读一位数据 { uinti; bitdat; DS=0;i++;//i++用于延时 DS=1;i++;i++; dat=DS; i=8;while(i>0)i--; return(dat); } uchartmpread(void)//读一字节数据 { uchari,j,dat; dat=0; for(i=1;i<=8;i++) { j=tmpreadbit(); dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好一个字节在 DAT里 } return(dat); } voidtmpwritebyte(uchardat)//写一字节到DS18B20 { uinti;ucharj; bittestb;for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb)//写1 { DS=0; i++;i++; DS=1; i=8;while(i>0)i--; } else { DS=0;//写0 i=8;while(i>0)i--;DS=1;i++;i++; } }} voidtmpchange(void)//DS18B20开始转换 { dsreset(); delay (1); tmpwritebyte(0xcc);//寻址总线上所有的驱动器 tmpwritebyte(0x44);//开始单个温度转化} uinttmp()//获取温度子程序 { floattt; uchara,b; dsreset(); delay (1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp<<=8;//两字节组成一个整型变量temp=temp|a;tt=temp*0.0625; temp=tt*10+0.5; returntemp; } voidreadrom()//读序列 { ucharsn1,sn2; dsreset(); delay (1); tmpwritebyte(0x33); sn1=tmpread(); sn2=tmpread(); } 五、结论: 数字温度计是一个用途非常广泛的电路,在很多地方都可以看到他们的身影,如: 工农业生产、科研、生活中。 本文采用AT89C51单片机做主控芯片,利用温度传感器DS18B20测量温度,并配上相应的外部接口电路,介绍了一款简易数字温度计的设计制作过程。 该温度计与系统实现简单、功能稳定、使用方便,适用于人们日常生活和工、农业生产中的各种温度测量。 参考文献: 1、程琤,单片机与应用系统开发 2、谭浩强,C程序设计 3、康华光,电子技术基础—模拟部分 4、康华光,电子技术基础—数字部分 5、宋文绪,传感器与检测技术 设计总结: 经过几天的不懈努力,终于完成了数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这是在我自己的努力下,经过老师和同学的帮助和在网上查找大量资料的情况下自己做出来的东西。 在指导老师和同学的帮助下,我确实学到了不少平时在课堂上所学不到的知识,这样的课程设计不论是对我们的理论知识还是实践能力都有很大的帮助,可以使我们能更快更准确的掌握专业方面的理论知识。 我感觉这次设计我们得到更多的是,对办任何事情我们都要先经过认真细致的观察和分析,才能确定我们到底该如何去做它,要不然,只会是事倍功半,耽误我们的办事效率。 我觉得这个方面的经验是最宝贵的,也是我们在毕业后,进入社会所必须的能力。 我们也只有具备了这个基本的能力后,才不至于在以后的生活,学习和工作中误入歧途,对自己和对他人造成不必要的损失。 通过这次课程设计,我收获颇多,我深切体会到了把知识转换为实践的快乐。 在这里真心对老师表示由衷的感谢,感谢老师一个学期以来对我们的谆谆教诲,让我收获颇多。 指导教师评语: 课程设计成绩: 指导教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 温度计 设计 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)