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

上传人:文库蛋蛋多 文档编号:3931957 上传时间:2023-03-28 格式:DOC 页数:15 大小:67.50KB
返回 下载 相关 举报
PIC 单片机的多路温度巡回检测系统毕业论文.doc_第1页
第1页 / 共15页
PIC 单片机的多路温度巡回检测系统毕业论文.doc_第2页
第2页 / 共15页
PIC 单片机的多路温度巡回检测系统毕业论文.doc_第3页
第3页 / 共15页
PIC 单片机的多路温度巡回检测系统毕业论文.doc_第4页
第4页 / 共15页
PIC 单片机的多路温度巡回检测系统毕业论文.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《PIC 单片机的多路温度巡回检测系统毕业论文.doc》由会员分享,可在线阅读,更多相关《PIC 单片机的多路温度巡回检测系统毕业论文.doc(15页珍藏版)》请在三一办公上搜索。

1、 PIC 单片机的多路温度巡回检测系统 摘要: 摘要:本文介绍了一种基于 PIC16F877A 单片机,利用 DS18B20 对 多路温度采集,并进行温度的控制与检测,并通过 12864 液晶显示 出来。系统中通过控制按钮实现了实时各路的报警温度,并且实现 多路与任一单路温度显示切换,从而既可以进行多路的检测又可以 进行任一单路的监控,而且还有数字跟图形两种显示方式更为直 观。在温度超过设定温度时温度跟时间通过 24C02 存储起来,以便 查看,同时可以通过固定电话远程报警,还能将温度上传至 PC 机, 进行后续处理。 目录 1 2 系统设计 4 主芯片: 主芯片:PIC16F877A 单片机

2、简介 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 D

3、S18B20 简介 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 DS13

4、02 的接口实现 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 系统设计 在工业生产和日常生活中,经常要对温度进行测量与控制,并且有时是对 多个点进行温度测量,比如冷库温度监控、环境温度监测、农业温室监控、粮 库温度监控等。在这种情况下,多点温度检测系统应运而生。多点温度检测系 统通常能够对多个工

5、作点的温度进行检测,显示当前温度,并能够对温度进行 存储和报警,还能将温度上传至 PC 机,进行后续处理。传统的测温元件有热电 偶和热电阻,需很多硬件支持并且电路复杂。本文将设计一款由新型的数字温 度传感器 DS18B20 配合单片机,具有温度检测、显示、存储、自动统计分析及 跟电脑通讯连接还利用固定电话远程报警等功能的多点温度监控系统。 30 多路温度 监控系统 固话 报警 4 * 温度传感器 图 1.1 多路温度监控系统模拟应用 PC 机通讯 温度监控主系统构架框图如图 1.2 所示: 12864 液晶显示 四路温度 采集 AT24C02 温度储存 PIC16F877A 单片机 实时时钟

6、上限报警 接口 PC 机通讯 图 1.2 多路温度监控系统构架框图 按键控制 图 1.3 手工焊接实物图 主要技术参数 A 温度检测范围 : B 测量精度 : C 显示方式: D 报警方式: -55+125 0.0625 LCD12864 显示 固话报警 2 主芯片:PIC16F877A 单片机简介 主芯片: 2.1 PIC 单片机的优越之处: (1)哈佛总线结构: MCS-51 单片机的总线结构是冯-诺依曼型,计算机 在同一个存储空间取指 令和数据,两者不能同时进行;而 PIC 单片机的总线结构是哈佛结构,指令和数据空 间是完全分开的,一个用于指令,一个用于数据,由于 可以对程序和数据同时进

7、行 访问,所以提高了数据吞吐率。正因为在 PIC 单片机中采用了哈佛双总线结构, 所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。 数据总线都是 8 位的,但指令总线位数分别位 12、14、16 位。 (2)流水线结构: MCS-51 单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完 后再取下一条指令;而 PIC 的取指和执行采用双指令流水线结构,当一条指令被执 行时,允许下一条指令同时被取出,这样就实现了单周期指令。 (3)寄存器组: PIC 单片机的所有寄存器,包括 I/O 口,定时器和程序计数器等都采用 RAM 结构形式,而且都只需要一个指令周期就可以完成

8、访问和操作;而 MCS-51 单片机 需要两个或两个以上的周期才能改变寄存器的内容。 (4)运行速度高: 由于采用了哈佛总线结构,以及指令的读取和执行才用了流水作业方式,使得 运行速度大大提高。 (5)功耗低: PIC 单片机的功率消耗极低,是目前世界上最低的单片机品种之一。在 4MHz 时 钟下工作时耗电不超过 2mA,在睡眠模式下耗电可以低到 1uA 以下。 (6)驱动能力强: I/O 端口驱动负载的能力较强,每个 I/O 引脚吸入和输出电流的最大值可分别达 到 25mA 和 20mA,能够直接驱动发光二极管 LED、光电耦合器或者轻微继电器 等。 (7)外接电路简洁 PIC 单片机片内集

