1、Key words: temperature measurement; microprocessor ;C language 前 言这次的毕业设计以虚拟环境下通过80C51单片机实现DS18B20芯片温度测量为目标。DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以连接很多这样设备实现多路温度测量和温度报警。由于DS18B20采用的是1Wire总线通信协议方式,即在一根数据线实现数据的双向传输,而对80C51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总
2、线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将80C51单片机作为主设备,单总线器件DS18B20作为从设备。而每一次命令和数据的传输都是从主设备主动启动写时序开始,如果要求单总线器件回送数据,则在进行写命令后,主机需启动读时序完成数据接收。可以说对DS18B20的编译即是一个写读时隙的过程。 我们的毕业设计目的是通过80C51单片机对DS18B20进行编程,同时了解DS18
3、B20的性能特点,通过所学的C语言知识和相关资料提供的指令代码完成基于80C51单片机与DS18B20的温度检测软件设计。目录前 言 1第一章 单片机介绍 11. 1 80C51 单片机的逻辑原理结构 11.2 80C51单片机内部结构 21.3 80C51引脚介绍 31.4 设计中所编译的相关程序及系统框图 5第二章 DS18B20芯片介绍 72.1 DS18B20芯片特征 72.2 DS18B20内部结构 72.3硬件构造 82.4 DS18B20引脚排列 92.5 DS18B20芯片各部分介绍 9第三章 DS18B20代码指令介绍及程序设计 123.1 DS18B20初始化 133.2
4、DS18B20读写操作 143.3 ROM指令代码 173.4 DS18B20功能指令 18总 结 21附录 23致 谢 29 第一章 单片机介绍本次毕业设计要使用到80C51单片机以及DS18B20温度测量芯片。通过对80C51单片机进行编程,从而控制DS18B20进行温度测量和温度转换。 单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机“【1】”。1. 1 80C51 单片机的逻辑原理结构 80C51单片机采用的是冯.诺伊曼提出的经典计算机体
5、系结构框架,即一台计算机是由运算器、控制器、存储器、输入设备和输出设备共五个基本部分组成。MCS-51单片机在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等。图1.1 单片机的系统结构框图“1”由图看出,单片机内部主要包含下列几个部件: 一个8位CPU; 一个时钟电路; 4KB程序存储器; 128KB数据存储器; 两个16位定时/计数器; 64KB扩展总线控制电路; 四个8-bit并行I/O端口; 一个可编程串行接口; 五个中断源,其中包括两个优先级嵌套中断。1.2 80C51单片机内部结构 图1.2 80C51内部结构图“2”1. CPU CPU即中央处理器的简称,
6、是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两部分电路组成。(1)运算器电路 运算器电路包括ALU(算术逻辑单元)、ACC(累加器)、B寄存器、状态寄存器、暂存器1和暂存器2等部件,运算器的功能是进行算术运算和逻辑运算。运算电路以ALU为核心单元,可以完成半字节、单字节以及多字节数据的运算操作,其中包括加、减、乘、除等算术运算以及与、或、异或、求补和循环等逻辑操作,运算结果的状态由状态寄存器保存。(2)控制器电路 控制器电路包括程序计数器PC、PC加1寄存器、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协
7、调单片机各部分正常工作。程序计数器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. 存储器
8、 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单片机具有一个采用
9、通用异步工作方式的全双工串行通信接口,可以同时发送和接收数据。它具有两个相互独立的接收、发送数据缓冲器,两个缓冲器共用一个地址(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。5. 中断控制系统 80C51单片机的中断功能较强,以满足控制应用的需要。80C51共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。所有中断分为高级和低级两个中断优先级。6. 时钟电路 80C51芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为1.2MHz12MHz,典型取值为6MHz。7. 总线 以上所有组成部分都是通过总线连
10、接起来,从而构成一个完整的单片机。系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。1.3 80C51引脚介绍 图1.3 80C51引脚图“3” VCC:供电电压 GND:接地P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在编程时,P0 口作为原码输入口,当进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
11、P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P3口:P3口
12、管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作
13、寄存器R0-R7)的状态。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PS
14、EN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余
15、输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,80C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止“4”。1.4
16、设计中所编译的相关程序及系统框图延时子程序:/-/延时子程序 (Delay(2)约为延时1us)void Delay(long int milliseconds) long int i; long int j; j =milliseconds; for(i = 0; i j; i +) return;系统时钟初始化设置:/系统时钟初始化设置void SYSCLK_Init (void) int i; / Delay counter OSCXCN = 0x27; / start external oscillator with 22.1184MHz crystal for (i=0; i 1ms
17、) OSCICN = 0x88; / select external oscillator as SYSCLK source and enable missing clock detector/看门狗初始化设置void WATCH_Dog () WDTCN = 0xde; WDTCN = 0xad;单片机I/O口初始化设置:/单片机I/O口初始化设置void PORT_Init () XBR0 = 0x04; /TX0和RX0连到P0.0和P0.1 XBR1 = 0x00; XBR2 = 0x40; P0MDOUT|=0xff; P1MDOUT|=0xfd; /设置P1.1为输入 P2MDOU
18、T|=0xff; P3MDOUT|=0xff; P74OUT|=0xff;ACC位定义:/-/ACC位定义sbit ACC_0 =ACC0; /数据位sbit ACC_1 =ACC1;sbit ACC_2 =ACC2;sbit ACC_3 =ACC3;sbit ACC_4 =ACC4;sbit ACC_5 =ACC5;sbit ACC_6 =ACC6;sbit ACC_7 =ACC7; 第二章 DS18B20芯片介绍DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不
19、同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域“5”。2.1 DS18B20芯片特征DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: ( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 (
20、 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。 ( 3 )在使用中不需要任何外围元件。 ( 4 )持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 ( 5 )供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 ( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。 ( 7 )负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常
21、工作。 ( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。 DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。注:单总线特点单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。单总线通常要求外接一个约为 4.7K10K 的上拉电阻,这样,当总线闲置时其状态为高电平“6”。2.2 DS18B20内部结构主要由4部分组成:64 位ROM、温度寄存器、温度报警触发器TH和TL、配置寄存器。ROM中的64位序列号是出厂前被光刻
22、好的,它可以看作 是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。 ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。图2.1 DS18B20内部结构图2.3硬件构造单总线系统只有一条定义的信号线。每一个总线上的器件必须是漏极开路或三态输出。这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。DS18B20的单总线端口(DQ引脚)是漏极开路式的,单总线需要一个约5K的外部上拉电阻;单总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想
23、恢复执行的画,总线必须停留在空闲状态。在恢复期间,如果单总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。如果总线停留在低电平超过480us,总线上的所有器件都将被复位。图2.2 DS18B20硬件构造图“7”2.4 DS18B20引脚排列 图2.3 DS18B20引脚排列图“8”1. GND为电源 地;2. DQ为数字信号输入输出端;3. VDD为外接供电电源输入口;2.5 DS18B20芯片各部分介绍(1) 64-BIT ROM AND 1-wire PORT 每个DS18B20都有一个唯一储存在ROM中的64位编码。最前面8位是单线系列编码:28h。接着的48位是一个唯一的序列
24、号。最后8位是以上56位的CRC编码。64位ROM和ROM操作控制区允许DS18B20作为单总线器件并按照单总线协议工作。64-BIT ROM AND 1-wire PORT8位CRC48位序列号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为最低有效位开始传送。为了完整的验证数据,高速暂存器能够
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1