单片机课程设计方案数字温度计.docx
- 文档编号:28396416
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:37
- 大小:264.93KB
单片机课程设计方案数字温度计.docx
《单片机课程设计方案数字温度计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计方案数字温度计.docx(37页珍藏版)》请在冰豆网上搜索。
单片机课程设计方案数字温度计
前言
单片机技术作为计算机技术的一个分支,广泛地应用于工业控制,智能仪器仪表,机电一体化产品,家用电器等各个领域。
“单片机原理与应用”在工科院校各专业中已作为一门重要的技术基础课而普遍开设。
学生在课程设计,毕业设计,科研工程中会广泛应用到单片机知识,而且,进入社会后也会广泛接触到单片机的工程工程。
鉴于此,提高“单片机原理及应用”课的教案效果,让学生参与课程设计实习甚为重要。
单片机应用技术涉及的内容十分广泛,如何使学生在有限的时间内掌握单片机应用的基本原理及方法,是一个很有价值的教案工程。
为此,我们进行了“单片机的学习与应用”方面的课程设计,锻炼学生的动脑动手以及协作能力。
单片机课程设计是针对模拟电子技术,数字逻辑电路,电路,单片机的原理及应用课程的要求,对我们进行综合性实践训练的实践学习环节,它包括选择课设任务、软件设计,硬件设计,调试和编写课设报告等实践内容。
通过此次课程设计实现以下三个目标:
第一,让学生初步掌握单片机课程的实验、设计方法,即学生根据设计要求和性能约束,查阅文献资料,收集、分析类似的相关题目,并通过元器件的组装调试等实践环节,使最终硬件电路达到题目要求的性能指标;第二,课程设计为后续的毕业设计打好基础,毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。
第三,培养学生勤于思考乐于动手的习惯,同时通过设计并制作单片机类产品,使学生能够自己不断地学习接受新知识<如在本课设题目中存在智能测温器件DS18B20,就是课堂环节中不曾提及的“新器件”),通过多人的合作解决现实中存在的问题,从而不断地增强学生在该方面的自信心及兴趣,也提高了学生的动手能力,对学生以后步入社会参加工作打下一定良好的实践基础。
摘要:
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同种类的传感器,可实现诸如电压、湿度、温度、速度、硬度、压力等的物理量的测量。
本文将介绍一种基于单片机控制理论及其应用系统设计的数字温度计。
本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机喜爱的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也进行一一介绍,该系统可以方便的是实现温度采集和显示,并可以根据需要任意设定上下限报警温度,它使用起来方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合我们日常生活和工农业生产中的温度测量,也可以当做温度处理模块嵌入其他系统中,作为其他主系统的辅助扩展。
DS18B20和AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合与恶劣环境下进行现场温度测量,有广泛的应用前景。
本设计首先是确定目标,气候是各个功能模块的设计,再在Proteus软件上进行仿真,修改,仿真。
本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
关键词:
单片机,数字控制,温度计,DS18B20,AT89C51
目录
前言…………………………………………………………………………………………1
摘要…………………………………………………………………………………………3
关键字………………………………………………………………………………………3
一.单片机简介………………………………………………………………………………5
1.1单片机的应用…………………………………………………………………………5
1.2单片机的开发过程……………………………………………………………………6
二、设计方案…………………………………………………………………………………6
2.1设计任务和要求………………………………………………………………………6
2.2方案辩证………………………………………………………………………………7
1温度计软件设计流程图………………………………………………………………7
2元器件的选取…………………………………………………………………………7
3系统最终设计方案……………………………………………………………………8
三、设计方案的总体设计框图……………………………………………………………8
3.1硬件电路框图…………………………………………………………………………8
3.2硬件电路概述…………………………………………………………………………9
3.3主控电路………………………………………………………………………………9
3.4显示电路………………………………………………………………………………10
3.5报警温度调节电路……………………………………………………………………10
3.6温度传感器及DS18B20测温原理…………………………………………………11
四、系统软件算法设计………………………………………………………………15
4.1主程序…………………………………………………………………………………15
4.2读出温度子程序………………………………………………………………………16
4.3温度转换命令子程序…………………………………………………………………17
4.4计算温度子程序………………………………………………………………………17
4.5显示数据刷新子程序…………………………………………………………………17
4.61602的液晶显示……………………………………………………………………18
五、软件仿真………………………………………………………………………………18
5.1系统仿真设计…………………………………………………………………………18
5.2系统原理图……………………………………………………………………………19
结与体会……………………………………………………………………………………20
附录……………………………………………………………………………………………21
参考文献………………………………………………………………………………………29
二、设计方案
2.1设计务任和要求
1、基本范围-20℃——125℃
2、精度误差小于0.5℃
3、LED数码直读显示
4、可以任意设定温度的上下限报警功能.
2.2方案辩证
1温度计软件设计流程图:
2元器件的选取:
单片机芯片的选取:
方案一.
采用89C51芯片作为硬件核心,利用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:
采用AT89C51单片机与MCS-51系列单片机相比有两大优势:
第一,片内程序存储器采用闪存,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小,且管脚数目为20个,与MCS-51相比减少一倍,使理解更容易。
综上所述:
本课设中单片机芯片采用AT89C51。
温度传感器的选取:
方案一:
采用热敏电阻传感器。
利用热敏电阻随温度变化而显著变化,能直接将温度的变化转换为能量的变化,进而制成温度计。
但是其测温传感器比较复杂,而且不易通过编制程序来控制测温精度,增大系统设计的难度。
方案二:
采用DS18B20温度传感器。
DS18B20的内部3脚<或8脚)封装;使用特有的温度测量技术,将被测温度转换成数值信号;3.0~5.5V的电源供电方式和寄生电源供电方式;ROM由64位二进制数字组成,共分为8个字节;RAM由9个字节的高速暂存器和非易失性电擦写ROM组成。
综上所述:
温度传感器选取智能测温器件DS18B20。
本设计显示电路采用1602液晶显示模块芯片。
3系统最终设计方案:
综上各方案所述,对此次课设的方案选定:
采用AT89C51作为主控制系统。
1602液晶显示模块芯片作为温度数据显示装置。
而智能温度传感器DS18B20器件作为测温电路主要组成部分。
至此,系统最终方案确定。
三、设计方案的总体设计框图
温度计电路设计总体设计方框图如图所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用1602液晶显示屏以串口传送数据实现温度显示。
3.1硬件电路框图:
图 总体设计方框图
3.2硬件电路概述:
系统由单片机最小系统、显示电路、按键、温度传感器等组成。
本电路是由AT89C2051单片机为控制核心,具有与MCS-51系列单片机完全兼容,程序加密等功能,带2KB字节可编程闪存,工作电压范围为2.7~6V,全静态工作频率为0~24MHZ;显示电路由1602液晶显示模块芯片,可以进行多行显示;温度报警按键设为五个,可以显示华氏温度,调节高低报警温度;温度传感器电路主要由DS18B20测温器件构成,该器件主要功能有:
采用单总线技术;每只DS18B20具有一个独立的不可修改的64位序列号;低压供电,电源范围为3~5V;测温范围为-20℃~+125℃,误差为±0.5℃;复位电路是10K电阻构成的上电自动复位。
3.3主控电路
单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
晶振采用12MHZ。
复位电路采用上电加自动复位。
主控芯片AT89C51
晶振电路
复位电路
3.4显示电路
本设计显示电路采用1602液晶显示模块芯片,该芯片可现实16x2个字符,比以前的七段数码管LED显示器在显示字符的数量上要多得多。
另外,由于1602芯片编程比较简单,界面直观,因此更加易于使用者的操作和观测。
1602A芯片的接口信号说明如下表:
1602A芯片的接口信号说明
图液晶显示电路
3.5报警温度调节电路
本系统一共设置了五个按键,k1键只是显示华氏温度,k4键按下不松开显示高低报警温度,松开后恢复显示正常温度,k2键和k3键是分别用来调节高低报警温度,k键控制调节时的上调或下调。
具体调节如将高温报警温度调高,第一步将k4键按下不松,k键升起位置,调节k2键,则高温报警温度向上增加,反之亦然。
低温报警同理。
图报警点调节电路
3.6温度传感器及DS18B20测温原理
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。
DS18B20的性能特点如下:
<1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
<2)DS18B20支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点组网测温;
<3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;
<4)可通过数据线供电,电压范围为3.0-5.5V;
<5)零待机功耗;
<6)温度以9或12位数字,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
<7)用户可定义报警设置;
<8)报警搜索命令识别并标志超过程序限定温度<温度报警条件)的器件;
<9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
<10)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部结构框图如图及测温原理图如下所示:
图引脚排列
图内部结构框图
图DS18B20测温原理图
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图4所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图5所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
TM
R1
R0
1
1
1
1
1
图5DS18B20的字节定义
DS18B20的分辨率定义如表1所示
表1分辨率设置表
R0
R1
分辨率
最大温度转移时间
0
0
9位
96.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
主机控制DS18B20完成温度转换过程是:
每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令,然后发送RAM指令,这样才能对DS18B20进行预订的读写操作。
表2ROM指令集
指令
约定代码
功能
读ROM
33H
读DS18B20中的编码
符合ROM
55H
发出此命令后,接着发出64位ROM编码,访问单线总线上与该编辑相对应的DS18B20使之做出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址,为操作各器件作准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发送温度变换指令
告警搜索命令
0ECH
执行后,只有温度跳过设定值上限或下限的片子才能做出反应
表3RAM指令集
指令
约定代码
功能
温度转换
44H
启动DS18B20进行温度转换
读暂存器
0BEH
读暂存器9个字节内容
写暂存器
4EH
将数据写入暂存器的TH、TL字节
复制暂存器
48H
把暂存器的TH、TL字节写到E2RAM中
重调E2RAM
0B8H
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读供电方式
0B4H
启动DS18B20发送电源供电方式的信号给主CPU
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
测温电路
四、系统软件算法设计
整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。
所以软件的功能大致可分为两个部分:
一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
4.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图所示。
图主程序流程图图读温度流程图
4.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图示
图温度转换流程图
4.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图9所示
4.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图所示。
图 计算温度流程图 图 显示数据刷新流程图
4.5显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图。
4.61602的液晶显示
1602液晶显示流程图:
五、软件仿真
5.1系统仿真设计
本设计是在Proteus环境下进行仿真的,仿真所用到的器件有:
单片机AT89C51,DS1820温度传感器,蜂鸣器,液晶显示器,一些电阻,电容等。
仿真结果如下:
显示器显示传感器温度
高低报警温度
高温报警低温报警
报警时的led灯提示
5.2系统原理图
六、总结与体会
经过将近三周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。
从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。
但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。
而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
附录:
//******************************************************
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^3。
sbitRS=P2^0。
sbitRW=P2^1。
sbitEN=P2^2。
sbitk=P1^0。
sbitk1=P1^4。
sbitk2=P1^5。
sbitk3=P1^6。
sbitk4=P1^7。
sbitled_red=P2^5。
sbitled_blue=P2^6。
sbitBEEP=P3^7。
ucharbz=1。
//BEEP=0。
ucharng=0。
//fuhaobiaoshiwei
ucharTempBuffer[]={"TEMP:
"}。
inttemp_value。
//温度值
ucharcodedis_title[]={"--currenttemp--"}。
voidxianshi_huashi(>。
uchargw=40。
chardw=10。
ucharxianshi_title[]={"TEMPALARM"}。
ucharxianshi_baojing[]={"HI:
LO:
"}。
//34510``12
//----------------延时--------------------------------
voiddelayxus(uintx>
{
uchari。
while(x-->for(i=0。
i<200。
i++>。
}
//*********************LCD控制********************
//读lcd状态
ucharread_lcd_state(>
{
ucharstate。
RS=0。
RW=1。
EN=1。
delayxus(1>。
state=P0。
EN=0。
delayxus(1>。
returnstate。
}
//忙等待
voidlcd_busy_wait(>
{
while((read_lcd_state(>&0x80>==0x80>。
delayxus(5>。
}
//向LCD写数据
voidwrite_lcd_data(uchardat>
{
lcd_busy_wait(>。
RS=1。
RW=0。
EN=0。
P0=dat。
EN=1。
delayxus(1>。
EN=0。
}
//向LCD写指令
voidwrite_lcd_cmd(ucharcmd>
{lcd_busy_wait(>。
RS=0。
RW=0。
EN=0。
P0=c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 方案 数字 温度计
![提示](https://static.bdocx.com/images/bang_tan.gif)