单片机数字温度计课程设计分析方案Word下载.docx

上传人:b****5 文档编号:18743562 上传时间:2023-01-01 格式:DOCX 页数:29 大小:193.11KB
下载 相关 举报
单片机数字温度计课程设计分析方案Word下载.docx_第1页
第1页 / 共29页
单片机数字温度计课程设计分析方案Word下载.docx_第2页
第2页 / 共29页
单片机数字温度计课程设计分析方案Word下载.docx_第3页
第3页 / 共29页
单片机数字温度计课程设计分析方案Word下载.docx_第4页
第4页 / 共29页
单片机数字温度计课程设计分析方案Word下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

单片机数字温度计课程设计分析方案Word下载.docx

《单片机数字温度计课程设计分析方案Word下载.docx》由会员分享,可在线阅读,更多相关《单片机数字温度计课程设计分析方案Word下载.docx(29页珍藏版)》请在冰豆网上搜索。

单片机数字温度计课程设计分析方案Word下载.docx

4.进一步掌握keil和仿真软件的应用。

5.进一步熟悉集成电路的引脚安排.。

1.2设计指标

1.显示温度。

2.可以显示大于零度的温度也可以显示小于零度的温度。

3.具有显示相应环境温度的功能,并且具有超出设定范围内温度时可以报警的功能,相应环境可以人为选择。

1.3设计要求

1. 

画出总体设计框图,以说明数字温度计由哪些相对独立的功能模块组成,标出各个模块之间互相联系。

并以文字对原理作辅助说明。

2. 

设计各个功能模块的电路图,加上原理说明。

3. 

选择合适的元器件,在面包板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。

4. 

在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个数字温度电路的接线调试。

2.设计思路与总体框图.

数字温度计由主控制器<

单片机)、温度传感器(DS18B20>

、显示器(LCD1602>

、独立按键和报警电路组成,温度传感器所感应的温度信号经过其数据传输引脚传送给单片机,单片机将所接收到的温度信号经过处理,将其送至显示器LCD1602显示,并且能够通过独立按键设置温度报警值,若温度处于报警上限和下限之外,报警电路工作。

图1所示为数字温度计的一般结构框图:

报警温度调整键

LCD1602显示

STC90C51

蜂鸣器,指示灯

单片机时钟振荡

DS18B20传感器

▲图1数字温度计结构框图

3.系统硬件电路的设计

3.1主控电路

单片机STC90C51具有低电压供电和体积小等特点,四个端口同时使用以满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。

晶振采用12MHZ。

▲图2主控电路

▲图3晶振电路

3.2温度显示电路 

采用液晶显示屏LCD1602显示,第一行显示“18B20OKTL”和报警下限值,第二行显示实时温度以及报警上限值,并且能够显示负温度值。

用P0口进行LCD1602的数据写操作,P2.5~P2.7口进行LCD1602的命令控制端口。

电路图如下:

▲图4温度显示电路

3.3按键电路 

本系统一共设置了四个按键,k1键设置温度下限加,k2键设置温度下限减k3键设置温度上限加,k4键设置温度上限减。

▲图5按键电路

3.4报警电路 

本设计采用蜂鸣器和LED灯组成报警电路,电路图如下:

▲图6报警电路

4.系统设计仿真

4.1仿真原理图

根据数字温度计的一般结构框图,我们通过查阅资料书和上网查询,了解不同元件的功能和实用性,考虑性价比后,制作出的数字温度计的仿真电路原理图,如图7所示。

▲图7数字温度计仿真电路原理图

4.2各功能元件的分析[2]

设计原理图中各功能元件的引脚图的分析如下所示:

1.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封装,其引脚排列及内部结构框:

▲图8DS18B20引脚排列图

▲图9内部结构框图

▲图10DS18B20测温原理图

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

图11DS18B20的字节定义

DS18B20的分辨率定义如表1所示

表1分辨率设置表

分辨率

最大温度转移时间

9位

96.75ms

10位

187.5ms

11位

375ms

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时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。

其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。

 

▲图12测温电路图

2.LCD1602:

工业字符型液晶,能够同时显示16x02即32个字符<

16列2行)。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形<

用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块<

显示字符和数字)。

1602芯片的接口信号说明如下表:

1602芯片的接口信号说明

5系统软件设计

整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。

所以软件的功能大致可分为两个部分:

