欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    PIC 单片机的多路温度巡回检测系统毕业论文.doc

    • 资源ID:3931957       资源大小:67.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PIC 单片机的多路温度巡回检测系统毕业论文.doc

    PIC 单片机的多路温度巡回检测系统 摘要: 摘要:本文介绍了一种基于 PIC16F877A 单片机,利用 DS18B20 对 多路温度采集,并进行温度的控制与检测,并通过 12864 液晶显示 出来。系统中通过控制按钮实现了实时各路的报警温度,并且实现 多路与任一单路温度显示切换,从而既可以进行多路的检测又可以 进行任一单路的监控,而且还有数字跟图形两种显示方式更为直 观。在温度超过设定温度时温度跟时间通过 24C02 存储起来,以便 查看,同时可以通过固定电话远程报警,还能将温度上传至 PC 机, 进行后续处理。 目录 1 2 系统设计 4 主芯片: 主芯片:PIC16F877A 单片机简介 5 2.1 2.2 2.3 PIC 单片机的优越之处: 5 PIC16F877A 引脚图及主要性能 6 最小系统 8 2.3.1 复位功能 8 2.3.2 系统时钟 8 2.4 3 3.1 3.2 设计心得总结 9 液晶显示模块概述 9 液晶引脚说明 9 液晶原理 原理介绍及接口实现 LCD12864 液晶原理介绍及接口实现 9 3.3 接口时序 10 3.4 具体指令介绍 12 3.5 显示坐标关系 15 3.5.1、图形显示坐标 15 3.5.2 3.7 4 汉字显示坐标 17 3.6 与单片机的接口实现 18 设计心得总结 18 DS18B20 原理介绍及接口实现 19 4.1 DS18B20 简介 19 4.2 4.3 DS18B20 结构及其工作原理 19 DS18B20 的接口实现 26 4.3.1 硬件设计 26 4.3.2 软件设计 26 4.4 设计心得总结 27 4.4.1 焊接问题: 27 4.4.2 软件设计: 28 4.4.3 不足: 28 5 存储芯片 AT24C02 简单介绍及接口实现 28 5.1 5.2 5.3 AT24C02 功能描述管脚定义 28 管脚定义及接口实现 29 设计心得 30 6 实时时钟 DS1302 简单介绍及接口实现 30 6.1 DS1302 简介 30 6.2 DS1302 结构及工作原理 31 6.3 7 DS1302 的接口实现 32 温度上限报警功能 34 7.1 设计原理 34 7.2 设计心得体会 34 8 与 PC 串口通讯及 VB 上位机简单介绍 35 8.1 与 PC 串口通信 35 8.2 上位机介绍 36 9 总结 40 附录 40 部分原理图: 部分原理图: 40 参考文献 41 致谢 错误!未定义书签。 基于 PIC 单片机的多路温度监控巡回系统 1 系统设计 在工业生产和日常生活中,经常要对温度进行测量与控制,并且有时是对 多个点进行温度测量,比如冷库温度监控、环境温度监测、农业温室监控、粮 库温度监控等。在这种情况下,多点温度检测系统应运而生。多点温度检测系 统通常能够对多个工作点的温度进行检测,显示当前温度,并能够对温度进行 存储和报警,还能将温度上传至 PC 机,进行后续处理。传统的测温元件有热电 偶和热电阻,需很多硬件支持并且电路复杂。本文将设计一款由新型的数字温 度传感器 DS18B20 配合单片机,具有温度检测、显示、存储、自动统计分析及 跟电脑通讯连接还利用固定电话远程报警等功能的多点温度监控系统。 30 多路温度 监控系统 固话 报警 4 * 温度传感器 图 1.1 多路温度监控系统模拟应用 PC 机通讯 温度监控主系统构架框图如图 1.2 所示: 12864 液晶显示 四路温度 采集 AT24C02 温度储存 PIC16F877A 单片机 实时时钟 上限报警 接口 PC 机通讯 图 1.2 多路温度监控系统构架框图 按键控制 图 1.3 手工焊接实物图 主要技术参数 A 温度检测范围 : B 测量精度 : C 显示方式: D 报警方式: -55+125 ± 0.0625 LCD12864 显示 固话报警 2 主芯片:PIC16F877A 单片机简介 主芯片: 2.1 PIC 单片机的优越之处: (1)哈佛总线结构: MCS-51 单片机的总线结构是冯-诺依曼型,计算机 在同一个存储空间取指 令和数据,两者不能同时进行;而 PIC 单片机的总线结构是哈佛结构,指令和数据空 间是完全分开的,一个用于指令,一个用于数据,由于 可以对程序和数据同时进行 访问,所以提高了数据吞吐率。正因为在 PIC 单片机中采用了哈佛双总线结构, 所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。 数据总线都是 8 位的,但指令总线位数分别位 12、14、16 位。 (2)流水线结构: MCS-51 单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完 后再取下一条指令;而 PIC 的取指和执行采用双指令流水线结构,当一条指令被执 行时,允许下一条指令同时被取出,这样就实现了单周期指令。 (3)寄存器组: PIC 单片机的所有寄存器,包括 I/O 口,定时器和程序计数器等都采用 RAM 结构形式,而且都只需要一个指令周期就可以完成访问和操作;而 MCS-51 单片机 需要两个或两个以上的周期才能改变寄存器的内容。 (4)运行速度高: 由于采用了哈佛总线结构,以及指令的读取和执行才用了流水作业方式,使得 运行速度大大提高。 (5)功耗低: PIC 单片机的功率消耗极低,是目前世界上最低的单片机品种之一。在 4MHz 时 钟下工作时耗电不超过 2mA,在睡眠模式下耗电可以低到 1uA 以下。 (6)驱动能力强: I/O 端口驱动负载的能力较强,每个 I/O 引脚吸入和输出电流的最大值可分别达 到 25mA 和 20mA,能够直接驱动发光二极管 LED、光电耦合器或者轻微继电器 等。 (7)外接电路简洁 PIC 单片机片内集成了上电复位电路、I/O 引脚上拉电路、看门狗定时器等,可 以最大程度减少或免用外接器件,以便实现“纯单片机”应用。这样,不仅方便 于开发,而且还可节省用户的电路空间和制作成本。 (8)程序保密性强 目前,尚无办法对其直接进行解密拷贝,可以最大限度的保护用户的程序版 权。 2.2 PIC16F877A 引脚图及主要性能 PIC16F877A 的详细引脚如图 2.21 所示。 图 2.2-1 PIC16F877A 引脚图 图 2.2 -2 PIC16F877A 实物图 主要性能参数如下所示: 具有高性能 RISC 仅有 35 条单字指令 100000 次擦写周期 除程序分支指令为两个周期外,其余均为单周期指令 运行速度: DC20MHZ 始终输入 DC200ns 指令周期 8K * 14 个 FLASH 程序存储器 368 * 8 个数据存储器(RAM)字节 256 * 8 EEPRM 数据存储器字节 提供 14 个中断源 功耗低 在 5V, 4MHZ 时钟运行时电流小于 2mA 在 3V, 32KHZ 时钟运行时电流小于 20Ua 支持在线串行编程(ICSP) 运行电压范围广,2.0V 到 5.5V 输入及输出电流可达到 25mA Timer0:带有预分频器的 8 位定时器/计数器 Timer1:带有预分频器的 16 位定时器/计数器,在使用外部晶振 CPU 震荡时钟时,在睡眠期间仍能工作 Timer2:带有 8 位周期寄存器,预分频器和后分频器的 8 位定时 器/计数器。 2 个捕捉器,比较器,PWM 模块 其中: 捕捉器是 16 位,最大分辨率是 12.5ns 比较器是 16 位,最大分辨率是 200ns PWM 最大分辨率是 10 位 10 位多通道模数转换器 2.3 最小系统 2.3.1 复位功能 PIC16F877A 的复位功能设计得比较完善,实现复位或引起复位的条件和原 因可以归纳成 4 类:人工复位、上电复位、看门狗复位、欠压复位。 这里简单介绍一下人工复位 人工复位:无论是单片机在正常运行程序,还是处在睡眠状态或出现死机 状态,只要在人工复位端 MCLR 加入低点平信号,就令其复位。 本次设计的电路图如图 2.31 所示。 图 2.31 PIC 最小系统电路图 2.3.2 系统时钟 图 2.32 最小系统实物图 数字电路的工作离不开时钟信号,每一步细微动作都是在一个共同的时间 基准信号协调下完成的。作为时基发生器的时钟震荡电路,为整个单片机芯片 的工作提供系统时钟信号,也为单片机与其他外接芯片之间的通讯提供可靠的 同步时钟信号。 PIC16F877A 的时钟电路是由片内的一个反相器和一个反馈电阻,与外接 的 1 个石英晶体和 2 个电容,共同构成的一个自激多谐振荡器。电路如图 2.31 所示。 2.4 设计心得总结 PIC16F877A 的最小系统跟 51 相似, 较为简单。 芯片自身增加了很多功能, 如:自带 8 路 AD 转换、增加 SPI 总线,引脚复位功能多等。芯片自身功能的增 加给设计带来了很多灵活性,同时也是学习的难点。 3 LCD12864 液晶原理介绍及接口实现 液晶原理 原理介绍及接口实现 3.1 液晶显示模块概述 12864A-1 汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉 字 (16X16 点阵) 、128 个字符 (8X16 点阵) 64X256 点阵显示 RAM 及 (GDRAM) 。 主要技术参数和显示特性: 电源:VDD 3.3V+5V(内置升压电路,无需负压); 显示内容:128 列× 64 行 显示颜色:黄绿 显示角度:6:00 钟直视 LCD 类型:STN 与 MCU 接口:8 位或 4 位并行/3 位串行 配置 LED 背光 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等 3.2 液晶引脚说明 引 脚 引脚名称 号 1 2 3 4 5 6 7 8 9 10 VSS VDD V0 RS(CS) R/W(SID) E(CLK) DB0 DB1 DB2 DB3 H/L H/L H/L H/L H/L H/L H/L 模块的电源地 模块的电源正端 LCD 驱动电压输入端 并行的指令/数据选择信号;串行的片选信 号 并行的读写选择信号;串行的数据口 并行的使能信号;串行的同步时钟 数据 0 数据 1 数据 2 数据 3 方向 功能说明 11 12 13 14 15 16 17 18 19 20 DB4 DB5 DB6 DB7 PSB NC /RET NC LED_A LED_K H/L H/L H/L H/L H/L H/L - 数据 4 数据 5 数据 6 数据 7 并/串行接口选择:H-并行;L-串行 空脚 复位 低电平有效 空脚 背光源正极(LED+5V) 背光源负极(LED-OV) 逻辑工作电压(VDD):4.55.5V 电源地(GND):0V 工作温度(Ta):060(常温) / -2075(宽温) 3.3 接口时序 模块有并行和串行两种连接方法,本文采用并行接法(时序如下): 8 位并行连接时序图 MPU 写资料到模块 程序实现如下: /* * 名 * 功 称:send_i() 能:写一个字节命令到 LCD * 入口参数:unsigned char x 字符 */ void send_i(unsigned char x) chk_busy(); rs = 0; rw = 0; PORTD = x; e = 1; nop(); nop(); nop(); e = 0; MPU 从模块读出资料 /禁止 /检测 LCD 是否工作繁忙 /设置该字节数据为控制命令 /设置此次操作为写 /送数据口 PORTD /使能 程序实现如下: /* 读数据 */ unsigned char u8_Lcd12864ReadByte_f( void ) unsigned char byReturnValue ; chk_busy() ; /检测 LCD 是否工作繁忙 TRISD=0XFF; /设置 PD 口为输入状态 PORTD = 0xff ; /PD 初始化为高电平 rs=1; rw=1; e=0; e=1; byReturnValue = PORTD ; / 读置高 / 写置高 / 使能置低 / 使能置高 / 读数据 e=0; TRISD=0X00; return byReturnValue ; / 关使能 / 恢复 PD 口为输出 / 返回读到的数据 3.4 具体指令介绍 具体指令介绍 1、清除显示 CODE: DB0 L 2、位址归位 CODE: DB0 L DDRAM 3、位址归位 CODE: DB0 L L L L L L L H I/D S 功能:把 DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示 DDRAM 功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始 行是由 Z 地址计数器控制的,该命令自动将 A0-A5 位地址送入 Z 地址计数器, 起始地址可以是 0-63 范围内任意一行。Z 地址计数器具有循环计数功能,用于 显示行扫描同步,当扫描完一行后自动加一。 4、显示状态 开/关 CODE: DB0 L L L L L L H D C B 功能: D=1;整体显示 ON 5、游标或显示移位控制 CODE: DB0 L L L L L H S/C R/L X X 功能:设定游标的移动与显示的移位控制位:这个指令并不改变 DDRAM 的 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 C=1;游标 ON B=1;游标位置 ON RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L L L H X 功能:把 DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L L L L H 功能:清除显示屏幕,把 DDRAM 位址计数器调整为“00H” RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 内容 6、功能设定 CODE: DB0 L 集动作 7、设定 CGRAM 位址 CODE: DB0 L L L H AC5 AC4 AC3 AC2 AC1 AC0 功能:设定 CGRAM 位址到位址计数器(AC) 8、设定 DDRAM 位址 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 CODE: DB0 L L H AC6 AC5 AC4 AC3 AC2 AC1 AC0 功能:设定 DDRAM 位址到位址计数器(AC) 9、读取忙碌状态(BF)和位址 CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L H BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计 数器(AC)的值 10、写资料到 RAM CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H L D7 D6 D5 D4 D3 D2 D1 D0 功能:写入资料到内部的 RAM(DDRAM/CGRAM/TRAM/GDRAM) 11、读出 RAM 的值 CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H 12、 DB0 H D7 D6 D5 D4 D3 D2 D1 D0 功能:从内部 RAM 读取资料(DDRAM/CGRAM/TRAM/GDRAM) 待命模式(12H) RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L H DL X 0 RE X X 功能:DL=1(必须设为 1) RE=1;扩充指令集动作 RE=0:基本指令 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L L L L L H 功能:进入待命模式,执行其他命令都可终止待命模式 13、卷动位址或 IRAM 位址选择(13H) CODE: DB0 L L L L L L L L H SR 功能:SR=1;允许输入卷动位址 14、反白选择(14H) CODE: DB0 L L L L L L L H R1 R0 功能:选择 4 行中的任一行作反白显示,并可决定反白的与否 15、睡眠模式(015H) CODE: DB0 L L L L L L H SL X X 功能:SL=1;脱离睡眠模式 16、扩充功能设定(016H) CODE: DB0 L L L L H H X 1 RE G L G=1;绘图显示 功能:RE=1;扩充指令集动作 ON G=0;绘图显示 OFF 17、设定 IRAM 位址或卷动位址(017H) CODE: DB0 L L L H AC5 AC4 AC3 AC2 AC1 AC0 功能:SR=1;AC5AC0 为垂直卷动位址 位址 18、设定绘图 RAM 位址(018H) CODE: DB0 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 SR=0;AC3AC0 写 ICONRAM RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 RE=0;基本指令集动作 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 SL=0;进入睡眠模式 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 SR=0;允许输入 IRAM 位址 RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L H AC6 AC5 AC4 AC3 AC2 AC1 AC0 功能:设定 GDRAM 位址到位址计数器(AC) 备注、 1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读 取 BF 标志时 BF 需为 0,方可接受新的指令;如果在送出一个指令前并不检查 BF 标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等 待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说 明。 2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元 后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用 相同指令集时,不需每次重设“RE”位元。 本次设计液晶初始化如下: void lcd_init() rst = 0; delay(1); rst = 1; / / nop(); psb = 1; /设置 LCD 为 8 位并口通信 /基本指令操作 /清除显示 /指定在写入或读取时,光标的移动方向 /开显示,关光标,不闪烁 /复位 LCD /保证复位所需要的时间(1ms) /恢复 LCD 正常工作 send_i(0x30); send_i(0x01); send_i(0x06); send_i(0x0c); 3.5 显示坐标关系 3.5.1 图形显示坐标 3.5.1、图形显示坐标 水平方向 X以字节单位 垂直方向 Y以位为单位 /* 函数名称:Draw_PM 功 能:在整个液晶屏幕上画图 参 数:无 返回值 :无 */ void Draw_PM(const uchar *ptr) uchar i,j,k; send_i(0x34); /打开扩展指令集 i = 0x80; for(j = 0;j < 32;j+) send_i(i+); send_i(0x80); for(k = 0;k < 16;k+) send_d(*ptr+); i = 0x80; for(j = 0;j < 32;j+) send_i(i+); send_i(0x88); for(k = 0;k < 16;k+) send_d(*ptr+); send_i(0x36); send_i(0x30); /打开绘图显示 /回到基本指令集 3.5.2 3.5.2 汉字显示坐标 X 坐标 Line1 Line2 Line3 Line4 * 名 * 功 80H 90H 88H 98H 81H 91H 89H 99H 82H 92H 8AH 9AH 83H 93H 8BH 9BH 84H 94H 8CH 9CH 85H 95H 8DH 9DH 86H 96H 8EH 9EH 87H 97H 8FH 9FH /* 称: writelcd() 能: 在 LCD 上显示字符串 * 入口参数:const unsigned char *pt 字符串的首地址 */ void writelcd(const unsigned char *pt) while(*pt) send_d(*pt+); / 应用如下 const uchar table1 =" const uchar table2 =" const uchar table3 =" send_i(0x80); writelcd(table1); send_i(0x90); writelcd(table2); send_i(0x88); writelcd(table3); send_i(0x98); 基 PIC 单片机" 多路温度" 巡回检测系统" / 定位在第一行 / 写:基 PIC 单片机 / 定位在第二行 / 写:多路温度 / 定位在第三行 / 写:巡回检测系统 / 定位在第四行 /检测是否达到了字符串最后 /发送数据给 lcd const uchar table4 ="2009 年 12 月 01 日" writelcd(table4); / 写:2009 年 12 月 01 日 3.6 与单片机的接口实现 12864 液晶的电路连线图如图 3.6 -1 所示,实物位置如图 3.6 -2 所示 图 3.6 -1 12864 液晶电路连接图 图 3.6 -2 12864 液晶模块实物图 3.7 设计心得总结 LCD12864 与 1602 相比需要较大的电流驱动,如果出现图片模糊不清晰或 者灰暗, 除了检查背光灯外应考虑电源问题。 最好采用大于 5V 的电源, 7805 经 稳压管稳压驱动,以保证电流。基本驱动跟 1602 相似难度不大。中文及图像显 示是 12864 最大的特点也是难点,主要是指令较多,还有就是图像驱动需要了 解液晶内部原理。整屏画图可以使用 PCtoLCD2002 把图片转换成 16 进制数, 局部画曲线、直线、圆等需要一些算法,比较复杂 4 DS18B20 原理介绍及接口实现 4.1 DS18B20 简介 DS18B20 是 DALLAS 半导体公司推出的第一片支持“一线总线”接口的温度 传感器,他它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等 优点,可直接将温度转化成串行数字信号供处理器处理。DS18B20 具有以下优 点: (1) 适应电压范围宽,电压范围在 3.0V5.5V,在寄生电源方式下可由数 据线供电。 (2) 独特的单线接口方式,与微处理器连接时只需要一条口线即可实现 微处理器与 DS18B20 的双向通信。 (3) 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组 网多点测温。 (4) 在使用中不需要任何外围元件,全部传感元件以及转换电路集成在 形如一直三极管的集成电路内。 (5) 测温范围-55+125,在-10+85时进度为±0.5 (6) 可 编 程 分 辨 率 为 912 位 , 对 应 的 可 分 辨 温 度 分 别 为 0.5 、 0.25、0.125和 0.0625,可实现高精度测温。 (7) 负压特性。电源极性接反时,芯片不会因为过热而烧毁,但不能正 常工作。 4.2 DS18B20 结构及其工作原理 图 4.1DS18B20 内部结构图 DS18B20 的内部结构图如图 4.1 所示。由此我们可以看出 DS18B20 主要由 4 部分组成:64 位 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄 存器。DS18B20 的管脚排列如图 4.2 所示,其中 DQ 为数字信号输入输出端; GND 为电源地;VDD 为外接供电电源输入端,在寄生电源接线方式时接地。 图 4.2 DS18B20 引脚和封装 每颗 DS18B20 在出厂前都有一个 64 位光刻 ROM,它可以看作该 DS18B20 的地 址序列码。其各位排列顺序是:开始 8 位为产品类型标号,接下来 48 位是该 DS18B20 自 身 的 序 列 号 , 最 后 8 位 是 前 面 56 位 的 CRC 循 环 冗 余 校 验 码 (CRC=X +X +X +1)。光刻 ROM 的作用是使每一个 DS18B20 都各不相同,这样就 可以实现一条总线 挂接多个 DS18B20 的目的。 由于 DS18B20 是在一根 I/O 线上读写数据,因此,对读写的数据位有着严格 的时序要求。DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整 性。该协议定义了几种信号的时序:复位时序、读时序、写时序。所有时序都 是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都 是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令 后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 (1) DS18B20 的复位时序: 8 5 4 图 4.3 DS18B20 复位时序图 程序实现如下: /* * 名 * 功 称:reset() 能:18b20 复位 */ #define DQ RB7 #define DQ_HIGH() TRISB7=1 #define DQ_LOW() TRISB7=0;DQ=0 void reset() uchar st=1; DQ_HIGH(); NOP();NOP(); while(st) DQ_LOW(); delayus(70,30); DQ_HIGH(); delayus(4,4); if(DQ=1) st=1; else st=0; delayus(50,10); (2) DS18B20 的读时序: 对于 DS18B20 的读时序分为读 0 时序和读 1 时序两个过程。 对于 DS18B20 的读时隙是从主机把单总线拉低之后,在 15uS 之内释放单总 线,以让 DS18B20 把数据传输到单总线上。DS18B20 在完成一个读时序过程,至 少需要 60us 才能完成。 /延时 430us /接收到应答信号 / 低电平 / 延时 503us /释放总线等电阻拉高总线 /延时 60us /没有接收到应答信号,继续复位 / 先拉至高电平 图 4.4 DS18B20 读时序图 /* * 名 * 功 称:read_byte() 能:18b20 读字节 * 出口参数:读出 18B20 的内容 */ uch read_byte() uch i; uch value = 0; static bit j; for (i = 8;i > 0;i-) value >>= 1; DQ_LOW(); NOP();NOP();NOP();NOP();NOP();NOP(); DQ_HIGH(); NOP();NOP();NOP();NOP();NOP(); j = DQ; if (j) value |= 0x80; delay(2, 7); return (value); (3) DS18B20 的写时序: 对于 DS18B20 的写时序仍然分为写 0 时序和写 1 时序两个过程。 对于 DS18B20 写 0 时序和写 1 时序的要求不同,当要写 0 时序时,单总线要 被拉低至少 60us,保证 DS18B20 能够在 15us 到 45us 之间能够正确地采样 IO 总 线上的“0”电平,当要写 1 时序时,单总线被拉低之后,在 15us 之内就得释放 单总线。 /63us /6us /拉至高电平 /4us /读出温度 图 4.5 DS18B20 写时序图 /* * 名 * 功 称:write_byte() 能:写 18b20 写字节 * 入口参数:uch val 待写的数据 */ void write_byte(uch val) uch i; uch temp; for (i = 8;i > 0;i-) temp = val & 0x01; DQ_LOW(); NOP();NOP();NOP();NOP();NOP(); /从高拉至低电平,产生写时间隙 if (temp = 1) DQ_HIGH(); delay(2, 7); DQ_HIGH(); NOP();NOP(); val = val >> 1; DS18B20 内部带有共 9 个字节的高速暂存器 RAM 和电可擦除 EEPROM,起结构 如表 2 所示。 表 2 DS18B20 高速暂存器结构 寄存器内容 温度值低位(LSB) 温度值高位(MSB) 字节地址 0 1 /最低位移出 /如果写 1,拉高电平 /延时 63us /右移一位 高温限值(TH) 低温限值(TL) 配置寄存器 保留 保留 保留 CRC 校验值 2 3 4 5 6 7 8 DS18B20 所包含的操作指令如表 3 所示。 表 3 DS18B20 操作指令 ROM 操作指令 指令 约定代 码 读 ROM 匹配 ROM 33H 55H 读 DS18B20 温度传感器 ROM 中的编码(即 64 位地址) 发出命令后接着发出 64 位 ROM 编码,访问总线上与该编码对应的 芯片 搜索 ROM 跳过 ROM 告警搜索 F0H CCH ECH 用于确定挂接在同一总线上 DS18B20 的个数 忽略 64 位 ROM 地址,直接向 DS18B20 发温度变换命令 执行后只有问多超过上限或下限的芯片才响应 RAM 操作指令 指令 约定代 码 温度转换 读暂存器 写暂存器 44H BEH 4EH 启动 DS18B20 温度转换。12 位转换时长典型值 750ms 读内部 RAM 中 9 字节的数据。 向 RAM 第 2、3 字节写上、下限温度数据,紧跟命令之后传送 2 字 节数据 复制暂存 器 重调 EEPROM B8H 将 EEPROM 中内容恢复到 RAM 中第 3、4 字节 48H 将 RAM 中第 2、3 字节的内容复制到内部 EEPROM 中 功能 功能 温度数据在高速暂存器 RAM 的第 0 和第 1 个字节中的存储格式如下表 4 所 示。 表 4 DS18B20 温度数据存储格式 位7 2 3 位6 2 2 位5 2 1 位4 2 0 位3 2 -1 位2 2 -2 位1 2 -3 位0 2 -4 位 15 S 位 14 S 位 13 S 位 12 S 位 11 S 位 10 2 6 位9 2 5 位8 2 4 DS18B20 在出厂是默认配置为 12 位,其中最高位为符号位,即温度值共 11 位,单片机在读取数据时,一次会读 2 字节共 16 位,读完后将低 11 位的二进制 数转化为十进制数后再乘以 0.0625 便为所测的实际温度值。另外,还需要判断 温度的正负。前 5 个数字为符号位,这 5 位同时变化,我们只需要判断 11 位就 可以了。前 5 位为 1 时,读取的温度为负值,

    注意事项

    本文(PIC 单片机的多路温度巡回检测系统毕业论文.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开