基于C51与DS18B20的温度计带时钟设计.docx
- 文档编号:12871303
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:32
- 大小:322.80KB
基于C51与DS18B20的温度计带时钟设计.docx
《基于C51与DS18B20的温度计带时钟设计.docx》由会员分享,可在线阅读,更多相关《基于C51与DS18B20的温度计带时钟设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于C51与DS18B20的温度计带时钟设计
目录
1、概述1
1.1设计背景1
1.2设计思路1
2、系统硬件电路设计2
2.1、主控制电路2
2.2、DS18B20温度传感器的选择5
2.3、显示电路及原理9
2.4、复位电路12
2.5时钟电路13
2.6主电路原理图:
14
3、系统软件设计15
4、仿真19
4.1PROTEUS介绍19
4.2、Proteus软件具有其它EDA工具软件的功能。
19
4.3、革命性的特点:
20
5、综合调试20
5.1焊接20
5.2调试20
5.2.3实物图21
6、感言22
基于C51与DS18B20的温度计(带时钟)设计
1、总体设计概述
随着信息技术的飞速发展和传统工业改造的逐步实现,人们在生产过程中会越来越关注精密实用的仪器,能够独立工作的温度检测和显示系统应用于诸多领域。
其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活等提供更好更方便快捷的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展
在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
而热电偶和热电阻测出的一般都是电压,需要利用A/D转换技术转换成相应的温度,硬件电路复杂,软件调试复杂,制作成本高。
我们要做的是一种以C51单片机为主控器件,以DS18B20为温度传感器的数字温度计。
本数字温度计的设计采用美国DALLAS公司推出的一种改进型的智能温度传感器DS18B20作为检测元件。
其温度值可以直接被读出来,通过单片机控制温度的读写和显示。
DS18B20与单片机采用3线制连接,减少了外部的硬件电路,具有低成本和易使用的特点。
1.1设计背景
由于单片机体积小、功能全、价格低、编程容易等优点,在工业领域的应用越来越广泛。
数字温度计的实现,主要基于芯片DS18B20和1602LCD的显示功能,把现场测得的温度显示出来。
DS18B20是美国Dallas公司生产的单总线数字输出型集成温度传感器,能够直接读出被测温度值,并且可根据实际要求通过编程实现9~12位的数字量输出,将温度值转化为9位数字量所需时间为93.75ms,转化为12位数字量所需时间为750ms。
测试温度范围为-55~+125,精度可达0.0675℃。
1.2设计思路
本设计是一个基于单片机C51的数字温度计和温度传感器DS18B20的设计,用来测量环境温度。
整个设计系统主要包括硬件电路的设计和系统软件的设计。
硬件电路主要包括主控制器,测温电路和显示电路等。
主控制器采用单片机C51,温度传感器采用美国DALLAS半导体公司生产的DS18B20来实现环境温度的采集和A/D转换,同时因其输出为数字形式,且为串行输出,这就方便了单片机进行数据处理,但同时也对编程提出了更高的要求。
系统程序主要包括主程序,读出温度子程序,写入温度子程序等
DS1302
DS18B20是一种改进型智能温度传感器,其测温范围为:
-55~125 ℃,最大分辨率可达0.0625 ℃。
按照系统设计功能的要求,该系统由3个模块组成:
主控制部分、测温电路及显示电路组成,如想实现自动报警功能需加报警电路及按键预置温度值电路。
数字温度计总体电路结构框图如图1所示。
图1 系统电路结构框图
所用主要元器件
单片机89c51一个,温度传感器DS18B20一个,时钟模块,12MHz晶振一个,LCD显示屏一个,排阻一个,电阻电容及导线若干。
2、系统硬件电路设计
控制器使用89C51,温度传感器使用DS18B20,用LCD1602实现温度显示。
系统程序主要包括主程序、温度控制子程序及显示子程序等。
2.1、主控制电路
主控制器采用C51单片机,其是美国ATMEL公司生产的低电平、高性能的8位机。
支持在线编程下载等功能,适用于许多较为复杂控制应用的场合。
2.1.1C51单片机简介
C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,C51在众多嵌入式控制应用系统中得到广泛应用。
2.1.2主要性能特点
1、4kBytesFlash片内程序存储器;
2、128bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、2个中断优先级、2层中断嵌套中断;
5、5个中断源;
6、2个16位可编程定时器/计数器;
7、2个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:
0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。
2.1.3管脚说明编辑
VCC:
电源电压输入端。
GND:
电源地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
图2PDIP封装的C51管脚图
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口除了作为普通I/O口,还有第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(T0定时器的外部计数输入)
P3.5T1(T1定时器的外部计数输入)
P3.7/RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89C51的P0、P1、P2、P3口作为输入时都是准双向口。
除了P1口外P0、P2、P3口都还有其他的功能。
RST:
复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
地址锁存允许/编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
外部程序存储器访问允许。
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
片内振荡器反相放大器和时钟发生器的输入端。
XTAL2:
片内振荡器反相放大器的输出端。
2.2、DS18B20温度传感器的选择
温度传感器用DS18B20,DS18B20温度传感器是美国DALLAS公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且具有耐磨耐碰,体积小,使用方便,封装形式多样等特点,适用于各种狭小空间设备数字测温和控制领域
2.2.1、DS18B20温度传感器工作原理
DS18B20温度传感器能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,其封装图如图3所示。
图3 DS18B20封装图
其中,
1引脚为接地端;
2引脚为数据输入/输出端;
3引脚为电源端。
2.2.2、DS18B20的性能特点如下:
1、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
2、 适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电;
3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;
4、 可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
5、使用时无需任何外部器件,全部传感元件及转换电路集成在形如一只三 极管的集成电路内;
6、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
8、测量结构直接输出数字温度信号,以“一线总线”串行传送给CPU,同 时可传送校验码,具有极强的抗干扰能力;
9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常 工作;
2.2.3、DS18B20的内部结构:
DS18B20内部主要由4部分组成:
64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
1 64位ROM
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号,且每个序列号都是不相同的。
这样就可以实现一根总线上挂多个DS18B20的目的。
DS18B20中的温度传感器完成温度的测量,用16位符号扩展的二进制补码读书形式提供,以0.0625℃/LSB形式表达。
DS18B20温度值格式表1所示。
表1:
DS18B20温度值格式
12位转化后得到的12数据,存储在RAM中,二进制中的前5位是符号位,如果测得的温度大于0,这5位为0,只要将测得的数值乘以0.0625即可得到实际温度值;如果温度小于0,这5位为1,测得的数值需要取反加1再乘以0.0625,即可得到实际温度。
例如+25.0625℃的数字输出为0191H,-25.0625的数字输出为FF6FH。
2 高低温报警触发器TH和TL
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
3 配置寄存器
表2:
配置寄存器结构
TM
R1
R0
1
1
1
1
1
低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
表3:
温度分辨率设置表
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
2.2.4、温度传感器数据的计算处理方法
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符显示。
因为DS18B20为了提高转换精度采用12位。
在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值,见表1。
通过观察表1可以发现一个十进制值和二进制值之间有明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。
所以需要4位的数码管来显示小数部分,实际应用时没必要有这么高的精度,采用1位数码管来显示小数就可以了。
表:
4 DS18B20温度与测得值对应表
温度/ ℃
二进制表示
十六进制表示
+125
00000111 11010000
07D0H
+85
00000101 01010000
0550H
+25.0625
00000001 10010001
0191H
+10.125
00000000 10100010
00A2H
+0.5
00000000 00001000
0008H
0
00000000 00000000
0000H
-0.5
11111111 11111000
FFF8H
-10.125
11111111 01011110
FF5EH
-25.0625
11111110 01101111
FE6FH
-55
11111100 10010000
FC90H
2.2.5、DS18B20与单片机的接口电路
DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。
DS18B20的电源供电方式有2种:
外部供电方式和寄生电源方式。
工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。
但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM时),同时芯片的性能也有所降低。
因此,在条件允许的场合,尽量采用外供电方式。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电。
在这里采用前者方式供电。
DS18B20与芯片连接电路如图所示:
DS18B20供电方式,一般采用电源供电方式。
此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有较强的上拉能力
图4:
DS18B20和单片机的接口连接
2.3、显示电路及原理
显示电路采用1602LCD工业字符型液晶,如图5所示,1602液晶的控制管脚都接到了单片机管脚上,在功能设置指令中可以将液晶设为8位数据接口和4位数据接口,图中采用的是8位的数据接口,当然也可以当四位数据接口来用。
液晶电源正端接5V,负端接地,背光正端接5V,负端接地。
此外,液晶的偏压管脚(VO)接到一个电位器的中间抽头,电位器的两端分别接5V和地,这样就可通过调节电位器来实现对1602液晶对比度的调节。
经实验测试,手里的1602液晶的偏压管脚的电压调节到0.3~0.4V时对比度效果最好,也可以将该管脚通过一个1k的电阻下拉到地。
图5
图6
2.3.1、1602LCD简介
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
图7
管脚功能:
1602采用标准的16脚接口,其中:
第1脚:
GND为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳
变时执行指令。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电
源。
15脚背光正极
16脚背光负极。
特性:
3.3V或5V工作电压,对比度可调;内含复位电路;提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器DDRAM;内建有192个5X7点阵的字型的字符发生器CGROM;8个可由用户自定义的5X7的字符发生器CGRAM
特征应用:
微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
2.4、复位电路
如图8所示。
上电复位用RC电路,电容用10uF,电阻用10K。
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
单片机复位是使CPU和系统中的其它功能部件都处在一个确定的初始状态,复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
单片机复位的条件是:
必须使RST引脚加上持续两个机器周期的高电平,复位电路在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。
只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。
复位后PC值为0000H,表明复位后程序从0000H开始执行,从第一个单元取指令。
例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机复位期间不产生ALE信号,即ALE=1.表明单片机复位期间不会有任何取指操作。
图8
2.5时钟电路
单片机的晶振频率低于40MHZ,所用我们采用12MHZ,加两个22pF电容。
如图9所示。
时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格的按时序进行工作。
一般的晶振振荡电路都是在一个反相放大器的两端接入晶振,再有两个电容分别接到晶振的两端,另一端接地,这两个电容串联的容量值应该等于负载电容。
在单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体震荡器和微调电容,形成反馈电路,就构成一个稳定的自激震荡器,一般的晶振的负载电容为20pF-45pF之间,考虑到元件引脚的等效输入电容,本设计采用两个22pF的电容构成晶振的振荡电路。
设计电路中所使用的是12MHz的晶振,机器周期为1us,具体的时钟电路如图3.7所示。
图9
2.6主电路原理图:
图10
数字显示温度计的工作原理:
基于C51的温度测量系统电路图把温度转化成带符号的数字信号(以十六位补码形式,占两个字节),RP1为上拉电阻,传感器采用外部电源供电。
C51是整个系统的核心部分,内含2KB的FLASHROM,用户程序存放在这里。
显示器模块是1602LCD。
系统程序分传感器控制程序和显示器程序两部分,传感器控制程序是按照DSl8B20的通信协议编制。
系统的工作是在程序控制下,完成对传感器的读写和对温度的显示。
3、系统软件设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
程序主要有三大部分:
LCD1602程序、DS18B20程序、主程序。
完整程序代码如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitBLK=P1^1;
sbitDQ=P1^5;
sbitRS=P2^0;
sbitRW=P2^1;
sbitEN=P2^2;
unsignedcharcodestr1[]={"temperature:
"};
unsignedcharcodestr2[]={"C"};
uchardatadisdata[5];
uinttvalue;//温度值
uchartflag;//温度正负标志
/*************************lcd1602程序**************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{
unsignedinti,j;
for(i=0;i for(j=0;j<100;j++); } voidwr_com(unsignedcharcom)//写指令// { delay1ms (1); RS=0; RW=0; EN=0; P0=com; delay1ms (1); EN=1; delay1ms (1); EN=0; } voidwr_dat(unsignedchardat)//写数据// { delay1ms (1);; RS=1; RW=0; EN=0; P0=dat; delay1ms (1); EN=1; delay1ms (1); EN=0; } voidlcd_init()//初
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C51 DS18B20 温度计 时钟 设计