单片机DS18B20最终论文Word文档格式.docx
《单片机DS18B20最终论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机DS18B20最终论文Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
![单片机DS18B20最终论文Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/22/ff3bd1fe-f21c-4e2c-8c91-ba1acdddc991/ff3bd1fe-f21c-4e2c-8c91-ba1acdddc9911.gif)
Keywords:
temperaturemeasurement;
microprocessor;
Clanguage
前言
这次的毕业设计以虚拟环境下通过80C51单片机实现DS18B20芯片温度测量为目标。
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以连接很多这样设备实现多路温度测量和温度报警。
由于DS18B20采用的是1-Wire总线通信协议方式,即在一根数据线实现数据的双向传输,而对80C51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将80C51单片机作为主设备,单总线器件DS18B20作为从设备。
而每一次命令和数据的传输都是从主设备主动启动写时序开始,如果要求单总线器件回送数据,则在进行写命令后,主机需启动读时序完成数据接收。
可以说对DS18B20的编译即是一个写读时隙的过程。
我们的毕业设计目的是通过80C51单片机对DS18B20进行编程,同时了解DS18B20的性能特点,通过所学的C语言知识和相关资料提供的指令代码完成基于80C51单片机与DS18B20的温度检测软件设计。
目录
前言1
第一章单片机介绍1
1.180C51单片机的逻辑原理结构1
1.280C51单片机内部结构2
1.380C51引脚介绍3
1.4设计中所编译的相关程序及系统框图5
第二章DS18B20芯片介绍7
2.1DS18B20芯片特征7
2.2DS18B20内部结构7
2.3硬件构造8
2.4DS18B20引脚排列9
2.5DS18B20芯片各部分介绍9
第三章DS18B20代码指令介绍及程序设计12
3.1DS18B20初始化13
3.2DS18B20读写操作14
3.3ROM指令代码17
3.4DS18B20功能指令18
总结21
附录23
致谢29
第一章单片机介绍
本次毕业设计要使用到80C51单片机以及DS18B20温度测量芯片。
通过对80C51单片机进行编程,从而控制DS18B20进行温度测量和温度转换。
单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机“【1】”。
1.180C51单片机的逻辑原理结构
80C51单片机采用的是冯.诺伊曼提出的经典计算机体系结构框架,即一台计算机是由运算器、控制器、存储器、输入设备和输出设备共五个基本部分组成。
MCS-51单片机在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等。
图1.1单片机的系统结构框图“[1]”
由图看出,单片机内部主要包含下列几个部件:
◆
一个8位CPU;
一个时钟电路;
4KB程序存储器;
128KB数据存储器;
两个16位定时/计数器;
64KB扩展总线控制电路;
四个8-bit并行I/O端口;
一个可编程串行接口;
五个中断源,其中包括两个优先级嵌套中断。
1.280C51单片机内部结构
图1.280C51内部结构图“[2]”
1.CPU
CPU即中央处理器的简称,是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两部分电路组成。
(1)运算器电路
运算器电路包括ALU(算术逻辑单元)、ACC(累加器)、B寄存器、状态寄存器、暂存器1和暂存器2等部件,运算器的功能是进行算术运算和逻辑运算。
运算电路以ALU为核心单元,可以完成半字节、单字节以及多字节数据的运算操作,其中包括加、减、乘、除等算术运算以及与、或、异或、求补和循环等逻辑操作,运算结果的状态由状态寄存器保存。
(2)控制器电路
控制器电路包括程序计数器PC、PC加1寄存器、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。
控制电路完成指挥控制工作,协调单片机各部分正常工作。
程序计数器PC用来存放即将要执行的指令地址,它可以完成64K的外部存储器寻址,执行指令时,PC内容的高8位经P2口输出,低8位经P0口输出。
数据指针DPTR为16位数据指针,它可以对64K的外部数据存储器和I/O口进行寻址,它的低8位为DPL(地址82H),高8位为DPH(地址为83H)。
堆栈指针SP在片内RAM(128字节)中开辟栈区,并随时跟踪栈顶地址,它按先进后出的原则存取数据,上电复位后,SP指向07H。
1.定时器/计数器
80C51单片机片内有两个16位的定时/计数器,即定时器0和定时器1。
它们可以用于定时控制、延时以及对外部事件的计数和检测等。
2.存储器
80C51系列单片机的存储器包括数据存储器和程序存储器,其主要特点是程序存储器和数据存储器的寻址空间是相互独立的,物理结构也不相同。
80C51有4个物理上相互独立的存储器空间:
即内、外程序存储器和内、外数据存储器。
对于8051其芯片中共有256个RAM单元,其中后128个单元被专用寄存器占用,只有前128个单元供用户使用。
3.并行I/O口
80C51单片机共有4个8位的I/O口(P0、P1、P2和P3),每一条I/O线都能独立地用作输入或输出。
P0口为三态双向口,能带8个TTL门电路,P1、P2和P3口为准双向口,负载能力为4个TTL门电路。
4.串行I/O口
80C51单片机具有一个采用通用异步工作方式的全双工串行通信接口,可以同时发送和接收数据。
它具有两个相互独立的接收、发送数据缓冲器,两个缓冲器共用一个地址(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。
5.中断控制系统
80C51单片机的中断功能较强,以满足控制应用的需要。
80C51共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。
所有中断分为高级和低级两个中断优先级。
6.时钟电路
80C51芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。
时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为1.2MHz~12MHz,典型取值为6MHz。
7.总线
以上所有组成部分都是通过总线连接起来,从而构成一个完整的单片机。
系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。
1.380C51引脚介绍
图1.380C51引脚图“[3]”
VCC:
供电电压
GND:
接地
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在编程时,P0口作为原码输入口,当进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,80C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止“[4]”。
1.4设计中所编译的相关程序及系统框图
延时子程序:
//---------------------------------------------------------
//延时子程序(Delay
(2)约为延时1us)
voidDelay(longintmilliseconds)
{
longinti;
longintj;
j=milliseconds;
for(i=0;
i<
j;
i++)
{
}
return;
}
系统时钟初始化设置:
//系统时钟初始化设置
voidSYSCLK_Init(void)
inti;
//Delaycounter
OSCXCN=0x27;
//startexternaloscillatorwith22.1184MHzcrystal
for(i=0;
i<
256;
i++);
//XTLVLDblankinginterval(>
1ms)
OSCICN=0x88;
//selectexternaloscillatorasSYSCLKsourceandenablemissingclockdetector
//看门狗初始化设置
voidWATCH_Dog()
WDTCN=0xde;
WDTCN=0xad;
单片机I/O口初始化设置:
//单片机I/O口初始化设置
voidPORT_Init()
{
XBR0=0x04;
//TX0和RX0连到P0.0和P0.1
XBR1=0x00;
XBR2=0x40;
P0MDOUT|=0xff;
P1MDOUT|=0xfd;
//设置P1.1为输入
P2MDOUT|=0xff;
P3MDOUT|=0xff;
P74OUT|=0xff;
ACC位定义:
//--------------------------------------------------
//ACC位定义
sbitACC_0=ACC^0;
//数据位
sbitACC_1=ACC^1;
sbitACC_2=ACC^2;
sbitACC_3=ACC^3;
sbitACC_4=ACC^4;
sbitACC_5=ACC^5;
sbitACC_6=ACC^6;
sbitACC_7=ACC^7;
第二章DS18B20芯片介绍
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域“[5]”。
2.1DS18B20芯片特征
DS18B20单线数字温度传感器,即“一线器件”,其具有独特的优点:
(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
(2)测量温度范围宽,测量精度高DS18B20的测量范围为-55℃~+125℃;
在-10~+85°
C范围内,精度为±
0.5°
C。
(3)在使用中不需要任何外围元件。
(4)持多点组网功能多个DS18B20可以并联在惟一的单线上,实现多点测温。
(5)供电方式灵活DS18B20可以通过内部寄生电路从数据线上获取电源。
因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
(6)测量参数可配置DS18B20的测量分辨率可通过程序设定9~12位。
(7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(8)掉电保护功能DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
DS18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
注:
单总线特点——单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
单总线通常要求外接一个约为4.7K—10K的上拉电阻,这样,当总线闲置时其状态为高电平“[6]”。
2.2DS18B20内部结构
主要由4部分组成:
64位ROM、温度寄存器、温度报警触发器TH和TL、配置寄存器。
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。
64位ROM的排的循环冗余校验码(CRC=X^8+X^5+X^4+1)。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
图2.1DS18B20内部结构图
2.3硬件构造
单总线系统只有一条定义的信号线。
每一个总线上的器件必须是漏极开路或三态输出。
这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。
DS18B20的单总线端口(DQ引脚)是漏极开路式的,单总线需要一个约5KΩ的外部上拉电阻;
单总线的空闲状态是高电平。
无论任何理由需要暂停某一执行过程时,如果还想恢复执行的画,总线必须停留在空闲状态。
在恢复期间,如果单总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。
如果总线停留在低电平超过480us,总线上的所有器件都将被复位。
图2.2DS18B20硬件构造图“[7]”
2.4DS18B20引脚排列
图2.3DS18B20引脚排列图“[8]”
1.GND为电源地;
2.DQ为数字信号输入/输出端;
3.VDD为外接供电电源输入口;
2.5DS18B20芯片各部分介绍
(1)64-BITROMAND1-wirePORT
每个DS18B20都有一个唯一储存在ROM中的64位编码。
最前面8位是单线系列编码:
28h。
接着的48位是一个唯一的序列号。
最后8位是以上56位的CRC编码。
64位ROM和ROM操作控制区允许DS18B20作为单总线器件并按照单总线协议工作。
64-BITROMAND1-wirePORT
8位CRC
48位序列号
8位系列码
(2)SCRATCHPAD
SCRATCHPAD有一个温度寄存器,高低温报警触发器以及配置寄存器组成。
当报警功能不使用时,TH和TL寄存器可以被当作普通寄存器使用。
字节0和字节1为测得温度信息的LSB和MSB。
这两个字节是只读的。
第2和第3字节是TH和TL的拷贝。
位4包含配置寄存器数据,其被详述于配置寄存器节。
字节第5,6和7位被器件保留,禁止写入;
这些数据在读回时全部表现为逻辑1。
高速暂存器的位8是只读的,包含以上八个字节的CRC码,CRC的执行方式如CRC发生器节所述。
数据通过写暂存器指令[4Eh]写入高速暂存器的2,3和4位;
数据必须以位2为最低有效位开始传送。
为了完整的验证数据,高速暂存器能够