《2022年单片机毕业设计温度传感器设计 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机毕业设计温度传感器设计 .pdf(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 页 共 45 页引言随着“信息时代”的到来,作为获取信息的手段传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此, 了解并掌握传感器的基本结构、工作原理及特性是非常重要的。为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了红外抄表系统。文中把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20 测量环境温度,以及实现红外数据传输的过程。本设计应用性比较强,只要
2、对电路部分稍加改装,就可以实现抄读其它的数字仪表设备:如数字电度表,数字水表等等。设计后的系统具有操作方便,控制灵活等优点。其主要功能和指标如下:1、利用温度传感器( DS18B20 )测量某一点环境温度;2、测量范围为 55 99,精度为 0.5 ;3、用 4 位数码管进行显示实际温度值显示;4、手持端通过红外发射管发射测温信号;5、测温端通过红外发射管发送到手持端;6、手持端可以随时查看指定待测物体的温度值。设计的核心是环境温度的测量以及红外数据的发射和接收,和温度的显示。文中对每个部分功能、实现过程作了详细地介绍。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
3、- - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 45 页 - - - - - - - - - 第 2 页 共 45 页1 方案选择该系统主要由温度测量和数据采集和发送三部分组成。下面列举两种实现方案:方案一:温度检测可以使用低温热偶或铂电阻,数据采集部分则使用带有A/D通道的单片机。考虑到一般的A/D输入通道都只能接收大信号,所以还要设计相应的放大电路。而模拟信号在长距离传输过程中,抗电磁干扰是令人伤脑筋的问题。此方案的软件简单,但硬件复杂,且检测点数追加时,各敏感元件参数的不一致性,都将会导致误差的产生,难以完全清除,而且成本会有较大增长幅度
4、。方案二:使用单片机和数字式单总线温度传感器构成。其具有下列特点:具有高的测量精度和分辨率,测量范围大;抗干扰能力强,稳定性好;信号易于处理、传送和自动控制;便于动态及多路测量,读数直观;安装方便,维护简单,工作可靠性高。单总线温度传感器可以采用DALLAS 公司生产的 DS18B20系列,这类温度传感器直接输出数字信号,且多路温度传感器可以挂在1 条总线上,共同占用单片机的1 个 I/O口即可实现。在提升单片机I/O 口驱动能力的前提下,理论上可以任意扩充检测的温度点数。比较两个方案后可以发现,方案二更适合于用作本系统的实施方案。尽管方案二不需要 A/D,但考虑到系统扩充等因素,单片机可以选
5、用AT98C2051 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 45 页 - - - - - - - - - 第 3 页 共 45 页2 硬件部分采用方案二的硬件设计比较简单,系统构成如图1 所示。图 1 温度测试系统和手持接收系统组成框图2.1 DS18B20 介绍DALLAS公司的DS18B20单总线数字传感器工作温度范围是-55 125,在-3085范围内温度测量精度为0.5 ;具有温度报警功能,用户可设置最高和最低报警温度,且设置值掉电不丢失;采用DALL
6、AS公司特有的单总线通信协议,只用一条数据线就可实现与MCU 的通信;此外, DS18B20 能够直接从数据线获得电源,无需外部电池供电。DS18B20 通过使用在板( on_board)温度测量专利技术来测量温度。其温度测量电路是通过计数时钟周期来实现的,DS18B20 有两个温度系数振荡器,温度测量时对高温度系数振荡器产生的门开同期内,低温度系数振荡器经历的时钟周期的个数进行计数而得到的。DS18B20 数字温度传感器提供9 位(二进制)温度读数,指示器件温度,所以无需A/D 转换。信息经过单线接口送入DS18B20 或从 DS18B20送出,因此从主机CPU到DS18B20 仅需一条线连
7、接, 而且 DS18B20 的电源可由数据线本身提供 (相对于外部电源,转换时间要延长)。因此每一个DS18B20 在出厂时已经给定了唯一的序号因此从理论上说任意多个DS18B20可以连接在一条单线总线上。DS18B20的测量范围从-55到DS18B20 数码管红外发射红外接收AT89C51 红外接收红外发射按键数码管AT89C51 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 45 页 - - - - - - - - - 第 4 页 共 45 页AT89C51 DS1
8、8B20 +125,增量为 0.5 (最高精度可达0.1 ),转换速度小于1s(典型值)。而在本遥测系统中采用外部电源供电温度测量工作方式,其中电阻R是上拉电阻,使得单线总线的空闲状态是高电平。它与CPU (AT89C51 )的接法如图 2。5 V R 地图 2 DS18B20 与单片机的连接由于 DS18B20 只有一根数据线。因此它和主机(单片机)通信是需要串行通信,而AT89C51有两个串行端口,所以可以不用软件来模拟实现。经过单线接口访问DC18B20必须遵循如下协议:初始化、ROM 操作命令、存储器操作命令和控制操作。要使传感器工作,一切处理均从序列开始。主机发送( Tx)- 复位脉
9、冲(最短为480s 的低电平信号)。接着主机便释放此线并进入接收方式( Rx)。总线经过 4.7K 的上拉电阻被拉至高电平状态。在检测到I/O引脚上的上升沿之后, DS18B20 等待 15-60s, 并且接着发送脉冲 (60-240s 的低电平信号)。 然后以存在复位脉冲表示DS18B20 已经准备好发送或接收, 然后给出正确的 ROM命令和存储操作命令的数据。DS18B20 通过使用时间片来读出和写入数据,时间片用于处理数据位和进行何种指定操作的命令。它有写时间片和读时间片两种。写时间片:当主机把数据线从逻辑高电平拉至逻辑低电平时,产生写时间片。有两种类型的写时间片:写1 时间片和写 0
10、时间片。所有时间片必须有60 微秒的持续期,在各写周期之间必须有最短为1 微秒的恢复时间。读时间片:从 DS18B20 读数据时,使用读时间片。当主机把数据线从逻辑高电平拉至逻辑低电平时产生读时间片。 数据线在逻辑低电平必须保持至少1 微秒; 来自 DS18B20的输出数据在时间下降沿之后的15 微秒内有效。为了读出从读时间片开始算起15 微秒的状态,主机必须停止把引脚驱动拉至低电平。在时间片结束时,I/O 引脚经过外部的上拉电阻拉回高电平,所有读时间片的最短持续期为60 微秒,包括两个读周期间至少1s 的恢复时间。一旦主机检测到 DS18B20 的存在,它便可以发送一个器件ROM 操作命令。
11、所有 ROM名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 45 页 - - - - - - - - - 第 5 页 共 45 页操作命令均为 8 位长。DS18B20 的引脚定义和封装形式如图3 所示。DQ为数字信号输入 / 输出端;GND 为电源地; VDD 为外接电源。DS18B20 的光刻 ROM 中存有 64位序列号,它可以看作是该DS18B20 的地址序列码。64 位光刻 ROM 的排列是:开始 8 位(28H )是产品类型标号,接着的48 位是该 DS18B
12、20自身的序列号,最后 8 位是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1)。光刻 ROM的作用是使每一个DS18B20 拥有惟一的地址序列码,以确保在一根总线上挂接多个DS18B20 。所有的串行通讯,读写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18B20 芯片来说,访问每个器件都要遵守下列命令序列: 首先是初始化; 其次执行 ROM 命令;最后就是执行功能命令 (ROM 命令和功能命令后面以表格形式给出) 。如果出现序列混乱,则单总线器件不会响应主机。当然,搜索ROM 命令和报警搜索命令,在执行两者中任何一条命令之
13、后,要返回初始化。基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机,且准备就绪。在主机检测到应答脉冲后,就可以发出ROM 命令。这些命令与各个从机设备的唯一64 位 ROM 代码相关。在主机发出 ROM 命令,以访问某个指定的DS18B20 ,接着就可以发出 DS18B20 支持的某个功能命令。这些命令允许主机写入或读出DS18B20 便笺式 RAM 、启动温度转换。软件实现DS18B20 的工作严格遵守单总线协议:(1) 主机首先发出一个复位脉冲,信号线上的DS18B20 器件被复位。(2) 接着主机发送
14、ROM 命令,程序开始读取单个在线的芯片ROM 编码并保存在单片机数据存储器中,把用到的 DS18B20 的 ROM 编码离线读出,最后用一个二维数组保存ROM编码,数据保存在X25043中。(3) 系统工作时,把读取了编码的DS18B20 挂在总线上。发温度转换命令,再总线复位。(4) 然后就可以从刚才的二维数组匹配在线的温度传感器,随后发温度读取命令就可以获得对应的温度值了。在主机初始化过程,主机通过拉低单总线至少480us,来产生复位脉冲。接着,主机释放总线,并进入接收模式。当总线被释放后,上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时1560us,接着通过拉低总线60-240u
15、s,以产生应答脉冲。写时序均起始于主机拉低总线,产生写1 时序的方式:主机在拉低总线后,接着必须在 15us 之内释放总线。产生写0 时序的方式:在主机拉低总线后,只需在整个时序期间保持低电平即可 ( 至少 60us)。在写字节程序中的写一个bit 位的时候,没有按照通常的分别写0 时序和写 1时序,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 45 页 - - - - - - - - - 第 6 页 共 45 页而是把两者结合起来,当主机拉低总线后在15us 之内将要
16、写的位c 给 DO :如果 c 是高电平满足 15us 内释放总线的要求,如果c 是低电平,则 DO c 这条语句仍然是把总线拉在低电平,最后都通过延时58us 完成一个写时序 ( 写时序0 或写时序 1)过程。每个读时隙都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0 或 1。所有读时序至少需要60us。单片机通过命令实现对DS18B20 的控制,其支持的主要命令如表1 所示。表 1 DS18B20 主要命令及其功能说明命令码功能说明命令码功能说明33H 读 ROM 中的 64 位地址序列码BEH 读 9 字节暂存寄存器55H 只有地址码匹配的DS18B
17、2才能接收后续的命令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 单
18、片机的选择(1) AT89C51 的特性及引脚说明主要特性与MCS-51 兼容4K字节可编程闪烁存储器寿命: 1000写/ 擦循环数据保留时间: 10年全静态工作: 0Hz-24Hz 三级程序存储器锁定名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 45 页 - - - - - - - - - 第 7 页 共 45 页128*8位内部 RAM 32可编程 I/O 线两个 16位定时器 / 计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路AT89C5
19、1 的引脚功能,图 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口被外部
20、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 45 页 - - - - - - - - - 第 8 页 共 45 页下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时, P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向 I/O 口,P2口缓冲器可接收,输出 4个TTL门电流,当 P2口被写“ 1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时, P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2
21、口当用于外部程序存储器或 16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“ 1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH 编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是 8个带内部上拉电阻的双向I/O 口,可接收输出 4个TTL门电流。当P3口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平, P3口将输出电流 (ILL) ,也是由于上拉的缘故。P3口也可作为 AT89C51 的一些特殊功能口,如下所示:P3.0 RXD(串行输入口 ) P3.
22、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 端以不变的频率周期输出正脉冲信号,此
23、频率为振荡器频率的1/6 。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE只有在执行 MOVX,MOVC指令时 ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期 PSEN两次有效。但在访问外部数据存储器时, 这两次有效的 PSEN信号将不出现。VPPEA/:当EA保持低电平时,访问外部 ROM ;注意加密方式 1时,EA将内部锁定为RESET
24、 ;当EA端保持高电平时,访问内部 ROM 。在FLASH 编程期间,此引脚也用于施加12V 编程电源 (VPP)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 45 页 - - - - - - - - - 第 9 页 共 45 页XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 :来自反向振荡器的输出。内部结构框图如图 5所示。图5 AT89C51 的内部结构框图(2)AT89C51的基本操作如图 6 所示,在 X1和 X2之间接一只石英振荡晶体
25、构成了单片机的时钟电路,它还有另一种接法,是把外部振荡器的信号直接连接到XTAL1端,XTAL2端悬空不用。 AT89C51复位引脚 RST/VP通过片内一个施密特触发器( 抑制噪声作用 )与片内复位电路相连,施密特触发器的输出在每一个机器周期由复位电路采样一次。当振荡电路工作,并且在 RST引脚上加一个至少保持2 个机器周期的高电平时,就能使AT89C51 完成一次复位。复位不影响 RAM 的内容。复位后, PC指向 0000H单元,使单片机从起始地址0000H单元开始重新执行程序。所以,当单片机运行出错或进入死循环时,可按复位键重新启动。MCS-51 单片机通常采用上电自动复位和按钮复位两
26、种复位方式。上电复位利用电容器充电来实现。按钮复位又分为按钮电平复位和按钮脉冲复位。前者将复位端通过电阻与Vcc相接;后者利用 RC 微分电路产生正脉冲来达到复位目的。复位电路参数的选择应能保证复位高电平持续时间大于2个机器周期。本系统采用的是按键脉冲复位,具体电路和原理将在下面的章节介绍。图 6 AT89C51 基本操作电路振荡器特性:XTAL1 、XTAL2 为片内振荡器的反相放大器的输入和输出端。可采用石英晶体或陶瓷振荡器组成时钟振荡器,如需从外部输入时钟AT89C51 ,时钟信号从 XTAL1 输入, XTAL2应悬空。由于输入到内部电路是经过一个2分频触发器,所以输入的外部时钟信号无
27、需特殊要求,但它必须符合电平的最大和最小值及时序规范。2.3 其它元器件的选择除了测温芯片 DS18B20 以及单片机 AT89C51 以外,在电源输入部分还选用了 L7805CV稳压芯片和滤波电容,以及用于红外部分的4011四与非门逻辑芯片,当然还有红外发射和接收管,这里接收管采用 TO-92三脚封装的一体化接收头,显示不分采用了12PIN的数码管LDS-5461AH, 总共可以显示四位数据和小数点,其位选部分使用了 NPN 三极管来进行位扫描。具体功能及细节详见电路原理部分。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名
28、师精心整理 - - - - - - - 第 9 页,共 45 页 - - - - - - - - - 第 10 页 共 45 页2.4 电路设计由于是基于单片机实现, 硬件电路就相对简单很多, 只需要设计一下电源稳压电路、键盘电路、显示电路、测温电路、红外发射和接收电路以及它们与单片机的连接即可。(1)单片机工作部分由图 6 已知 AT89C51 的基本操作电路。但其中的一些参数还得依据具体要求来设计。具体接几兆晶体是基于机器周期考虑。一个机器周期由6 个状态 (S1S6)组成,每个状态又持续两个振荡周期(分为 P1 和 P2)。 这样,一个机器周期由 12 个振荡周期组成,由 S1P1(状态
29、 1 节拍 1)到 S6P2(状态 6 节拍 2)。若是采用 12MHz 的晶体振荡器, 则每个周期恰好为 1us,如此对于编程而言相对容易些。因而选择12MHz 的晶体振荡器。此外在两引脚之间加入一个20pF 的小电容是为了使系统更稳定,避免杂音干扰而关机。(2)电源部分如图 7 所示,电源接入采用 5V 的直流电对整个系统供电, 使用了 L7805CV 芯片来对输入电压进行稳压,在芯片旁边设计了三个电容,它们的目的是虑除外界对电路的干扰,使电路得到一个稳定线性的直流电压。为了确认电路进入工作状态,还在设计时加入了一个发光二极管,用于显示电源是否正常工作,如果电路处于接电状态,二极管就会导通
30、而发光。图 7 电源接入部分(3) 显示部分的设计由 LED组成的 7 段发光管显示器是不太复杂的单片机应用系统常用外部设备之一,在这里我们就选用一个4 数码管一体化来显示温度值,当测得的温度是大于零时(正温度)显示两位整数和两位小数,当温度是小于零时(零下)第一位自动显示“- ”号,后三位显示两位整数和一位小数。7 段发光管显示器由7 段发光线段组成,并按“日”字形排列,每一段都是一个名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 45 页 - - - - - - -
31、 - - 第 11 页 共 45 页发光二极管,如图8 所示。图中将 7 个 LED的阴极连在一起,称之为共阴极接法。反之为共阳极接法。如果将公共阴极接地,而在ag 各段的阳极加上不同的电压,就会使各段的发光情况不同,形成不同的发光字符。加在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 7
32、FH 80H 9 6FH 90H 图 8 七段结构及外形图在这次电子日历时钟的设计中使用了四个7 段 LED显示器,而多位显示器连用有两种方法。其一,每一位都用各自的8 位输出口控制,在显示某字符时,相应的段恒定发光或不发光。这种显示方法属于静态显示。显然,静态显示需占用较多的I/O 口线。其二,是动态显示。即将多个7 段 LED的段选端复接在一起,只用一个8位输出口控制段选,段选码同时加到各个7 段 LED显示器上,通过控制各个显示器公共阳极轮流接高电平的办法,逐一轮流地启动各个LED 。在这种方法中,只要恰当地选择点亮时间和间隔时间,就会给人以这样一种假相:似乎各位LED是“同时”显示的。
33、动态显示法是目前各种单片机采用的流行方法。其优点是硬件简单,“动态”由软件实现。因而我选用动态显示的方法。(4)LED 驱动电路的设计LED是电流控制的显示器件,若想使LED发光则必须保证有足够大的电流流过LED的各段。流过 LED的电流大时, LED发光亮度高;流过LED的电流小时, LED发光亮度就低,为了使 LED 能够长期可靠地工作应使流过LED的电流为其额定电流。 为 LED显示器提供电流的电路称为LED的驱动电路。由于显示部分选择了动态显示,因此驱动电路也选择动态驱动。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
34、名师精心整理 - - - - - - - 第 11 页,共 45 页 - - - - - - - - - 第 12 页 共 45 页动态显示电路的驱动电路分为段驱动电路和位驱动电路两种。段驱动电路考虑到所有的段电流均流过位选线,因此位驱动电路的驱动能力应为段驱动能力的8 倍( 最严重情况八段全亮 ) 。图 9 为动态显示时的驱动电路原理图,图中采用了达林顿复合驱动电路。驱动电路可采用分立元件电路,也可采用集成驱动电路,此外有些硬件译码电路本身包括驱动电路。由于这里采用动态输出,且单片机的内部结构决定了数码管可以直接由单片机驱动。因此采用分立元件的显示驱动电路也很简单,如图10所示。限流电阻段码
35、 ag 段驱动电路位选线位驱动电路图 9 动态驱动电路图 10 位选控制电路具体显示部分电路如图11 所示。它是 4 位 LED动态显示接口电路。 LED显示器为共阳极,字段线并联,共用AT89C51的 P0 口( 输出字段码 ) ,每位 LED的公共端由 89C51的 P2口控制,即由 P2口输出位码,经过开关三极管控制位选。显然图中各显示位不可能同时显示不同的数字或符号,只有采用动态的方法轮流使每位显示器显示,并保留一段时间,通常保留时间为10ms 。由于 LED具有余辉性以及人眼视觉的惰性,虽然每位显示器的显示是分时段性,但只要适当选取扫描频率,人眼的视觉就是连续的。名师资料总结 - -
36、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 45 页 - - - - - - - - - 第 13 页 共 45 页图 11 四位动态 LED显示器接口电路(5) 键盘电路的设计这里设计键盘的功能是清零,启动和单片机复位键,所以手持端只需三个键测温端只需一个键即可完成。单片机系统所用的键盘有编码键盘和非编码键盘两种。编码键盘本身除了按键之外,还包括产生键码的硬件电路。只要按下编码键盘的某一个键,它就能产生这个键的代码,并称为键码,与此同时还产生一个脉冲信号,以通知 CPU 接收键码,编
37、码键盘的优点是使用比较方便,亦不需要编写太复杂的程序。其缺点是使用的硬件较复杂。非编码键盘的按键是排列成行、列矩阵形式的。按键的作用只是简单地实现接点的接通或断开,因此必须有一套相应的程序与之配合,才能产生相应的键码,非编码键盘几乎不需要附加什么硬件电路。因此为了简洁电路,我使用非编码键盘。但使用非编码键盘需要通过软件来解决按键的识别、防抖动以及如何产生键码的问题。基于键数少的原因我采用独立式键盘接口与单片机相连接,因为它占用的I/O 口不多。图中每个按键占用一个口,彼此独立,互不影响。上拉电阻保证按键没被按下时,I/O 口输入高电平。独立式键盘可工作在查询方式下,通过I/O 口读入键状态,当
38、有键被按下时I/O 口变为低电平,而未被按下的键对应为高电平,这样通过读电平状态可判断是否有键按下和哪个键被按下。(6) 红外发射与接收利用单片机异步通讯口, 用红外光发射管和一体化接收管来实现接收和发送点信号名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 45 页 - - - - - - - - - 第 14 页 共 45 页的功能。通讯距离约 3-10米,异步通讯波特率 1200。图 12 红外发射和接收电路电路原理:红外发送电路由 4011MOS 与非门和 38K
39、Hz 振荡器组成,串口发送控制门电路和红外光发射管驱动输出电路组成。单片机串口发送TXD 端为0时,红外光发射管发出38KHz 调制红外光线。 TXD 端为 1时, 发射管就不发光。见上图 12。红外接收电路为红外接收专门集成电路, 当收到 38KHz 调制红外光线时, 输出端为0 ,平时为1。正可与单片机串口发送接收端RXD 配接。(7)实际电路最终通过 Protel 99 SE 软件将以上各个部分电路及元器件组合在一起,得到一个完整的电路图,如图 13和图 14。然后对各个元器件进行合理的封装,对封装后的PCB 进行排版以得到最好的布局,为接下来焊接元器件有一定的帮助,而且合理的布局也能使
40、完成后的实物更美观。由于本设计两部分电路都有红外发射和接收部分,而区别在于远端有一个测温电路而手持端没有,所以在设计电路图时将两部分设计成一样的结构,即在手持端也有设计了测温芯片的接口,只要对手持端的程序稍加修改也能实现测温的功能。这样在后期制作时便于对电路的安装与调试,而且也有利于电路的功能扩展。下面给出了两部分的电路图。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 45 页 - - - - - - - - - 第 15 页 共 45 页图 13 测温端电路图图 1
41、4 手持端电路图3 软件部分软件用 C语言进行编程,采用模块化设计方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 45 页 - - - - - - - - - 第 16 页 共 45 页图 15 手持端与测温端的框图3.1 软件模块的划分该系统的控制软件主要可以分为测温和红外两个大的部分,其中具体有单片机初始化程序、定时中断服务程序、DS18B20 接口程序、红外发射编码和红外接收解码程序等模块。3.1.1 定时/ 计数器应用(1) 定时/ 计数器功能简介AT89
42、C51 单片机内部设有两个 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 位计数器
43、定时器 1:停止计数(2) 定时器相关的控制寄存器TMOD为模式控制寄存器,主要用来设置定时/ 计数器的操作模式; TCON 为控制寄存接收数据发送信号开始显示开始接收信号显示发送数据测温名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 45 页 - - - - - - - - - 第 17 页 共 45 页器,主要用来控制定时器的启动与停止。两个16位的定时 / 计数器 T0和T1均可以分成 2个独立的 8位计数器即 TH0 、TL0、TH1 、TL1,它们用于存定时或
44、计数的初值。模式控制寄存器 -TMOD TMOD是一个专用寄存器, 用于控制 T1和T0的操作模式及工作方式, 其各位定义如下:D7 D6 D5 D4 D3 D2 D1 D0 GATE C/TM1 M0 GATE C/TM1 M0 定时器 1定时器 0 GATE :门控位。当 GATE 0,定时器只由软件控制位TR0或 TR1来控制启停。iTR位为 1,定时器启动开始工作;为0 时,定时器停止工作。当GATE 1 时,定时器的启动要由外部中断引脚和iTR 位共同控制。只有当外部中断引脚0INT或1INT 为高时,iTR置 1 才能启动定时器工作。C/T:功能选择位。 当 C/TO时设置为定时器
45、工作方式; 计数脉冲由内部提供,计数周期等于机器周期。 当 C/T1 时设置为计数器工作方式, 计数脉冲为外部引脚T0或 T1的引入的外部脉冲信号。M1 、M0 :操作模式控制位, 2 位可形成 4 种编码,对应于4 种操作模式。TMOD 模式控制寄存器不能进行位寻址, 只能用字节传送指令设置定时器的工作方式及操作模式,低 4 位用于定义定时器 0,高 4 位用于定义定时器1。系统复位时 TMOD 所有位均为 0。模式控制字的设置举例:若设置定时器 1 为定时器工作方式,由软件启动,选择操作模式2;定时器 0 为计数方式,由软件启动,选择操作模式1。则 TMOD 各位设置为:0 0 l 0 0
46、 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 的启动控制位。当
47、由软件使iTR 清 0而停止定名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 45 页 - - - - - - - - - 第 18 页 共 45 页时器的工作。定时器启动时该位应置“1” 。定时器的启动与门控位和外部中断引脚有关。当 GATE 设置为 0, 定时器的启动由iTR1控制;而当 GATE 设置为 1 时, 定时器启动除了iTR 1 外, 还要求外部中断引脚INTi1时定时器方可启动工作。IE1 和 IE0:为外部中断 11INT 和外部 00INT的中断请
48、求标志位。当外部中断源有请求时其对应的中断标志位置“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 位
49、未用。计时工作脉冲定时器的工作时钟可以由内部或是外部来提供,由C/T位来决定,当 C/T1 时,由外部引脚 T0 来供给,作为计数器使用,当C/T0 时,则由内部时钟来提供,作为一般的定时器使用, 而定时器的时钟为系统工作时钟除以12,在 AT89C51 中,石英振荡晶体使用 11.0592MHz ,所以定时器每一个计数时间脉冲宽为: 12/11.0592MHz1.085us (3.1.1 )若石英振荡晶体改为12MHz ,定时器每一个计数时间脉冲宽为: 12/12MHz1.0us (3.1.2 )激活定时器定时器动作的必要条件有:GATE=0 时,TR0 1,定时器 0 就会工作;GATE
50、1 时,除了 TR0 1,INT0 还须是高电平。若使用定时器内部时钟工作C/T0,GATE=0 ,在模式 0 操作下,用命令:MOV TMOD,#00H 便可设置定时器 0 于模式 0 做计时工作,将TR0设为 1,定时器便会开始工作了。定时时间长短设置在模式 0 工作下,计数器最多可计数个数为M=1328192,由 0 到 8192 便产生溢出而引发中断信号,引起定时器0 的中断 (TF01)。可能只要计数 100 个脉冲便产生中断,只要将初值 8092(8192-100) 加载计数器即可,一旦激活计数器后,计数变为8093、8094、, 一直到8192 则产生中断,这样就计数100 次了