单片机DS18B20数字温度计课程设计报告Word文档下载推荐.docx
- 文档编号:22468613
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:33
- 大小:255.34KB
单片机DS18B20数字温度计课程设计报告Word文档下载推荐.docx
《单片机DS18B20数字温度计课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机DS18B20数字温度计课程设计报告Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
”,蜂鸣器鸣叫。
2.2系统设计原理
利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。
同时处理后的数据送到LCD中显示。
2.3系统组成
本课题以是AT89C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路DS18B20,温度显示电路,蜂鸣器报警电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、蜂鸣器报警、时钟振荡、LCD显示、温度传感器组成。
系统框图如图所示:
图2-1方案设计
1主控制器
单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
2温度显示电路
字符型液晶显示模块是一种专门用于显示字母、数字、符号等的点阵式液晶显示模块。
它是由若干个5*7或5*11等点阵字符位组成,每一个点阵字符位都可以显示一个字符。
点阵字符位之间有一定的间隔,起到字符间距和行距的作用。
3温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
4蜂鸣器报警
当温度达到设定上下限时,蜂鸣器会发出报警,同时有液晶显示“LOW!
”或者“HOT!
”,同时可看到被测物体温度或环境实时温度。
三、系统硬件设计
3.1系统电路接线图
图3-1系统电路接线图
3.2主系统
AT89C51是一个低功耗,高性能8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。
主要性能特点
1、4kBytesFlash片内程序存储器;
2、128bytes的随机存取数据存储器;
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断
5、6个中断源;
6、2个16位可编程定时器/计数器
7、2个全双工串行通信口;
8、片内振荡器和时钟电路;
9、与MCS-51兼容;
10、全静态工作:
0Hz-33MHz;
11、三级程序存储器保密锁定;
12、可编程串行通道;
13、低功耗的闲置和掉电模式。
管脚说明:
VCC:
电源电压输入端。
GND:
电源地。
图3-2单片机引脚图
引脚功能说明:
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的在FLASH3作为第八编程和校验时,P1口编程和校验时,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.6/WR(外部数据存储器的写选通)
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:
片内振荡器反相放大器的输出端。
3.3显示电路LM016L
LM016L的结构及功能:
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可查找参考书。
CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符。
图3-3引脚图
LM016L引脚功能说明:
Vss(1脚):
一般接地。
Vdd(2脚):
接电源。
Vee(3脚):
液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
RS(4脚):
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
R/W(5脚):
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
E(6脚):
E(或EN)端为使能(enable)端,下降沿使能。
DB0(7脚):
底4位三态、双向数据总线0位(最低位)。
DB1(8脚):
底4位三态、双向数据总线1位。
DB2(9脚):
底4位三态、双向数据总线2位。
DB3(10脚):
底4位三态、双向数据总线3位。
DB4(11脚):
高4位三态、双向数据总线4位。
DB5(12脚):
高4位三态、双向数据总线5位。
DB6(13脚):
高4位三态、双向数据总线6位。
DB7(14脚):
高4位三态、双向数据总线7位(最高位)(也是busyflang)。
寄存器选择控制如表3-1。
表3-1寄存器选择控制
RS
R/W
操作说明
写入指令寄存器(清除屏等)
1
读busyflag(DB7),以及读取位址计数器(DB0~DB6)值
写入数据寄存器(显示各字型等)
从数据寄存器读取数据
3.4蜂鸣器报警
蜂鸣器的工作原理:
蜂鸣器的端口定义为P2.2,其原理根据将蜂鸣器的一端接高电平,另一端接至P2某一脚,编写的简单程序使那一脚为低电平即可使其发出声音,否则不响。
同时,在上下限报警时LCD显示“LOW!
”或“HOT!
”。
3.5DS18B20传感器
1.DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
图3-5DS18B20内部结构
2.DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
图3-6DS18B20引脚图
3.DS18B20工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
DS18B20温度数据表如表3-2所示:
表3-2:
DS18B20温度数据表
TEMPERTURE
DIGALOUTPUT
(Binary)
DIGITALOUTPUT
(Hex)
+125℃
0000011111010000
07D0h
+85℃
0000010101010000
0550h
+25.0625℃
0000000110010001
01991h
+10.125℃
0000000010100010
00A2h
+0.5℃
0000000000001000
0008h
0℃
0000000000000000
000h
-0.5℃
1111111111111000
FFF8h
-10.125℃
1111111101011110
Ff5Eh
-25.0625℃
1111111001101111
FE6Fh
-55℃
1111110010010000
FC90h
4.DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
配置寄存器各位字节的意义如下表3-3:
表3-3:
配置寄存器结构
TM
R1
R0
低五位一直都是"
1"
,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表3-4所示:
(DS18B20出厂时被设置为12位)
表3-4:
温度分辨率设置表
分辨率
温度最大
转换时间
9位
93.75ms
10位
187.5ms
11位
375ms
12位
750ms
5.高速暂存存储器高速暂存存储器由9个字节组成,其分配如表5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;
当S=1时,先将补码变为原码,再计算十进制值。
表3-5是对应的一部分温度值。
第九个字节是冗余检验字节。
表3-5DS18B20暂存寄存器分布
存储器内容
字节地址
温度值低位(LSByte)
温度值高位(MSByte)
高温限值(TH)
2
低温限值(TL)
3
配置寄存器
4
保留
5
6
7
CRC校验值
6.根据DS18B20的通讯协议主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
RAM指令表如3-6所示:
表3-6RAM指令表
指定
约定代码
功能
温度变换
44H
启动DS18B20进行温度转换,12位转换时最长为750ms(9位93.75ms)。
结果存入内部9字节RAM中
读暂存取
0BEH
读内部RAM中9字节的内容
写暂存取
4EH
发出向内部RAM的3写上、下.4字节送两字节数据限温度数据命令,紧跟该命令之后,是传送两字节的数据
复制暂存
48H
将ROM中第3、4字节的内容复制到EEPROM中
重调EEPROM
0B8H
将EEPROM中内容恢复到ROM中的第3、4字节
读供电方式
0B4H
读DS18B20的供电模式。
寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”
四、系统软件设计
4.1具体步骤和设计内容
1、主程序中首先初始化:
检测DS18B20是否存在,然后通过调用读温度子程序读出DS18B20的当前值,调用温度转换子程序把从DS18B20中读出的值转换成对应的温度,调用显示子程序把温度值在LCD液晶显示器相应位置进行显示。
2、温度测量子程序的功能:
读出并处理DS18B20测量的当前温度值,读出的温度值以BCD码的形式存放在缓冲区,DS18B20每一次读写之前都要先进行复位,复位成功后发送一条ROM指令,最后发送RAM指令。
3、温度转换子程序:
把从DS18B20中读出的值转换成对应的温度值,以BCD码的形式存放在缓冲区,正负号存放在符号标志位中。
4、显示缓冲区和LCD液晶显示器:
显示子程序首先把温度转换子程序得到的值变换后放入显示缓冲区,然后调用LCD液晶显示器动态显示程序显示
4.2程序流程图
主程序
(1)主程序
(2)温度测量子程序
(3)温度转换子程序
负
正
(4)显示子程序
否
是
4.3源程序清单
#include<
reg51.h>
stdio.h>
#defineucharunsignedchar
#defineuintunsignedint
voidlcd_busy();
voidlcd_init();
voidlcd_wcmd(ucharcmd);
voidlcd_wdat(uchardat);
ucharow_reset(void);
voidinitds18b20(void);
ucharread_byte(void);
voidwrite_byte(ucharval);
voidtemperature_cov(void);
voiddisplay();
voiddelay(uinti);
sbitDQ=P0^0;
//DS18B20端口
sbitRS=P2^0;
//LCD端口
sbitRW=P2^1;
sbitE=P2^2;
sbitbuzzer=P2^7;
//定义蜂鸣器端口
union{
ucharc[2];
uintx;
}temp;
//联合体
ucharflag;
//定义温度正负值标志变量,正为'
0'
,负为'
1'
intcc,xs;
/***************************************************************/
/*延时函数*/
voiddelay(uinti)
{
for(;
i>
0;
i--);
}
/*复位函数*/
ucharow_reset(void)
ucharreset;
DQ=0;
delay(50);
DQ=1;
delay(3);
reset=DQ;
delay(25);
return(reset);
/*初始化DS18B20*/
voidinitds18b20(void)
ow_reset();
//
write_byte(0xCC);
write_byte(0x4E);
write_byte(0x00);
write_byte(0x7F);
/*从单总线读取一个字节*/
ucharread_byte(void)
uchari;
ucharvalue=0;
for(i=8;
i--)
{
value>
>
=1;
DQ=0;
DQ=1;
delay
(1);
if(DQ)value|=0x80;
delay(6);
}
return(value);
/**向单总线上写一个字节*/
voidwrite_byte(ucharval)
for(i=8;
DQ=val&
0x01;
delay(5);
val=val/2;
delay(5);
/******************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 DS18B20 数字 温度计 课程设计 报告