数温控--完全手册51单片机C语言开发详解系列之第11章综合实例——多功能数字温度计.ppt_第1页
数温控--完全手册51单片机C语言开发详解系列之第11章综合实例——多功能数字温度计.ppt_第2页
数温控--完全手册51单片机C语言开发详解系列之第11章综合实例——多功能数字温度计.ppt_第3页
数温控--完全手册51单片机C语言开发详解系列之第11章综合实例——多功能数字温度计.ppt_第4页
数温控--完全手册51单片机C语言开发详解系列之第11章综合实例——多功能数字温度计.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

技术凝聚实力 专业创新出版 第11章 综合实例多功能数字温度计设计 l通过前面几章的学习,读者已经基本掌握了AT89S51单 片机的系统设计与程序设计方法。从本章开始,将通过 综合的实例向读者继续深入介绍嵌入式系统开发的知识 和实例。 l本章主要讲解一个多功能数字温度计设计的综合实例, 通过该实例,读者能够学习到键盘输入设计、LED数码 管接口设计、温度采集、人机交互设计等各方面的知识 。 技术凝聚实力 专业创新出版 11.1 系统结构与分析 l本章介绍的多功能数字温度计具备温度计和时钟的功能 ,该系统由以下几个部分组成:单片机、温度传感器、 显示设备、键盘输入几部分组成。 技术凝聚实力 专业创新出版 11.1.1 多功能数字温度计功能分析 l在本章设计的多功能温度计,需要具备以下的功能。 l温度测量:能够实时显示当前的环境温度; l时钟功能:能够作为时钟使用,显示当前时间; l闹铃功能:能够在设定时间时候,作为闹铃发声; l时钟设置功能:能够设定时钟,修改当前时间; l电池或者直流稳压电源9V供电; 技术凝聚实力 专业创新出版 11.1.2 多功能数字温度计系统分析 l多功能数字温度计的原理十分简单,即通过温度传感器 测量温度,通过单片机采集后在LED数码管上显示出来 ,同时,该温度计还兼有时钟的功能。 技术凝聚实力 专业创新出版 11.2 DS1620温度传感器电路 lDS1620是Maxim-Dallas公司生产的一款高性能、宽测温 范围的串行数字接口温度传感器。下面详细介绍DS1620 温度传感器的使用。 技术凝聚实力 专业创新出版 11.2.1 DS1620的性能指标 lDS1620温度传感器的主要性能指标如下。 l供电电压:2.7V5.5V; l测量温度范围:-55C+125C; l测量温度精度:0.5C; l转换时间:50ms; l接口:三线串行接口; l可设定报警限值; l9Bit温度数据格式。 技术凝聚实力 专业创新出版 11.2.2 DS1620的引脚定义 lDS1620具有8-Pin的SOIC封装和DIP双列直插封装,其引 脚分布如图所示。 技术凝聚实力 专业创新出版 11.2.3 DS1620的温度格式 lDS1620采用的9位的温度数据格式,负温度数据用补码 表示,最低位表示0.5,因此需要两个8位寄存器存储 温度值,如图所示为温度为-25C的数据值。 技术凝聚实力 专业创新出版 11.2.4 DS1620的三线数据串行接口 lDS1620的三线数据串行接口由一下三个信号线组成。 lRST(复位); lCLK(时钟); lDQ(数据)。 技术凝聚实力 专业创新出版 11.2.5 DS1620的控制寄存器 lDS1620具有一个8位的控制寄存器,用于控制温度传感 器的所有操作,其寄存器各位分布如图所示。 技术凝聚实力 专业创新出版 11.2.6 DS1620的操作字 l要对DS1620进行需要的操作,就需要执行DS1620的操作字,如图11.8时序 图中的Protocol部分就是操作字的代码,跟随Protocol后的是操作字的参 数或者读取值。 lDS1620共有如下的9个不同的操作字,通过不同的操作字可以实现开始转 换温度、对DS1620的寄存器进行读写、读取温度数据、设置TH和TL等操作 。 lAAH:读取转换好的温度数据,从指令输入后的第9个时钟脉冲开始,将输 出温度寄存器中的数据; l01H:给高温临界寄存器写入TH数据;02H:给低温临界寄存器写入TL数据 ; lA1H:读高温临界寄存器中的TH数据;A2H:读低温临界寄存器中的TL数据 ; lEEH:开始转换温度数据;22H:停止转换温度数据; l0CH:写控制寄存器;ACH:读控制寄存器。 技术凝聚实力 专业创新出版 11.2.7 DS1620的单独工作模式 lDS1620可以工作在无单片机控制的系统中,称为DS1620 的单独工作模式,在这种工作模式下,主要是依靠 DS1620的三个温度限制输出引脚进行控制,作为热继电 器使用。 l使用该工作模式必须写入控制寄存器操作模式和TH、TL 寄存器的温度设定值,使用CLK/CONV用作转换开始控 制端。这种工作模式下,控制寄存器的CPU标志位必须 设为“0”。 技术凝聚实力 专业创新出版 11.2.8 DS1620的单片机接口电路 l当使用AT89S51控制DS1620进行温度测量时,只需要使 用AT89S51的三个引脚和DS1620的串行接口按照通讯协 议进行通讯即可,其电路如图所示。 技术凝聚实力 专业创新出版 11.3 MAX7219数码管驱动电路 lMAX7219是Maxim公司生产的一款高性能8位共阴极数码 管驱动芯片,通过MAX7219可以使用单片机极少的引脚 实现多个数码管的显示驱动。 技术凝聚实力 专业创新出版 11.3.1 MAX7219的性能指标 lMAX7219的主要性能指标如下。 l10Mhz的串行接口; l独立的LED数码管段控制; l可以使用内部BCD数码管解码; l150uA的Shut-Down电流; l可以调节数码管发光强度; l工作温度范围:-40C85C; 技术凝聚实力 专业创新出版 11.3.2 MAX7219的引脚定义 l如图所示,MAX7219具有24引脚的SO贴片与DIP双列直插 两种不同的封装。 技术凝聚实力 专业创新出版 11.3.3 MAX7219的串行数据通讯 l单片机需要通过D0D15的16位串行通讯对MAX7219进行 控制, 技术凝聚实力 专业创新出版 11.3.4 MAX7219的内部寄存器地址 l要实现数码管的不同模式、不同形式下的驱动,就需要 对MAX7219的内部寄存器进行操作,寄存器的地址为数 据D8D11位,如图所示。 技术凝聚实力 专业创新出版 11.3.5 MAX7219的数字位寄存器 l数字位寄存器的地址为01H08H,其对应了每个数码管的现实内容,在没 有进行使用解码模式时,其存储数据与数码管显示的对应方式如图所示。 技术凝聚实力 专业创新出版 11.3.6 MAX7219的停机寄存器 l停机寄存器用于关闭MAX7219,如图所示,当D0=0 时, MAX721 处于停机状态;当D0=1 时,处于正常工作状态 。 技术凝聚实力 专业创新出版 11.3.7 MAX7219的测试寄存器 l测试寄存器用于测试数码管和MAX7219十分正常工作, 如图所示,当D0=0时,MAX7219 按设定模式正常工作; 当D0=1 时,处于测试状态。 l在测试状态下,无论MAX7219 处于什么模式,全部LED 将按最大亮度显示。 技术凝聚实力 专业创新出版 11.3.8 MAX7219的亮度寄存器 l数码管的现实亮度可以用硬件和软件两种方法调节,亮度寄存器中的D0 D3位可以控制LED 显示器的亮度,如图所示,通过改变亮度寄存器的值, 可以调整MAX7210驱动数码管的有效循环时间,从而改变数码管显示的亮 度。 技术凝聚实力 专业创新出版 11.3.9 MAX7219的扫描界限寄存器 lMAX7219的扫描界限寄存器用于限定MAX7219的扫描数码管的个数, 这个主要是用于当MAX7219被用于驱动不到8个数码管的情况下,例 如本章的数码温度计只使用了6个数码管,就可以限制扫描数码管 的个数为6。 l如图所示,该寄存器中D0D3 位数据设定值为07H,设定值表示 显示器动态扫描个数为18。 技术凝聚实力 专业创新出版 11.3.10 MAX7219的译码寄存器 l该寄存器的8 位二进制数的各位分别控制8 个LED 显示 器的译码方式。当高电平时,选择BCD-B 译码模式,当 低电平时选择不译码模式,而使用送来数据为字型码, 其具体对应的实例如图所示。 技术凝聚实力 专业创新出版 11.3.11 MAX7219驱动电路设计 l如图所示为官方推荐的MAX7219常用驱动电路连接图,图中ISET引脚连接的 是硬件调节数码管亮度的电阻,可以通过更改外接电阻值改变数码管的亮 度。 lDIG0DIG7引脚分别与8位数码管的共阴极相连,SEG AG及其DP引脚分 别与每个数码管的AG与GP段相连,AG以及DP各段的定义请参考图 技术凝聚实力 专业创新出版 11.4 其他硬件电路设计 l除了温度传感器电路和数码管驱动电路,在本节中继续 介绍多功能温度计其余的硬件电路设计,包括单片机最 小系统、电源系统、按键输入等部分。 技术凝聚实力 专业创新出版 11.4.1 AT89S51单片机最小系统电路 l在该设计中采用了AT89S51单片机作为核心处理器,因此在电路中 首先需要设计的是AT89S51的最小系统。 lAT89S51单片机的最小系统电路包含以下几个部分: l单片机供电电路:AT89S51需要具有可靠的5V供电,在电路图中的 VCC和GND为供电网络标识符; l振荡电路:AT89S51需要一个稳定的振荡电路才能够正常工作,在 该电路采用了24Mhz的晶振作为AT89S51的时钟源; l复位电路:复位电路是单片机正常运行的一个必要部分,复位电路 应该保证单片机在上电的瞬间进行一次有效的复位,在单片机正常 工作时将RST引脚置低。此外通过一个按键进行手动复位,在单片 机运行不正常时使用。 技术凝聚实力 专业创新出版 11.4.2 键盘输入电路 l由于多功能数字温度计具备时钟的功能,因此需要具有设置时钟的按键输 入设备,在本章案例中采用了4个上拉的按键作为输入设备,与AT89S51的 P1_0P1_3相连,其电路如图所示。 l键盘输入的具体设计细节请参考本书第7章。 技术凝聚实力 专业创新出版 11.4.3 电源电路 l为了降低成本,该多功能数字温度计采用了MC7805作为 电源芯片,MC7805是使用最为广泛的一种电源稳压芯片 ,各大芯片公司都有生产或具有兼容产品。 l从芯片的手册上可知,MC7805能够将730V的输入电压 稳压至5V输出,但是由于MC7805不是开关电源,而是线 性稳压电源,因此多余的电压都将转换为热能被消耗, 导致芯片发热,因此MC7805的输入电压不宜太高。 l采用MC7805作为电源的电路,其中BAT是电池电源输入 端,一般为9V。 技术凝聚实力 专业创新出版 11.4.4 多功能数字温度计的硬件电路 l通过11.2.111.2.5小节的设计分析,可以得到该多功能数字温度计的硬 件电路图如图所示,其中P2为电源输入接口,蜂鸣器使用P2_7引脚驱动。 技术凝聚实力 专业创新出版 11.5 多功能数字温度计软件设计 l本节讲解多功能温度计的软件设计,软件要实现的功能 包括实时温度测量显示、时钟显示、时钟设置、闹铃设 置、闹铃等功能。下面详细讲解软件的设计过程。 技术凝聚实力 专业创新出版 11.5.1 软件结构分析 l一个嵌入式系统软件总是由复杂的程序构成的,一般来 说,一个完整的嵌入式程序分为两个主要的层次,功能 软件和底层驱动。 技术凝聚实力 专业创新出版 11.5.2 DS1620驱动程序设计 lDS1620的驱动程序由以下几部分组成。 lDS1620写字节函数;DS1620读字节函数; lDS1620写控制寄存器函数;DS1620读控制寄存器函数; lDS1620读取温度值函数;DS1620启动转换函数; lDS1620初始化函数; l11.5.2.1 宏定义 l11.5.2.2 DS1620写字节函数 l11.5.2.3 DS1620读字节函数 l11.5.2.4 DS1620写控制寄存器函数 l11.5.2.5 DS1620读控制寄存器函数 l11.5.2.6 DS1620读温度值函数 l11.5.2.7 DS1620启动温度转换函数 l11.5.2.8 DS1620初始化函数 技术凝聚实力 专业创新出版 11.5.3 MAX7219驱动程序设计 lMAX7219的驱动程序由以下几部分组成。 lMAX7219写控制函数; lMAX7219初始化函数; l11.5.3.1 宏定义 l11.5.3.2 MAX7219写控制函数 l11.5.3.3 MAX7219初始化函数 技术凝聚实力 专业创新出版 11.5.4 键盘接口程序设计 l键盘接口程序的功能是对按下的按键进行识别,为程序 提供按键码,为执行下一步程序提供来自用户的反馈。 l键盘接口程序比较简单,就是使用P1口读取按键的值, 然后返回按键值,具体的按键输入程序过程请读者参考 本书第七章。 l11.5.4.1 宏定义 l11.5.4.2 键盘接口程序 技术凝聚实力 专业创新出版 11.5.5 蜂鸣器驱动程序设计 l驱动蜂鸣器就是靠AT89S51的P2_7引脚,驱动蜂鸣器就 是通过P2_7输出一个低电平,将三极管导通,从而驱动 蜂鸣器发声。 l11.5.5.1 宏定义 l11.5.5.2 蜂鸣器驱动 技术凝聚实力 专业创新出版 11.5.6 定时器时钟基准设计 l定时器时钟基准的目的是产生以一秒为周期的时钟基准 ,这样就可作为时钟的驱动基准。 l利用定时器T0可以产生2ms的中断脉冲,500个2ms技术 即为1s。在使用24MHz晶振时,产生2ms需要的计数器初 值为: l#define TH0_VALUE 0x06 l#define TL0_VALUE 0x00 l11.5.6.1 定时器时钟中断 l11.5.6.2 定时器初始化函数 l11.5.6.3 定时器启动函数 技术凝聚实力 专业创新出版 11.5.7 时钟显示程序设计 l时钟显示程序的功能是每隔一分钟更新一次显示的时钟 值,时钟值按照24小时的格式进行显示,具体函数代码 如下。 技术凝聚实力 专业创新出版 11.5.8 闹铃程序设计 l闹铃程序实现的功能是,当当前时间和闹铃时间一致时 ,闹铃开始发声报警, 技术凝聚实力 专业创新出版 11.5.9 按键操作程序设计 l用户要通过键盘操作进行闹铃和时钟的设置,因此按键 操作函数比较复杂,在函数中调用了键盘接口函数, 技术凝聚实力 专业创新出版 11.5.10 显示温度程序设计 l显示温度程序的功能是在温度计上实时显示当前所测量 的温度值,程序调用了DS1620读温度函数,具体代码如 下。 技术凝聚实力 专业创新出版 11.5.11 主程序 l在所有函数和分支程序都设计完成后,主程序的设计变 得十分简单,主程序的工作是初始化各个部件,并在无 限循环内不断运行各个子分支程序, 技术凝聚实力 专业创新出版 11.6 多功能数字温度计工程文件 l与之前章节介绍的小程序不同,在本章的案例中,对于这样一个较大的工 程,为了使得所有的函数和分支程序能够统一编译,需要在Keil C51里统 一建立一个工程文件,进行统一的编译与调试。 技术凝聚实力 专业创新出版 11.6.1 主函数 lMain.C为整个工程的主体文件,包含了工程的入口函数 main()。(具体内容请参照本书) 技术凝聚实力 专业创新出版 11.6.2 温度传感器DS1620函数库 lDS1620.C包含了所有对温度传感器DS1620的操作函数, 具

温馨提示

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

评论

0/150

提交评论