9、成了上电复位电路、I/O 引脚上拉电路、看门狗定时器等,可 以最大程度减少或免用外接器件,以便实现“纯单片机”应用。这样,不仅方便 于开发,而且还可节省用户的电路空间和制作成本。 (8)程序保密性强 目前,尚无办法对其直接进行解密拷贝,可以最大限度的保护用户的程序版 权。 2.2 PIC16F877A 引脚图及主要性能 PIC16F877A 的详细引脚如图 2.21 所示。 图 2.2-1 PIC16F877A 引脚图 图 2.2 -2 PIC16F877A 实物图 主要性能参数如下所示: 具有高性能 RISC 仅有 35 条单字指令 100000 次擦写周期 除程序分支指令为两个周期外,其余

10、均为单周期指令 运行速度: 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 震荡时钟时,在睡眠期间

11、仍能工作 Timer2:带有 8 位周期寄存器,预分频器和后分频器的 8 位定时 器/计数器。 2 个捕捉器,比较器,PWM 模块 其中: 捕捉器是 16 位,最大分辨率是 12.5ns 比较器是 16 位,最大分辨率是 200ns PWM 最大分辨率是 10 位 10 位多通道模数转换器 2.3 最小系统 2.3.1 复位功能 PIC16F877A 的复位功能设计得比较完善,实现复位或引起复位的条件和原 因可以归纳成 4 类:人工复位、上电复位、看门狗复位、欠压复位。 这里简单介绍一下人工复位 人工复位:无论是单片机在正常运行程序,还是处在睡眠状态或出现死机 状态,只要在人工复位端 MCLR

12、 加入低点平信号,就令其复位。 本次设计的电路图如图 2.31 所示。 图 2.31 PIC 最小系统电路图 2.3.2 系统时钟 图 2.32 最小系统实物图 数字电路的工作离不开时钟信号,每一步细微动作都是在一个共同的时间 基准信号协调下完成的。作为时基发生器的时钟震荡电路,为整个单片机芯片 的工作提供系统时钟信号,也为单片机与其他外接芯片之间的通讯提供可靠的 同步时钟信号。 PIC16F877A 的时钟电路是由片内的一个反相器和一个反馈电阻,与外接 的 1 个石英晶体和 2 个电容,共同构成的一个自激多谐振荡器。电路如图 2.31 所示。 2.4 设计心得总结 PIC16F877A 的最

13、小系统跟 51 相似, 较为简单。 芯片自身增加了很多功能, 如:自带 8 路 AD 转换、增加 SPI 总线,引脚复位功能多等。芯片自身功能的增 加给设计带来了很多灵活性,同时也是学习的难点。 3 LCD12864 液晶原理介绍及接口实现 液晶原理 原理介绍及接口实现 3.1 液晶显示模块概述 12864A-1 汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉 字 (16X16 点阵) 、128 个字符 (8X16 点阵) 64X256 点阵显示 RAM 及 (GDRAM) 。 主要技术参数和显示特性: 电源:VDD 3.3V+5V(内置升压电路,无需负压); 显示内容:

14、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 驱动电压输入端 并行的指令/数据选择信号;串行的片选信 号 并行的读写选择信号;串行的数据口 并行的使

15、能信号;串行的同步时钟 数据 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 接口时序 模块有并行和串行两

16、种连接方法,本文采用并行接法(时序如下): 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 /使能 程序实现如下:

17、/* 读数据 */ 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 口为输

18、出 / 返回读到的数据 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、显示状态

19、 开/关 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”

20、,游标回原点,该功能不影响显示 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

21、 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(DD

22、RAM/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:基本指令

23、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

24、) 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;基本指令集

25、动作 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,方可接受新的指令;如果在送出一

26、个指令前并不检查 BF 标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等 待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说 明。 2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元 后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用 相同指令集时,不需每次重设“RE”位元。 本次设计液晶初始化如下: void lcd_init() rst = 0; delay(1); rst = 1; / / nop(); psb = 1; /设置 LCD 为 8 位并口通信 /基本指令操作 /清除显示 /指定在写入或读取时,光标的移

27、动方向 /开显示,关光标,不闪烁 /复位 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(

28、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 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 (v

29、alue); (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 写字节 * 入口

30、参数: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

31、高速暂存器结构 寄存器内容 温度值低位(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 跳过 RO

32、M 告警搜索 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

33、中第 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 时,读取的温度为负值,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号