基于51单片机DS18B20温度采集器_第1页
基于51单片机DS18B20温度采集器_第2页
基于51单片机DS18B20温度采集器_第3页
基于51单片机DS18B20温度采集器_第4页
基于51单片机DS18B20温度采集器_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 一一 核心器件的基本构成及特性核心器件的基本构成及特性 1.1 AT89S51 功能特性功能特性 89C51 是 INTEL 公司 MCS-51 系列单片机中基本的产品,它采用 INTEL 公司可靠的 CHMOS 工艺技术制造的高性能 8 位单片机,属于标准的 MCS- 51 的 HCMOS 产品。它结合了 HMOS 的高速和高密度技术及 CHMOS 的低 功耗特征,它基于标准的 MCS-51 单片机体系结构和指令系统,属于 80C51 基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。 89C51 内置 8 位中央处理单元、256 字节内部数据存储器 RAM、8k 片内程序 存储器(ROM)32 个双向输入/输出(I/O)口、3 个 16 位定时/计数器和 5 个两 级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C51 还 可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下 冻结 CPU 而 RAM 定时器、串行口和中断系统维持其功能。掉电模式下,保 存 RAM 数据,时钟振荡停止,同时停止芯片内其它功能。89C51 有 PDIP(40pin)和 PLCC(44pin)两种封装形式。 1.2 AT89S51 管脚介绍管脚介绍 AT89C51 单片机是把那些作为控制应用所必需的基本内容都集成在一个尺 寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微 处理器(CPU) 、数据存储器(RAM)、程序存储器(ROM)、并行 I/O 口(4 个 8 位 I/O 口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是 通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围 芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集 中控制方式,以实现不同的功能。 AT89C51 单片机如图所示。 山东交通学院 课程设计任务书 1.1.1 引脚功能介绍引脚功能介绍 Vcc(40 引脚): 接+5V 电源。 Vss(20 引脚): 接地。 XTAL1(19 引脚): 片内振荡器反相放大器和时钟发生器电路的输入端。 XTAL2(18 引脚): 片内震荡器反相放大器的输出端。 RST: 复位引脚,高电平有效。 EA: 外部程序存储器访问允许控制端。 ALE: 低 8 位地址锁存允许信号端。 PSEN:读外部程序存储器的选通信号端。 P0 口:8 位,漏极开路的双向 I/O 口。 P1 口:8 位,准双向 I/O 口,具有内部上拉电阻。 P2 口:8 位,准双向 I/O 口,具有内部上拉电阻。 P3 口:8 位,准双向 I/O 口,具有内部上拉电阻。 1.1.2 微处理器(微处理器(CPU) AT89C51 单片机中有一个 8 位的微处理器,与通用的微处理器基本相同, 同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不 仅可处理数据,还可以位变量的处理。 1.1.3 数据存储器数据存储器(RAM) 数据存储器空间分为片内与片外两部分。 当 AT89C51 单片机的片内 RAM 不够用时,又给用户提供了在片外可扩 山东交通学院 课程设计任务书 展至 64KB RAM 的能力,以供用户的需求。 片内为 128 个字节,字节地址为 00H7FH。片外最多可外扩至 64k 字节, 用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、 标志位等,所以称为数据存储器。 1.1.4 程序存储器程序存储器(ROM) AT89C51 单片机的片内程序存储器为 4KB 的 FLASH 存储器,地址范围为 0000H0FFFH。有 16 位地址线,可外扩的程序存储器空间最大为 64KB, 地址范围为 0000HFFFFH。 由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储 器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至 64k 字节。 1.1.5 中断系统中断系统 具有 5 个中断源,2 级中断优先权。 定时器定时器/计数器计数器 片内有 2 个 16 位的定时器/计数器, 具有四种工作方式(方式 0、方式 1、方式 2、方式 3) 。 串行口串行口 1 个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并 行 I/O 口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强 且应用更广。 1.1.6 特殊功能寄存器(特殊功能寄存器(SFR) AT89C51 单片机共有 21 个特殊功能寄存器,用于对片内的个功能的部件 进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具 有特殊功能的 RAM 区。由上可见,AT89C51 单片机的硬件结构具有功能部 山东交通学院 课程设计任务书 件种类全,功能强等特点。特别值得一提的是该单片机 CPU 中的位处理器, 它实际上是一个完整的 1 位微计算机,这个 1 位微计算机有自己的 CPU、位 寄存器、I/O 口和指令集。1 位机在开关决策、逻辑电路仿真、过程控制方面 非常有效;而 8 位机在数据采集,运算处理方面有明显的长处。MCS-51 单 片机中 8 位机和 1 位机的硬件资源复合在一起,二者相辅相承,它是单片机 技术上的一个突破,这也是 MCS-51 单片机在设计的精美之处,得以在实际 生活中得到了广泛的应用。 1.3 DS18B20 的主要特性的主要特性 这里我们用到温度芯片 DS18B20。DS18B20 是 DALLAS 公司生产的一线 式数字温度传感器,具有 3 引脚 TO92 小体积封装形式。测温分辨率可达 0.0625,被测温度用符号扩展的 16 位数字量方式串行输出。其工作电源既 可在远端引入,也可采用寄生电源方式产生。CPU 只需一根端口线就能与诸 多 DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。 DS18B20 支持“一线总线”接口,测量温度范围为 -55C+125C,在- 10+85C 范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输, 大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控 制、设备或过程控制、测温类消费电子产品等。 山东交通学院 课程设计任务书 1.4 DS18B20 的内容结构的内容结构 (1) DS18B20 的内部结构如下图所示。 DS18B20 内部结构图 DS18B20 有 4 个主要的数据部件: 64 位激光 ROM。64 位激光 ROM 从高位到低位依次为 8 位 CRC、48 位序列号和 8 位家族代码(28H)组成。 温度灵敏元件。 非易失性温度报警触发器 TH 和 TL。可通过软件写入用户报警上下 限值。 配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。 DS18B20 在 0 工作时按此寄存器中的分辨率将温度转换成相应精度 的数值,其各位定义如图所示。 TMR1R011111 DS18B20 配置寄存器结构图 其中,TM:测试模式标志位,出厂时被写入 0,不能改变;R0、R1:温度 计分辨率设置位,其对应四种分辨率如下表所列,出厂时 R0、R1 置为缺省 值:R0=1,R1=1(即 12 位分辨率),用户可根据需要改写配置寄存器以获 得合适的分辨率。 山东交通学院 课程设计任务书 配置寄存器与分辨率关系表 : R0R1 温度计分辨率/bit最大转换时间/us 00993.75 0110187.5 1011375 1112750 (2) 高速暂存存储器 高速暂存存储器由 9 个字节组成,其分配如下图所示。当温度转换命令发 布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第 0 和第 1 个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位 在后,数据格式如图所示。对应的温度计算:当符号位 S=0 时,直接将二进 制位转换为十进制;当 S=1 时,先将补码变为原码,再计算十进制值。 温 度低位 温 度高位 THTL 配 置 保 留 保 留 保 留 8 位 CRC LSB DS18B20 存储器映像图 MSB 温度值格式图 DS18B20 温度数据表: 2 23 32 22 22 21 12 20 02 2-1-12 2-2-22 2-3-32 2-4-4 MSBMSBLSBLSB S SS SS SS SS S2 26 62 25 52 24 4 典型对应的温度值表: 温度/二进制表示十六进制表示 +125 +25.0625 +10.125 07D0H 0191H 00A2H 山东交通学院 课程设计任务书 +0.5 0 -0.5 -10.125 -25.0625 -55 0008H 0000H FFF8H FF5EH FE6FH FC90H 1.5 DS18B20 的应用电路的应用电路 DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据 I/O 均由同 一条线来完成。 硬件连接电路如下图: A T89C5 1 D S18 B20 1 # D S18 B20 2 # D S18 B20 3 # D S18 B20 2 0# V CC=5 V 4 .7 K 1 WIRE 本系统为多点温度测试。DS18B20 采用外部供电方式,理论上可以在一根 数据总线上挂 256 个 DS18B20,但时间应用中发现,如果挂接 25 个以上的 DS18B20 仍旧有可能产生功耗问题。另外单总线长度也不宜超过 80M,否则 也会影响到数据的传输。在这种情况下我们可以采用分组的方式,用单片机 的多个 I/O 来驱动多路 DS18B20。在实际应用中还可以使用一个 MOSFET 将 I/O 口线直接和电源相连,起到上拉的作用。 山东交通学院 课程设计任务书 1.6 DS18B20 的注意事项的注意事项 对 DS18B20 的设计,需要注意以下问题 (1)对硬件结构简单的单线数字温度传感器 DS18B20 进行操作,需要用 较为复杂的程序完成。编制程序时必须严格按芯片数据手册提供的有关操作 顺序进行,读、写时间片程序要严格按要求编写。尤其在使用 DS18B20 的高 测温分辨力时,对时序及电气特性参数要求更高。 (2)有多个测温点时,应考虑系统能实现传感器出错自动指示,进行自动 DS18B20 序列号和自动排序,以减少调试和维护工作量。 (3)测温电缆线建议采用屏蔽 4 芯双绞线,其中一对线接地线与信号线, 另一组接 VCC 和地线,屏蔽层在源端单点接地。DS18B20 在三线制应用时, 应将其三线焊接牢固;在两线应用时,应将 VCC 与 GND 接在一起,焊接牢 固。若 VCC 脱开未接,传感器只送 85.0 的温度值。 (4)实际应用时,要注意单线的驱动能力,不能挂接过多的 DS18B20, 同时还应注意最远接线距离。另外还应根据实际情况选择其接线拓扑结构。 山东交通学院 课程设计任务书 二二 理论分析及流程图理论分析及流程图 整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软 件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软 件(主程序) ,它是整个控制系统的核心,专门用来协调各执行模块和操作者 的关系。二是执行软件(子程序) ,它是用来完成各种实质性的功能如测量、 计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里 将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各 执行模块规划好后,就可以规划监控程序了。 首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构, 然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。 山东交通学院 课程设计任务书 2.1:主电路程序方案:主电路程序方案 主程序调用了 4 个子程序,分别是数码管显示程序、温度测试程序、中断 控制程序、单片机与 PC 机串口通讯程序。 温度测试程序:对温度芯片送过来的数据进行处理,进行判断和显示。 数码管显示程序:向数码的显示送数,控制系统的显示部分。 中断控制程序:实现循环显示功能。串口通讯程序:实现 PC 机与单片机 通讯。 2.2 读取温度子程序流程图读取温度子程序流程图 将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子 程序,然后在寄存器的分配上作一下调整,消除寄存器冲突和 I/O 冲突即可。 程序应该尽可能多的使用调用指令代替跳转指令。因为跳转指令使得程序难 以看懂各程序段之间的结构关系。而调用指令则不同,调用指令使得程序结 构清晰,无论是修改还是维护都比较方便。将功能程序段写成子程序的形式, 除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就 可以直接调用这个单元功能模块。 山东交通学院 课程设计任务书 2.3 温度转换命令子程序流程图温度转换命令子程序流程图 中断控制程序设计: 山东交通学院 课程设计任务书 中断入口 到否 定时器重新赋值 装下一个温度显示 存储单元地址 返回 中断入口 到否 定时器重新赋值 装下一个温度显示 存储单元地址 返回 串口通信程序设计串口通信程序设计: 软件流程图如下: 单片机程序流程图 PC 通讯程序流程图 开始 自动接收数据子程序 读一个数据且存储 回复55H 接受字节数据 是联络信号AAH? 返回 8个字节到否? N Y N Y 开始 自动接收数据子程序 读一个数据且存储 回复55H 接受字节数据 是联络信号AAH? 返回 8个字节到否? N Y N Y 开始 发联络信号AAH 发储存单元数据 是联络信号55H? N Y 返回 开始 发联络信号AAH 发储存单元数据 是联络信号55H? N Y 返回 山东交通学院 课程设计任务书 三三 电路与程序设计电路与程序设计 3.1 读读 DS18B20 ROM 程序程序 /*1ds1820 序列号获得*/ ; 数码管显示八组(64 位)ROM 数据 A_BIT EQU 35H ; B_BIT EQU 36H ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H CLR EA ;使用 ds1820 一定要禁止任何中断产生 LCALL INT ;初始化 ds1820 MOV A,#33H LCALL WRITE ;送入读 ds1820 的 ROM 命令 LCALL READ ;开始读出当前 ds1820 序列号 MOV 40H,A LCALL READ MOV 41H,A LCALL READ MOV 42H,A LCALL READ MOV 43H,A LCALL READ MOV 44H,A LCALL READ MOV 45H,A 山东交通学院 课程设计任务书 LCALL READ MOV 46H,A LCALL READ MOV 47H,A LCALL DISPLAY SETB EA SJMP $ DISPLAY: mov r2,#8 MOV R4,#0 mov r1,#40H LOOP:mov a,r1;将 ram 中的十六进制数转换成 10 进制 mov b,#16 ;10 进制/10=10 进制 div ab mov b_bit,a ;十位在 a mov a_bit,b ;个位在 b mov dptr,#TAB ;指定查表启始地址 clr p2.2; mov r0,#250 MOV R3,#10 dplop: mov a,a_bit ;取个位数 MOVC A,A+DPTR ;查个位数的 7 段代码 setb p2.1;开个位显示 clr p2.0; mov p0,a ;送出个位的 7 段代码 acall d1ms 山东交通学院 课程设计任务书 acall d1ms ;显示 1ms mov p0,#0 mov a,b_bit ;取十位数 MOVC A,A+DPTR ;查十位数的 7 段代码 SETB p2.0;开十位显示 clr p2.1; mov p0,a ;送出十位的 7 段代码 acall d1ms ;显示 1ms acall d1ms mov p0,#0 mov a,R4 ;取十位数 MOVC A,A+DPTR ;查十位数的 7 段代码 CLR p2.0;开十位显示 clr p2.1; mov p0,a ;送出十位的 7 段代码 acall d1ms ;显示 1ms acall d1ms mov p0,#0 djnz r0,dplop ;4 个 100 次没完循环 djnz r3,dplop INC R1 INC R4 DJNZ r2,LOOP RET ;* D1MS: MOV R7,#80 ;1MS 延时(按 12MHZ 算) DJNZ R7,$ 山东交通学院 课程设计任务书 RET TA: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7cH,39H,5eH,79H,71H RET INT: ;初始化 ds1820 子程序 CLR EA L0:CLR P2.3 ;ds1820 总线为低复位电平 MOV R2,#200 L1:CLR P2.3 DJNZ R2,L1 ;总线复位电平保持 400us SETB P2.3 ;释放 ds1820 总线 MOV R2,#30 L4:DJNZ R2,L4 ;释放 ds1820 总线保持 60us CLR C ;清存在信号 ORL C,P2.3 JC L0 ;存在吗?不存在则重新来 MOV R6,#80 L5:ORL C,P2.3 JC L3 DJNZ R6,L5 SJMP L0 L3:MOV R2,#240 L2:DJNZ R2,L2 RET WRITE: ;向 ds1820 写操作命令子程序 CLR EA MOV R3,#8 ;写入 ds1820 的 bit 数,一个字节 8 个 bit WR1:SETB P2.3 山东交通学院 课程设计任务书 MOV R4,#8 RRC A ;把一个字节 data(A)分成 8 个 bit 环移给 C CLR P2.3 ;开始写入 ds1820 总线要处于复位(低)状态 WR2:DJNZ R4,WR2 ;ds1820 总线复位保持 16us MOV P2.3,C ;写入一个 bit MOV R4,#20 WR3:DJNZ R4,WR3 ;等待 40us DJNZ R3,WR1 ;写入下一个 bit SETB P2.3 ;重新释放 ds1820 总线 RET READ: CLR EA MOV R6,#8 ;连续读 8 个 bit RE1:CLR P2.3 ;读前总线保持为低 MOV R4,#4 NOP SETB P2.3 ;开始读总线释放 RE2:DJNZ R4,RE2 ;持续 8us MOV C,P2.3 ;从 ds1820 总线读得一个 bit RRC A ;把读得的位值环移给 A MOV R5,#30 RE3:DJNZ R5,RE3 ;持续 60us DJNZ R6,RE1 ;读下一个 bit SETB P2.3 ;重新释放 ds1820 总线 RET END 山东交通学院 课程设计任务书 3.2 温度采集主程序温度采集主程序 #include #include #define uchar unsigned char #define uint unsigned int uchar data disdata5; uchar code table10 = 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; uchar code LED_W8 = 0,1,2,3,4,5,6,7; uint tvalue;/温度值 uchar tflag;/温度正负标志 /*灵活改动 */ uchar d=3;/总路数 灵活改动 sbit DQ=P23;/数据引脚 uchar code str38=0 x28,0 x96,0 x24,0 x84,0 x03,0 x00,0 x00,0 xC9,0 x28,0 x83,0 x1B,0 x1E, 0 x02,0 x00,0 x00,0 xC3,0 x28,0 x32,0 x51,0 x31,0 x03,0 x00,0 x00,0 xE6;/ROM 序 列号 0n 路 /*以上三个量灵活 改动*/ /*ds1820 程序 */ void delay1ms(uint ms)/延时 1 毫秒(不够精确的) uint i,j; for(i=0;ims;i+) for(j=0;j=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0 x80; delay_18B20(10); return(dat); void ds1820wr(uchar dat)/*写数据*/ uchar i=0; 山东交通学院 课程设计任务书 for (i=0; i=1; void b20_Matchrom(uchar a) /匹配 ROM char j; ds1820wr(0 x55); /发送匹配 ROM 命令 for(j=0;j8;j+) ds1820wr(straj);/发送 18B20 的序列号,先发送低字节 read_temp(uchar z)/*读取温度值并转换*/ uchar a,b; float tt; ds1820rst(); ds1820wr(0 xcc);/读序列号 ds1820rst(); b20_Matchrom(z); /匹配 ROM ds1820wr(0 x44);/*启动温度转换*/ delay1ms(5); ds1820rst(); ds1820wr(0 xcc);/读序列号 ds1820rst(); 山东交通学院 课程设计任务书 b20_Matchrom(z); /匹配 ROM ds1820wr(0 xbe);/*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvalue0 x0fff) tflag=0; else tvalue=tvalue+1; tflag=1; tt=tvalue*0.0625; tvalue=tt*10; return(tvalue); /* * 名称 : ds1820disp(uchar z) 功能 : 数码管的显示 输入 : 无 输出 : 无 * */ void ds1820disp(z)/温度值显示 int c; disdata0=tvalue/1000+0 x30;/百位数 山东交通学院 课程设计任务书 disdata1=tvalue%1000/100;/十位数 disdata2=tvalue%100/10;/个位数 disdata3=tvalue%10+0 x30;/小数 for(c=0;c200;c+) P0 = tablez; / 路数 P2 = LED_W4; /点亮第一位数码管 delay1ms(3); P0 = tabledisdata1; / i 值的十位数 P2 = LED_W6; /点亮第二位数码管 delay1ms(3); P0 = tabledisdata2; / i 值的个位数 P2 = LED_W7; /点亮第三位数码管 delay1ms(3); /*主程序*/ void main() int z; while(1) for(z=0;zd;z+) read_temp(z);/读取温度 ds1820disp(z);/显示 山东交通学院 课程设计任务书 四四 设计总结设计总结及心得体会及心得体会 通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设 计过程中虽然遇到了一些问题,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论