资源目录
压缩包内文档预览:(预览前20页/共45页)
编号:512043
类型:共享资源
大小:60.35KB
格式:RAR
上传时间:2015-11-11
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
毕业设计
- 资源描述:
-
DZ018红外线测温仪(重用)√,毕业设计
- 内容简介:
-
第 1 页 共 45 页 引言 随着 “ 信息时代 ” 的到来,作为获取信息的手段 传感器技术得到了 显著 的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握传感器的基本结构、工作原理及特性是非常重要的。 为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。 本文利用单片机结合 传感器 技术而开发设计了 红外抄表 系统 。 文中把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器 DS18B20测量环境温度,以及实现红外数据传输的过程。 本设计应用性比较强, 只要对电路部分稍加改装,就可以实现抄读其它的数字仪表设备:如数字电度表,数字水表等等。 设计后的系统具有操作方便,控制灵活等优点。 其主要功能和指标如下: 1、利用温度传感器( DS18B20)测量某一点环境温度; 2、测量范围为 55 99,精度为 0.5; 3、用 4位数码管进行显示实际温度值显示; 4、手持端通过红外发射管发射测温信号; 5、测温端通过红外发射管发送到手持端; 6、手持端可以随时查看指定待测物体的温度值。 设计的核 心是环境温度的测量以及红外数据的发射和接收,和温度的显示。 文中对每个部分功能、实现过程作了详细地介绍。 nts 第 2 页 共 45 页 1 方案选择 该系统主要由温度测量和数据采集和发送三部分组成。下面列举两种实现方案: 方案一:温度检测可以使用低温热偶或铂电阻,数据采集部分则使用带有 A/D通道的单片机。考虑到一般的 A/D输入通道都只能接收大信号,所以还要设计相应的放大电路。而模拟信号在长距离传输过程中,抗电磁干扰是令人伤脑筋的问题。此方案的软件简单,但硬件复杂,且检测点数追加时,各敏感元件参数的不一致性, 都将会导致误差的产生,难以完全清除,而且成本会有较大增长幅度。 方案二:使用单片机和数字式单总线温度传感器构成。其具有下列特点: 具有高的测量精度和分辨率,测量范围大; 抗干扰能力强,稳定性好; 信号易于处理 、 传送和自动控制; 便于动态及多路测量,读数直观; 安装方便,维护简单,工作可靠性高。单总线温度传感器可以采用 DALLAS 公司生产的 DS18B20 系列,这 类温度传感器直接输出数字信号,且多路温度传感器可以挂在 1条总线上,共同占用单片机的 1个 I/O口即可实现。在提升单片机 I/O口驱动能力的前提下,理论上可以任意扩充检测的温度点数。 比较两个方案后可以发现,方案二更适合于用作本系统的实施方案。尽管方案二不需要 A/D,但考虑到系统扩充等因素,单片机可以选用 AT98C2051。 nts 第 3 页 共 45 页 2 硬件部分 采用方案二的硬件设计比较简单,系统构成如图 1所示。 图 1温度测试系统和手持接 收系统组成框图 2.1 DS18B20 介绍 DALLAS 公司的 DS18B20 单总线数字传感器工作温度 范围是 -55 125 ,在-30 85 范围内 温度测量精度为 0.5 ;具有温度报警功能,用户可设置最高和最低报警温度,且设置值掉电不丢失;采用 DALLAS 公司特有的单总线通信协议,只用一条数据线就可实现与 MCU 的通信;此外, DS18B20 能够直接从数据线获得电源,无需外部电池供电。 DS18B20 通过使用在板( on_board)温度测量 专利技术来测量温度。其温度测量电路是通过计数时钟周期来实现的, DS18B20 有两个温度系数振荡器,温度测量时对高温度系数振荡器产生的门开同期内,低温度系数振荡器经历的时钟周期的个数进行计数而得到的。 DS18B20 数字温度传感器提供 9 位(二进制)温度读数,指示器件温度,所以无需A/D 转换。信息经过单线接口送入 DS18B20 或从 DS18B20 送出,因此从主机 CPU 到DS18B20仅需一条线连接,而且 DS18B20的电源可由数据线本身提供(相对于外部电源,转换时间要延长)。因此每一个 DS18B20在出厂时已经 给定了唯一的序号因此从理论上说任意多个 DS18B20 可以连接在一条单线总线上。 DS18B20 的测量范围从 -55 到DS18B20 数码管 红外发射 红外接收 AT89C51 红外接收 红外发射 按键 数码管 AT89C51 nts 第 4 页 共 45 页 AT89C51 DS18B20 +125 ,增量为 0.5 (最高精度可达 0.1 ),转换速度小于 1s(典型值)。 而在本遥测系统中采用外部电源供电温度测量工作方式,其中电阻 R是上拉电阻,使得单线总线的空闲状态是高电平。它与 CPU( AT89C51)的接法如图 2。 5 V R 地 图 2 DS18B20与单片机的连接 由于 DS18B20只有一根数据线。因此它和主机(单片机)通信是需要串行通信,而AT89C51 有两个串行端口,所以可以不用软件来模拟实现。经过单线接口访问 DC18B20必须遵循如下协议:初始化 、 ROM 操作命令 、 存储器操作命令和控制操作。要使传感器工作,一切处理均从序列开始。 主机发送( Tx) -复位脉冲(最短为 480 s 的低电平信号)。 接着主机便释放此线并进入接收方式( Rx)。总线经过 4.7K的上拉电阻被拉至高电平状态。在检测到 I/O引脚上的上升沿之后, DS18B20等待 15-60 s,并且接着发送脉冲( 60-240 s的低电平信号)。然后以存在复位脉冲表示 DS18B20已经准备好发送或接收,然后给出正确的 ROM命令和存储操作命令的数据。 DS18B20 通过使用时间片来读出和写入数据,时间片用于处理数据位和进行何种指定操作的命令。它有写时间片和读时间片两种。 写时间片:当主机把数据线从逻辑高电平拉至逻辑低电平时,产生写时间片。有两种类型的写 时间片:写 1 时间片和写 0 时间片。所有时间片必须有 60 微秒的持续期,在各写周期之间必须有最短为 1微秒的恢复时间。 读时间片:从 DS18B20 读数据时,使用读时间片。当主机把数据线从逻辑高电平拉至逻辑低电平时产生读时间片。数据线在逻辑低电平必须保持至少 1微秒;来自 DS18B20的输出数据在时间下降沿之后的 15微秒内有效。为了读出从读时间片开始算起 15微秒的状态,主机必须停止把引脚驱动拉至低电平。在时间片结束时, I/O 引脚经过外部的上拉电阻拉回高电平,所有读时间片的最短持续期为 60 微秒,包括两个读周期间至少1 s的恢复时间。 一旦主机检测到 DS18B20 的存在,它便可以发送一个器件 ROM 操作命令。所有 ROMnts 第 5 页 共 45 页 操作命令均为 8位长。 DS18B20的引脚定义和封装形式如图 3所示。 DQ为数字信号输入 /输出端; GND为电源地; VDD为外接电源 。 DS18B20的光刻 ROM 中 存有 64位序列号 , 它可以看作是该 DS18B20 的地址序列码。64位光刻 ROM的排列是:开始 8位( 28H)是产品类型标号,接着的 48 位是该 DS18B20自身的序列号,最后 8 位是前面 56位的循环冗余校验码( CRC=X8+X5+X4+1)。光刻 ROM的作用是使每 一个 DS18B20 拥有惟一的地址序列码,以确保在 一根总线上挂接多个DS18B20。 所有的串行通讯,读写每一个 bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的 DS18B20 芯片来说,访问每个器件都要遵守下列命令序列:首先是初始化;其次执行 ROM命令;最后就是执行功能命令 (ROM命令和功能命令后面以表格形式给出 )。 如果出现序列混乱,则单总线器件不会响应主机。当然,搜索 ROM 命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。 基于单总线上的所 有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和 从机 响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机,且准备就绪。 在主机检测到应答脉冲后,就可以发出 ROM 命令。这些命令与各个从机设备的 唯 一64 位 ROM代码相关。在主机发出 ROM命令,以访问某个指定的 DS18B20,接着就可以发出 DS18B20支持的某个功能命令。这些命令允许主机写入或读出 DS18B20 便笺式 RAM、启动温度转换。软件实现 DS18B20的工作严格遵守单总线协议: (1)主机首先发 出 一 个 复位脉冲,信号线上 的 DS18B20器件 被复位。 (2)接着主机发送 ROM命令,程序开始读取单个在线的芯片 ROM编码并保存在单片机数据存储器中,把用到的 DS18B20的 ROM编码离线读出,最后用一个二维数组保存 ROM编码,数据保存在 X25043 中。 (3)系统工作时,把读取了编码的 DS18B20 挂在总线上。发温度转换命令,再总线复位。 (4)然后就可以从刚才的二维数组匹配在线的温度传感器,随后发温度读取命令就可以获得对应的温度值了。 在主机初始化过程,主机通过拉低单总线至少 480us, 来 产生复位脉冲。接着,主机释放总线,并进入接收模式。当总线被释 放后,上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时 15 60us,接着通过拉低总线 60-240us,以产生应答脉冲。 写时 序 均起始于主机拉低总线,产生写 1时 序 的方式:主机在拉低总线后,接着必须在 15us之内释放总线 。 产生写 0时 序 的方式:在主机拉低总线后,只需在整个时 序期间保持低电平即可 (至少 60us)。 在写字节程序中的写一个 bit位的时候,没有按照通常的分别写 0时序和写 1时序,nts 第 6 页 共 45 页 而是把两者结合起来,当主机拉低总线后在 15us 之内将要写的位 c给 DO:如果 c是高电平满足 15us内释放总线的要求,如果 c是低电平,则 DO c这条语句仍然是把总线拉在低电平,最后都通过延时 58us完成一个写时序 (写时序0或写时序 1)过程。 每个读时隙都由主机发起,至少拉低总线 1us,在主机发起读时 序 之后,单总线器件才开始在总线上发送 0或 1。所有读时 序 至少需要 60us。 单片机通过命令实现对 DS18B20的控制,其支持的主要命令如表 1 所示。 表 1 DS18B20主要命令及其功能说明 命令码 功能说明 命令码 功能说明 33H 读 ROM中的 64位地址序列码 BEH 读 9字节暂存寄存器 55H 只有地址码匹配的 DS18B2才能接收后续的命令 4EH 写入温度上 /下限,紧随其后是 2字节数据,对应上限和下限值 F0H 锁定总线上 DS18B20 的个数和识别其 ROM中的 64位地址序列码 48H 将 9字节暂存寄存器的第 3和4字节复制到 EEPROM 中 ECH 只有温度超过上限或下限的DS18B20 才做出响应 B8H 将 EEPROM 的内容恢复到暂存寄存器的第 3和 4字节 44H 启动 DS18B20 进行温度转换,结果存入 9字节的暂存寄存器 B4H 读供电模式,寄生供电时DS18B20 发送 0,外接电源时DS18B20发送 1 CCH 忽 略地址序列码,适合单片DS18B20 2.2 单片机的选择 (1)AT89C51的特性及引脚说明 主要特性 与 MCS-51 兼容 4K字节可编程闪烁存储器 寿命: 1000写 /擦循环 数据保留时间: 10年 全静态工作: 0Hz-24Hz 三级程序存储器锁定 nts 第 7 页 共 45 页 128*8位内部 RAM 32可编程 I/O线 两个 16位定时器 /计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 AT89C51的引脚功能 ,图 4所示 : 图 4 AT89C51的引脚功能图 管脚说明 VCC:供电电压。 GND: 接地。 P0口: P0口为一个 8位漏级开路双向 I/O口,每个管脚可吸收 8TTL门电流。当 P1口的管脚写“ 1”时,被定义为高阻输入。 P0能够用于外部程序数据存储器,它可以被定义为数据 /地址的第八位。在 FLASH编程时, P0口作为原码输入口,当 FLASH进行校验时,P0输出原码,此时 P0外部电位必须被拉高。 P1口: P1口是一个内部提供上 拉电阻的 8位双向 I/O口, P1口缓冲器能接收输出4TTL门电流。 P1口管脚写入“ 1”后,电位被内部上拉为高,可用作输入, P1口被外部nts 第 8 页 共 45 页 下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH编程和校验时, P1口作为第八位地址接收。 P2口: P2口为一个内部上拉电阻的 8位双向 I/O口, P2口缓冲器可接收,输出 4个TTL门电流,当 P2口被写“ 1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时, P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。 P2口当用于外部程序存储器或 16位地 址外部数据存储器进行存取时, P2口输出地址的高八位。在给出地址“ 1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时, P2口输出其特殊功能寄存器的内容。 P2口在 FLASH编程和校验时接收高八位地址信号和控制信号。 P3口: P3口管脚是 8个带内部上拉电阻的双向 I/O口,可接收输出 4个 TTL门电流。当 P3口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平, P3口将输出电流 (ILL),也是由于上拉的缘故。 P3口也可作为 AT89C51的一些特殊功能口,如下所示 : P3.0 RXD(串行输入口 ) P3.1 TXD(串行输出口 ) P3.2 0INT (外部中断 0) P3.3 1INT (外部中断 1) P3.4 T0(记时器 0外部输入 ) P3.5 T1(记时器 1外部输入 ) P3.6 WR (外部数据存储器写选通 ) P3.7 RD (外部数据存储器读选通 ) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST: 复位输入。当振荡器复位器件时,要保持 RST脚两个机器周期的高电平时间。 PROGALE / :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH编程期间,此引脚用于输入编程脉冲。在平时, ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。如想禁止 ALE的输出可在 SFR8EH地址上置 0。此时, ALE只有在执行 MOVX, MOVC指令 时 ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE禁止,置位无效。 PSEN :外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期 PSEN 两次有效。但在访问外部数据存储器时,这两次有效的 PSEN 信号将不出现。 VPPEA/ :当 EA 保持低电平时,访问外部 ROM;注意加密方式 1时, EA 将内部锁定为 RESET;当 EA 端保持高电平时,访问内部 ROM。在 FLASH编程期间,此引脚也用于施加 12V编程电源 (VPP)。 nts 第 9 页 共 45 页 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 内部结构框图如图 5所示。 图 5 AT89C51的内部结构框图 (2)AT89C51的基本操作 如图 6所示, 在 X1 和 X2之间接一只石英振荡晶体构 成了单片机的时钟电路,它还有另一种接法, 是把外部振荡器的信号直接连接到 XTAL1端, XTAL2端悬空不用。 AT89C51 复位引脚 RST/VP 通过片内一个施密特触发器 (抑制噪声作用 )与片内复位电路相连,施密特触发器的输出在每一个机器周期由复位电路采样一次。当振荡电路工作,并且在 RST引脚上加一个至少保持 2个机器周期的高电平时,就能使 AT89C51完成一次复位。 复位不影响 RAM的内容。 复位后, PC指向 0000H 单元,使单片机从起始地址 0000H单元开始重新执行程序。所以,当单片机运行出错或进入死循 环时,可按复位键重新启动。 MCS-51单片机通常采用上电自动复位和按钮复位两种复位方式。上电复位利用电容器充电来实现。按钮复位又分为按钮电平复位和按钮脉冲复位。前者将复位端通过电阻与 Vcc相接;后者利用 RC微分电路产生正脉冲来达到复位目的。复位电路参数的选择应能保证复位高电平持续时间大于 2个机器周期。本系统采用的是按键脉冲复位,具体电路和原理将在下面的章节介绍。 图 6 AT89C51基本操作电路 振荡器特性: XTAL1、 XTAL2为片内振荡器的反相放大器的输入和输出端。可采用石英晶体或陶瓷振荡器 组成时钟振荡器,如需从外部输入时钟 AT89C51,时钟信号从 XTAL1输入, XTAL2应悬空。由于输入到内部电路是经过一个 2分频触发器,所以输入的外部时钟信号无需特殊要求,但它必须符合电平的最大和最小值及时序规范。 2.3 其它元器件的选择 除了测温芯片 DS18B20以及单片机 AT89C51以外,在电源输入部分还选用了 L7805CV稳压芯片和滤波电容,以及用于红外部分的 4011四与非门逻辑芯片,当然还有红外发射和接收管,这里接收管采用 TO-92三脚封装的一体化接收头,显示不分采用了 12PIN的数码管 LDS-5461AH,总共可以显示四位数据和小数点,其位选部分使用了 NPN三极管来进行位扫描。具体功能及细节详见电路原理部分。 nts 第 10 页 共 45 页 2.4 电路设计 由于是基于单片机实现,硬件电路就相对简单很多,只需要设计一下电源稳压电路、键盘电路、显示电路、测温电路、红外发射和接收电路以及它们与单片机的连接即可。 (1)单片机工作部分 由图 6 已知 AT89C51 的基本操作电路。但其中的一些参数还得依据具体要求来设计。具体接几兆晶体是基于机器周期考虑。 一个机器周期由 6 个状态 (S1 S6)组成,每个状态又持续两个振 荡周期 (分为 P1 和 P2)。这样,一个机器周期由 12 个振荡周期组成,由 S1P1(状态 1 节拍 1)到 S6P2(状态 6 节拍 2)。若是采用 12MHz 的晶体振荡器,则每个周期恰好为 1us,如此对于编程而言相对容易些。因而选择 12MHz 的晶体振荡器。 此外在两引脚之间加入一个 20pF 的小电容是为了使系统更稳定,避免杂音干扰而关机。 (2)电源部分 如图 7 所示,电源接入采用 5V 的直流电对整个系统供电,使用了 L7805CV 芯片来对输入电压进行稳压,在芯片旁边设计了三个电容,它们的目的是虑除外界对电路的干扰,使电路得到 一个稳定线性的直流电压。为了确认电路进入工作状态,还在设计时加入了一个发光二极管,用于显示电源是否正常工作,如果电路处于接电状态,二极管就会导通而发光。 图 7 电源接入部分 (3)显示部分的设计 由 LED组成的 7段发光管显示器是不太复杂的单片机应用系统常用外部设备之一,在这里我们就选用一个 4数码管一体化来显示温度值,当测得的温度是大于零时(正温度)显示两位整数和两位小数,当温度是小于零时(零下)第一位自动显示“ -”号,后三位显示两位整数和一位小数。 7 段发光管显示器由 7 段发光线段组成,并按“日”字形排列,每一段都是一个nts 第 11 页 共 45 页 发光二极管,如图 8所示。图中将 7个 LED的阴极连在一起,称之为共阴极接法。反之为共阳极接法。 如果将公共阴极接地,而在 a g 各段的阳极加上不同的电压,就会使各段的发光情况不同,形成不同的发光字符。加在 7段阳极上的电压可以用数字量表示,如果某一段的阳极为数字量 1,则这个段就发光;如为 0,则不发光。数字量与段的对应关系如表 2所示。 表 2 七段 LED字形码 显示字符 共阳极 字符码 共阴极 字符码 0 3FH C0H 1 06H F9H 2 5BH A4H 3 4FH B0H 4 66H 99H 5 6DH 92H 6 7DH 82H 7 07H F8H 8 7FH 80H 9 6FH 90H 图 8 七段结构及外形图 在这次电子日历时钟的设计中使用了四个 7段 LED显示器,而多位显示器连用有两种方法。 其一,每一位都用各自的 8位输出口控制,在显示某字符时,相应的段恒定发光或不发光。这种显示方法属于静态显示。显然,静态显示需占用较多的 I/O 口线。 其二,是动态显示。即将多个 7段 LED的段选端复接在一起,只用一个 8位输出口控制段选,段选码同时加到各个 7段 LED显示器上,通过控制各个显示器公共阳极轮流接高电平的办法,逐一轮流地启动各个 LED。在这种方法中,只要恰当地选择点亮时间和间隔时间,就会给人以这样一种假相:似乎各位 LED是“同时”显示的。动态显示法是目前各种单片机采用的流行方法。其优点是硬件简单,“动态”由软件实现。因而我选用动态显示的方法。 (4)LED驱动电路的设计 LED 是电流控制的显示器件,若想使 LED 发光则必须保证有足够大的电流流过 LED的各段。流过 LED 的电流大时, LED 发光亮度高;流过 LED 的电流小时, LED 发光亮度就低,为了使 LED 能够长期可靠地工作应使流过 LED的电流为其额定电流。为 LED显示器提供电流的电路称为 LED的驱动电路。由于显示部分选择了动态显示,因此驱动电路也选择动态驱动。 nts 第 12 页 共 45 页 动态显示电路的驱动电路分为段驱动电路和位驱动电路两种。段驱动电路考虑到所有的段电流均流过位选线,因此位驱动电路的驱动能力应为段驱动能力的 8 倍 (最严重情况八段全亮 )。 图 9为动态显示时的驱动电路原理图,图中采用了达林顿复合驱动电路。 驱动电路可采用分立元件电路,也可采用集成驱动电路, 此外有些硬件译码电路本身包括驱动电路。 由于这里采用动态输出,且 单片机的内部结构决定了数码管可以直接由单片机驱动。因此采用分立元件的显示驱动电路 也很简单,如图 10所示。 限流电阻 段码 ag 段驱动电路 位选线 位驱动电路 图 9 动态驱动电路 图 10 位选控制电路 具体显示部分电路如图 11所示。它是 4位 LED动态显示接口电路。 LED显示器为共阳极,字段线并联,共用 AT89C51 的 P0 口 (输出字段码 ),每位 LED 的公共端由 89C51的 P2口控制,即由 P2 口输出位码,经过开关三极管控制位选。显然图中各显示位不可能同时显示不同的数字或符号,只有采用动态的方法轮流使每位显示器 显示,并保留一段时间,通常保留时间为 10ms。由于 LED具有余辉性以及人眼视觉的惰性,虽然每位显示器的显示是分时段性,但只要适当选取扫描频率,人眼的视觉就是连续的。 nts 第 13 页 共 45 页 图 11 四位动态 LED 显示器接口电路 (5)键盘电路的设计 这里设计键盘的功能是清零,启动和单片机复位键,所以手持端只需三个键测温端只需一个键即可完成。 单片机系统所用的键盘有编码键盘和非编码键盘两种。 编码键盘本身除了按键之外,还包括产生键码的硬件电路。只要按下编码键 盘的某一个键,它就能产生这个键的代码,并称为键码,与此同时还产生一个脉冲信号,以通知 CPU接收键码,编码键盘的优点是使用比较方便,亦不需要编写太复杂的程序。其缺点是使用的硬件较复杂。 非编码键盘的按键是排列成行、列矩阵形式的。按键的作用只是简单地实现接点的接通或断开,因此必须有一套相应的程序与之配合,才能产生相应的键码,非编码键盘几乎不需要附加什么硬件电路。因此为了简洁电路,我使用非编码键盘。但使用非编码键盘需要通过软件来解决按键的识别、防抖动以及如何产生键码的问题。 基于键 数少的原因我采用独立式键盘接口与单片机相连接,因为它占用的 I/O口不多。图中每个按键占用一个口,彼此独立,互不影响。上拉电阻保证按键没被按下时,I/O口输入高电平。 独立式键盘可工作在查询方式下,通过 I/O口读入键状态,当有键被按下时 I/O口变为低电平,而未被按下的键对应为高电平,这样通过读电平状态可判断是否有键按下和哪个键被按下。 (6)红外发射与接收 利用单片机异步通讯口,用红外光发射管和一体化接收管来实现接收和发送点信号nts 第 14 页 共 45 页 的功能。通讯距离约 3-10米,异步通讯波特率 1200。 图 12 红外发射和接收电路 电路原理:红外发送电路由 4011MOS与非门和 38KHz振荡器组成,串口发送控制门电路和红外光发射管驱动输出电路组成。单片机串口发送 TXD端为 0时,红外光发射管发出 38KHz调制红外光线。 TXD端为 1时 ,发射管就不发光。见上图 12。红外接收电路为红外接收专门集成电路,当收到 38KHz调制红外光线时,输出端为 0, 平时为 1 。正可与单片机串口发送接收端 RXD配接。 ( 7)实际电路 最终通过 Protel 99 SE软件将以上各个部分电路及元器件组合在一起,得到一个完整的电路图,如图 13和图 14。然后对各个元器件进行合理的封装,对封装后的 PCB进行排版以得到最好的布局,为接下来焊接元器件有一定的帮助,而且合理的布局也能使完成后的实物更美观。 由于本设计两部分电路都有红外发射和接收部分,而区别在于远端有一个测温电路而手持端没有,所以在设计电路图时将两部分设计成一样的结构,即在手持端也有设计了测温芯片的接口 ,只要对手持端的程序稍加修改也能实现测温的功能。这样在后期制作时便于对电路的安装与调试,而且也有利于电路的功能扩展。 下面给出了两部分的电路图。 nts 第 15 页 共 45 页 图 13 测温端电路图 图 14 手持端电路图 3 软件部分 软件用 C语言进行编程,采用模块化设计方法。 nts 第 16 页 共 45 页 图 15 手持端与测温端的框图 3.1 软件模块的划分 该系统的控制软件主要可以分为测温和红外两个大的部分,其中具体有单片机初 始化程序、定时中断服务程序 、 DS18B20接口程序 、 红外发射编码和红外接收解码程序等模块。 3.1.1 定时 /计数器应用 (1)定时 /计数器功能简介 AT89C51单片机内部设有两个 16位可编程的定时 /计数器,简称定时器 0和定时器 1,分别用 T0和 T1表示。其功能同一般定时计数器,主要作用是:第一,作为一段特定时间长短的定时;第二,可以计算由 T1或 T0引脚输入的脉冲数,前者在应用上可以产生正确的时间延迟及定时去执行中断服务程序,而后者则是计数器或者计频器的设计。在本设计中这两种作用都用到了。 这两个定时器本 身有四种工作模式可供使用,如表 3所示。 表 3 四种工作模式 M1 MO 工作方式 功能说明 0 0 模式 0 13 位计数器 0 1 模式 1 16 位计数器 1 0 模式 2 8 位自动重装计数器 1 1 模式 3 定时器 0:分成两个 8位计数器 定时器 1:停止计数 (2)定时器相关的控制寄存器 TMOD为模式控制寄存器,主要用来设置定时 /计数器的操作模式; TCON为控制寄存接收数据 发送信号 开始 显示 开始 接收信号 显示 发送数据 测温 nts 第 17 页 共 45 页 器,主要用来控制定时器的启动与停止。两个 16位的定时 /计数器 T0和 T1均可以分成 2个独立的 8位计数 器即 TH0、 TL0、 TH1、 TL1,它们用于存定时或计数的初值。 模式控制寄存器 -TMOD TMOD是一个专用寄存器,用于控制 T1和 T0的操作模式及工作方式,其各位定义如下: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 定时器 1 定时器 0 GATE:门控位。当 GATE 0,定时器只由软件控制位 TR0或 TR1来控制启停。iTR位为 1,定时器启动开始工作;为 0 时,定时器停止工作。当 GATE 1 时,定时器的启动要由外部中断引脚和iTR位共同控制。只有当外部中断引脚 0INT 或 1INT 为高时,iTR置 1才能启动定时器工作。 C/T :功能选择位。当 C/T O时设置为定时器工作方式;计数脉冲由内部提供,计数周期等于机器周期。当 C/T 1时设置为计数器工作方式,计数脉冲为外部引脚 T0或 T1的引入的外部脉冲信号。 M1、 M0:操作模式控制位, 2位可形成 4种编码,对应于 4种操作模式。 TMOD模式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器的工作方式及操作模式,低 4位用于定义定时器 0,高 4位用于定义定时器 1。系统复位时 TMOD所有 位均为 0。 模式控制字的设置举例: 若设置定时器 1 为定时器工作方式,由软件启动,选择操作模式 2;定时器 0 为计数方式,由软件启动,选择操作模式 1。则 TMOD 各位设置为: 0 0 l 0 0 1 O l 25H 用 MOV TMOD, 25H指令写入 TMOD中。 控制寄存器 -TCON TCON的作用是用于控制定时器的启动、停止及定时器的溢出标志和外部中断触发方式等。 各位定义如下: 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1和 TF0;分别为定时器 1和定时器 0溢出标志。当定时器计满产生溢出时,由硬件自动置“ 1”,并可申请中断。进人中断服务程序后,由硬件自动清 0。这两位也可作为程序查询的标志位,在查询方式下应由软件来清 0。 TR1和 TR0:为定时器 1和定时器 0的启动控制位。当由软件使iTR清 0而停止定nts 第 18 页 共 45 页 时器的工作。定时器启动时该位应置“ 1”。 定时器的启动与门控位和外部中断引脚有关。当 GATE设置为 0,定时器的启动由iTR 1控制;而当 GATE设置为 1时,定时器启动除了iTR 1外,还要求外部中断引脚 INTi 1时定时器方可启动工作。 IE1 和 IE0:为外部中断 1 1INT 和外部 0 0INT 的中断请求标志位。当外部中断源有请求时其对应的中断标志位置“ 1”。其复位由触发方式来设置。 IT1 和 IT0:为外部中断 1 和外部中断 0 的触发方式选择位 。iIT设置为“ 0”时为电平触发方式;设置为“ 1”时为边沿触发方式。 TCON中低 4位是与外部中断有关的位,高 4位为定时器控制位。它是一个可以进行位寻址的寄存器。当系统复位时所有位均为 0。若要启动定时器可以使用位操作指令 SETB iTR来启动。 (3)定时计数器的操作模式 模式 0 模式 0是一个 13位的定时 /计数器, 16位的寄存器只用了高 8位 (iTH)和低 5位 (iTL的 D4 D0位 ),iTL的高 3位未用。 计时工作脉冲 定时器的工作时钟可以由内部或是外部来提供,由 C/T 位来决定,当 C/T 1时,由外部引脚 T0 来供给,作为计数器使用,当 C/T 0 时,则由内部时钟来提供,作为一般的定时器使用,而定时器的时钟为系 统工作时钟除以 12,在 AT89C51 中,石英振荡晶体使用 11.0592MHz,所以定时器每一个计数时间脉冲宽为: 12/11.0592MHz 1.085us ( 3.1.1) 若石英振荡晶体改为 12MHz,定时器每一个计数时间脉冲宽为: 12/12MHz 1.0us ( 3.1.2) 激活定时器 定时器动作的必要条件有: GATE=0时, TR0 1,定时器 0就会工作; GATE 1时,除了 TR0 1, INT0还须是高电平。 若使用定时器内部时钟工作 C/T 0, GATE=0,在模式 0操作下,用命令: MOV TMOD,#00H 便可设置定时器 0 于模式 0做计时工作,将 TR0 设为 1,定时器便会开始工作了。 定时时间长短设置 在模式 0 工作下,计数器最多可计数个数为 M= 132 8192,由 0 到 8192 便产生溢出而引发中断信号,引 起定时器 0的中断 (TF0 1)。可能只要计数 100 个脉冲便产生中断,只要将初值 8092(8192-100)加载计数器即可,一旦激活计数器后,计数变为 8093、8094、一直到 8192 则产生中断,这样就计数 100次了,而时间长度为: nts 第 19 页 共 45 页 1.085us*100 108.5us ( 3.1.3) 也就是经过 108.5us后就产生中断了。 在定时器 0中,加载定时器的初值,汇编语言指令为: TL0=(8192-C).MOD.32 ( 3.1.4) TH0=(8192-C)/32 ( 3.1.5) 其中 C 为所要计数的值,“ MOD”为取余数的运算,除以 32 后取余数部分。“ /”为除法运算,在做完除法后取整数部分。 计时溢出 当计时终了产生溢出,定时器应用两种方法可知道系统产生定时器中断了: 检查其中断控制寄存器 TCON中的 TF0及 TF1,若为 1则表示产生计时溢出了。 执行对应的中断服务程序。 模式 1 在模式 1 工作下, 计数器最多可计数个数为 M 162 65536,计时时间最长为 1.085us*65536 72ms ( 3.1.6) 而计数初值的加载方法为: TL0 (65536-C).MOD.256 ( 3.1.7) TH0 (65536-C)/256 ( 3.1.8) 其中 C为所要计数的值,计数 时间长度为: 1.085us*C ( 3.1.9) 模式 2 模式 2有自动重新加载初值的功能,使定时器做更精确的计时。在模式 2 工作下,计数器最多可计数个数为 M 82 256,计时时间最长为: 1.085us*256 0.28ms ( 3.1.10) 而计数初值的加载方法为: TH0 256-C ( 3.1.11) 其中 C为所要计数的值,计数 时间长度为: 1.085us*C ( 3.1.12) 模式 3 在模式 3中,定时器 1停止计时工作,而定时器 0分为 两个独立的 8位定时器。其计数初值加载方法同模式 2。 3.1.2 中断控制应用 (1)中断源 AT89C51单片机的中断源: 2个外部输人中断源 0INT (P3.2)和 1INT (P3.3); 3个内部中断源 T0 和 T1 的溢出中断源及串行口发送 /接收中断源。在本系统中只使用了 3 个nts 第 20 页 共 45 页 内部中断源: TF0和 TF1:定时器 0和定时器 1的溢出中断。当 T0或 T1计数器加 1,计数产生溢出时,则将 TCON中的 TF0或 TF1置 1,向 CPU 申请中断。 RI和 TF1:串行口的接收和发送中断。当串行口接收或发送完一帧数据时,将 TCON中的 RI或 TI位置 1,向 CPU申请中断。 当某中断源的中断请求被 CPU响应之后, CPU 将自动把此中断源的中断入口地址 (又称中断矢量地址 )装入 PC,中断服务程序即从此地址开始执行。因此一般在此地址单元中存放一条绝对跳转指令,可以跳至用户安排的中断服务程序的入口处。 AT89C51 单片机各中断源的矢量地址是固定的。见表 4。 表 4 单片机中断源的矢量地址表 中断源 矢量地址 自然优先级 0INT 外部中断 0 中断 0003H 最高 最低 T0 定时器 0 中断 000BH 1INT 外部中断 1 中断 0013H T1 定时器 1 中断 002BH R1 或 T1 串行口中断 0023H (2)中断请求标志 SCON的中断标志 串行口的中断请求标志由串行口控制寄存器 SCON的 D0和 D1位来设置。 RI(SCON.0)为接收中断标志位; TI(SCON.1)为发送中断标志位。其中断申请信号的产生过程为: 发送过程:当 CPU 将一个数据写入发送缓冲器 SBUF 时,就启 动发送。每发送完一帧数据。由硬件自动将 TI 位置 1。但 CPU响应中断时,并不能清除 TI 位,所以必须由软件清除。 接收过程:在串行口允许接收时即可串行接收数据,当一帧数据接收完毕,由硬件自动将 RI位置 1。同样 CPU响应中断时不能清除 RI位,必须由软件清除。 AT89C51单片机系统复位后, TCON和 SCON 中各位均清 0,应用时要注意各位的初始状态。 (3)中断允许控制 中断的开放和屏蔽 AT89C51单片机中的专用寄存器 IE称为中断允许寄存器,其作用是用来对各中断源进行 开放或屏蔽的控制。其各位的定义如下: AFH AEH ADH ACH ABH AAH A9H A8H nts 第 21 页 共 45 页 EA ET2 ES ET1 EX1 ET0 EX0 IE.7: EA0。 CPU 中断允许位。 EA 1, CPU 开放中断; EA 0,CPU 屏蔽所有中断请求。 IE.4: ES0。串行中断允许位。 ES 1,允许串行口中断; ES 0,禁止串行口中断。 IE.3: ET1。 T1 中断允许位。 ET1=1,允许 T1中断; ET1=0,禁止 T1中断。 IE.2: EX1。外部中断 1 允许位。 EX1 1,允许外部中断 1 中断; EX1 0,禁止外部中断 1中断。 IE.1: ET0。 T0 中断允许位。 ET0 1,允许 T0中断; ET0 0,禁止 T0中断。 IE.0: EX0。外部中断 0 允许位。 EX0 1,允许外部中断 0 中断; EX0 0,禁止外部中断 0 中断。 系统复位后, IE中各中断允许位均被清零,即禁止所有中断。 中断源优先级结构 靠设置 IP寄存器把各中断源的优先级分为高低 2级,它遵循 2条基本原则: 低优级中断可以较高优先级中断所中断,反之不能。 一种中断 (不管什么优先级 )一旦得到响应, 与它同级的中断不能再中断它。 为了实现这 2条规则,中断系统内部包含 2个不可寻址的“优先级激活”触发器。其中一个指示某高优级的中断正在得到服务,所有后来的中断都被阻断。另一个触发器指示某低优先级的中断正在得到服务,所有同级的中断都被阻断,但不阻断高优先级的中断。 当 CPU 同时收到几个同一优先级的中断请求时,根据内部的硬件查询顺序, CPU 将按自然优先级顺序确定该响应哪个中断请求。其自然优先级由硬件形成,排列如表: 表 5 自然优先级 中断源 同级自然优先级 外部中断 0 最高级 最低级 定时器 0 中断 外部中断 1 定时器 1 中断 串行口中断 定时器 2 中断 最低级 (52系列单片机中 ) 在每一个机器周期中, CPU 对所有中断源都顺序地检查一遍,这样到任一机器周期的 S6 状态,可找到所有已激活的中断请求,并排好了优先级。在下一个机器周期的 S1状态,只要不受阻断就开始响应其中最高优先级的中断请求。若发生下列情况,中断响应会受到阻断: 同级或高优先级的中断正在进行中; nts 第 22 页 共 45 页 现在的机器周期还不是执行指令的最后一个机器周期,即正在执行的指令还没完成前不响应任何中断; 正在执行的是中 断返回指令 RETI或是访问专用寄存器 IE或 IP的
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。