一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。

5.1主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程见图13所示。

开始

液晶初始化

调用按键函数,

液晶显示函数

判断温度值与

设定报警值大小

大于TH或N

者小于TL

Y

报警

结束

▲图13主程序流程图▲图14读温度流程图

5.2读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。

其程序流程图如图15示:

▲图15温度转换流程图

5.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。

温度转换命令子程序流程图如上图,图13所示

5.4计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图16所示。

▲图16计算温度温度流程图

5.51602的液晶显示

▲图171602液晶显示流程图

6.总结与体会

6.1总结

1.根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。

2.容易出现故障为接触不良。

a>

集成块引脚方向预先弯好对准面包板的金属孔,再小心插入。

b>

导线的剥线长度与面包板的厚度相适应<

比板的厚度稍短)。

c>

导线的裸线部分不要露在板的上面,以防短路。

d>

导线要插入金属孔中央。

3.注意芯片的控制引脚必须正确接好

4.检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。

5.要注意芯片引脚上的信号与面包板上插座上信号是否一致<

集成块引脚与面包板常接触不良)。

6.接校时电路时可接模拟信号输入<

如1Hz和2Hz)测试输出信号的切换正确后,再将秒进位和分进位信号接到校时电路,再接校时电路输出到分计数器和时计数器。

从较时电路接入信号时,必须将原进位信号拔掉。

6.2体会

经过将近两周的单片机课程设计,终于完成了我们的数字温度计课程设计,虽然课程设计做的不是特别好,但从心底里说,还是高兴的,因为我们收获了很多很多,这些在平常的学习当中是收获不到的,但高兴之余不得不静下来深思!

在本次课程设计的过程中,我们发现很多的问题,虽然以前还做过类似的课程设计,但这次设计真的让我学到了很多、长进了很多,单片机课程设计的重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过一些程序,但觉的要写好一个程序并不是一件简单的事,所以我们只能不断的调试不断的修改才能把程写的更好。

所以得出结论是:

有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握,实践才是硬道理,实践是检验真理的唯一标准。

通过这次的课程设计,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,这样我们才能更好的理解、掌握这些知识,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

通过这次对数字温度计的设计与制作,让我们了解了设计电路的程序,也让我们了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。

但是最后的成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制约着。

并且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。

所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。

通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

当然在这个过程中我们还会遇到很多其它的问题,这些问题我们也不是那么轻易的就能够解决的,此时我们就会去翻阅相关资料,或者是问同学、问老师,我们的同学和老师那一个个真的事知无不答的,这样我们就能很快的把问题给决绝掉了,那种感觉真的让人很舒畅,这也让我们明白了一件事,在学习中我们缺少不了同学、老师的帮助,他们能够很快的解决一些问题。

从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识应用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

7.参考文献

[1]《单片机原理及应用》杨恢先、黄辉光主编[M].湘潭大学出版社

[2]《电子技术基础》<

第五版)华中科技大学电子技术课程组编[M].康华光主编,陈大钦、张林副主编,高等教育出版社

[3] 《单片机课程指导》楼然苗、李光飞编著,北京航空航天大学大学出版社

[4]《51单片机C语言教程》郭天祥编著

8.附录:

#include<

reg51.h>

#include<

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

uchartemp,num,k1num。

ucharcodetable[]={"

18B20OKTL"

}。

charshangxiaxian[2]={-10,10}。

chara。

sbitk1=P1^0。

sbitk2=P1^1。

sbitk3=P1^2。

sbitk4=P1^3。

sbitLCD_RW=P2^5。

sbitlcdrs=P2^6。

sbitlcden=P2^7。

sbitBeep=P3^0。

sbitled=P3^1。

sbitDQ=P3^7。

/*液晶显示屏的延时程序*/

voiddelay(uintz>

{

uintx,y。

for(x=z。

x>

0。

x-->

for(y=110。

y>

y-->

}

/*温度传感器的延时程序*/

voidDelay1(uinty>

uintx。

for(。

y>

y-->

{

for(x=110。

x>

x-->

}

/*蜂鸣器,18b20写数据函数的延时程序*/

voiddelay2(uinta>

while(--a>

/*温度传感器初始化函数*/

voidinit_18b20(>

DQ=1。

delay2(8>

DQ=0。

delay2(90>

DQ=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1