《数温控--完全手册_51单片机C语言开发详解系列之第11章__综合实例——多功能数字温度计.ppt》由会员分享,可在线阅读,更多相关《数温控--完全手册_51单片机C语言开发详解系列之第11章__综合实例——多功能数字温度计.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、技术凝聚实力技术凝聚实力专业创新出版专业创新出版第11章 综合实例多功能数字温度计设计l通过前面几章的学习,读者已经基本掌握了AT89S51单片机的系统设计与程序设计方法。从本章开始,将通过综合的实例向读者继续深入介绍嵌入式系统开发的知识和实例。l本章主要讲解一个多功能数字温度计设计的综合实例,通过该实例,读者能够学习到键盘输入设计、LED数码管接口设计、温度采集、人机交互设计等各方面的知识。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.1 系统结构与分析l本章介绍的多功能数字温度计具备温度计和时钟的功能,该系统由以下几个部分组成:单片机、温度传感器、显示设备、键盘输入几部分组成。技术
2、凝聚实力技术凝聚实力专业创新出版专业创新出版11.1.1 多功能数字温度计功能分析l在本章设计的多功能温度计,需要具备以下的功能。l温度测量:能够实时显示当前的环境温度;l时钟功能:能够作为时钟使用,显示当前时间;l闹铃功能:能够在设定时间时候,作为闹铃发声;l时钟设置功能:能够设定时钟,修改当前时间;l电池或者直流稳压电源9V供电;技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.1.2 多功能数字温度计系统分析l多功能数字温度计的原理十分简单,即通过温度传感器测量温度,通过单片机采集后在LED数码管上显示出来,同时,该温度计还兼有时钟的功能。技术凝聚实力技术凝聚实力专业创新出版专业创新
3、出版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的
4、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位的控
5、制寄存器,用于控制温度传感器的所有操作,其寄存器各位分布如图所示。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2.6 DS1620的操作字l要对DS1620进行需要的操作,就需要执行DS1620的操作字,如图11.8时序图中的Protocol部分就是操作字的代码,跟随Protocol后的是操作字的参数或者读取值。lDS1620共有如下的9个不同的操作字,通过不同的操作字可以实现开始转换温度、对DS1620的寄存器进行读写、读取温度数据、设置TH和TL等操作。lAAH:读取转换好的温度数据,从指令输入后的第9个时钟脉冲开始,将输出温度寄存器中的数据;l01H:给高温临界寄存器写入TH数
6、据;02H:给低温临界寄存器写入TL数据;lA1H:读高温临界寄存器中的TH数据;A2H:读低温临界寄存器中的TL数据;lEEH:开始转换温度数据;22H:停止转换温度数据;l0CH:写控制寄存器;ACH:读控制寄存器。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2.7 DS1620的单独工作模式lDS1620可以工作在无单片机控制的系统中,称为DS1620的单独工作模式,在这种工作模式下,主要是依靠DS1620的三个温度限制输出引脚进行控制,作为热继电器使用。l使用该工作模式必须写入控制寄存器操作模式和TH、TL寄存器的温度设定值,使用CLK/CONV用作转换开始控制端。这种工作模
7、式下,控制寄存器的CPU标志位必须设为“0”。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2.8 DS1620的单片机接口电路l当使用AT89S51控制DS1620进行温度测量时,只需要使用AT89S51的三个引脚和DS1620的串行接口按照通讯协议进行通讯即可,其电路如图所示。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3 MAX7219数码管驱动电路lMAX7219是Maxim公司生产的一款高性能8位共阴极数码管驱动芯片,通过MAX7219可以使用单片机极少的引脚实现多个数码管的显示驱动。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.1 MAX7219的性能
8、指标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
9、.4 MAX7219的内部寄存器地址l要实现数码管的不同模式、不同形式下的驱动,就需要对MAX7219的内部寄存器进行操作,寄存器的地址为数据D8D11位,如图所示。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.5 MAX7219的数字位寄存器l数字位寄存器的地址为01H08H,其对应了每个数码管的现实内容,在没有进行使用解码模式时,其存储数据与数码管显示的对应方式如图所示。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.6 MAX7219的停机寄存器l停机寄存器用于关闭MAX7219,如图所示,当D0=0 时,MAX721 处于停机状态;当D0=1 时,处于正常工作状态
10、。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.7 MAX7219的测试寄存器l测试寄存器用于测试数码管和MAX7219十分正常工作,如图所示,当D0=0时,MAX7219 按设定模式正常工作;当D0=1 时,处于测试状态。l在测试状态下,无论MAX7219 处于什么模式,全部LED 将按最大亮度显示。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.8 MAX7219的亮度寄存器l数码管的现实亮度可以用硬件和软件两种方法调节,亮度寄存器中的D0D3位可以控制LED 显示器的亮度,如图所示,通过改变亮度寄存器的值,可以调整MAX7210驱动数码管的有效循环时间,从而改变数码
11、管显示的亮度。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.9 MAX7219的扫描界限寄存器lMAX7219的扫描界限寄存器用于限定MAX7219的扫描数码管的个数,这个主要是用于当MAX7219被用于驱动不到8个数码管的情况下,例如本章的数码温度计只使用了6个数码管,就可以限制扫描数码管的个数为6。l如图所示,该寄存器中D0D3 位数据设定值为07H,设定值表示显示器动态扫描个数为18。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.10 MAX7219的译码寄存器l该寄存器的8 位二进制数的各位分别控制8 个LED 显示器的译码方式。当高电平时,选择BCD-B 译码
12、模式,当低电平时选择不译码模式,而使用送来数据为字型码,其具体对应的实例如图所示。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.11 MAX7219驱动电路设计l如图所示为官方推荐的MAX7219常用驱动电路连接图,图中ISET引脚连接的是硬件调节数码管亮度的电阻,可以通过更改外接电阻值改变数码管的亮度。lDIG0DIG7引脚分别与8位数码管的共阴极相连,SEG AG及其DP引脚分别与每个数码管的AG与GP段相连,AG以及DP各段的定义请参考图技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4 其他硬件电路设计l除了温度传感器电路和数码管驱动电路,在本节中继续介绍多功能温度计
13、其余的硬件电路设计,包括单片机最小系统、电源系统、按键输入等部分。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.1 AT89S51单片机最小系统电路l在该设计中采用了AT89S51单片机作为核心处理器,因此在电路中首先需要设计的是AT89S51的最小系统。lAT89S51单片机的最小系统电路包含以下几个部分:l单片机供电电路:AT89S51需要具有可靠的5V供电,在电路图中的VCC和GND为供电网络标识符;l振荡电路:AT89S51需要一个稳定的振荡电路才能够正常工作,在该电路采用了24Mhz的晶振作为AT89S51的时钟源;l复位电路:复位电路是单片机正常运行的一个必要部分,复位
14、电路应该保证单片机在上电的瞬间进行一次有效的复位,在单片机正常工作时将RST引脚置低。此外通过一个按键进行手动复位,在单片机运行不正常时使用。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.2 键盘输入电路l由于多功能数字温度计具备时钟的功能,因此需要具有设置时钟的按键输入设备,在本章案例中采用了4个上拉的按键作为输入设备,与AT89S51的P1_0P1_3相连,其电路如图所示。l键盘输入的具体设计细节请参考本书第7章。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.3 电源电路l为了降低成本,该多功能数字温度计采用了MC7805作为电源芯片,MC7805是使用最为广泛的一
15、种电源稳压芯片,各大芯片公司都有生产或具有兼容产品。l从芯片的手册上可知,MC7805能够将730V的输入电压稳压至5V输出,但是由于MC7805不是开关电源,而是线性稳压电源,因此多余的电压都将转换为热能被消耗,导致芯片发热,因此MC7805的输入电压不宜太高。l采用MC7805作为电源的电路,其中BAT是电池电源输入端,一般为9V。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.4 多功能数字温度计的硬件电路l通过11.2.111.2.5小节的设计分析,可以得到该多功能数字温度计的硬件电路图如图所示,其中P2为电源输入接口,蜂鸣器使用P2_7引脚驱动。技术凝聚实力技术凝聚实力专业
16、创新出版专业创新出版11.5 多功能数字温度计软件设计l本节讲解多功能温度计的软件设计,软件要实现的功能包括实时温度测量显示、时钟显示、时钟设置、闹铃设置、闹铃等功能。下面详细讲解软件的设计过程。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.1 软件结构分析l一个嵌入式系统软件总是由复杂的程序构成的,一般来说,一个完整的嵌入式程序分为两个主要的层次,功能软件和底层驱动。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.2 DS1620驱动程序设计lDS1620的驱动程序由以下几部分组成。lDS1620写字节函数;DS1620读字节函数;lDS1620写控制寄存器函数;DS1
17、620读控制寄存器函数;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写控制
18、函数;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驱动蜂鸣器就是靠AT89
19、S51的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 0 x06l#define TL0_VALUE 0 x00l11.5.6.1 定时器时钟中断l11.5.6.2 定时器初始化
20、函数l11.5.6.3 定时器启动函数技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.7 时钟显示程序设计l时钟显示程序的功能是每隔一分钟更新一次显示的时钟值,时钟值按照24小时的格式进行显示,具体函数代码如下。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.8 闹铃程序设计l闹铃程序实现的功能是,当当前时间和闹铃时间一致时,闹铃开始发声报警,技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.9 按键操作程序设计l用户要通过键盘操作进行闹铃和时钟的设置,因此按键操作函数比较复杂,在函数中调用了键盘接口函数,技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.1
21、0 显示温度程序设计l显示温度程序的功能是在温度计上实时显示当前所测量的温度值,程序调用了DS1620读温度函数,具体代码如下。技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.11 主程序l在所有函数和分支程序都设计完成后,主程序的设计变得十分简单,主程序的工作是初始化各个部件,并在无限循环内不断运行各个子分支程序,技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6 多功能数字温度计工程文件l与之前章节介绍的小程序不同,在本章的案例中,对于这样一个较大的工程,为了使得所有的函数和分支程序能够统一编译,需要在Keil C51里统一建立一个工程文件,进行统一的编译与调试。技术凝聚实
22、力技术凝聚实力专业创新出版专业创新出版11.6.1 主函数lMain.C为整个工程的主体文件,包含了工程的入口函数main()。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.2 温度传感器DS1620函数库lDS1620.C包含了所有对温度传感器DS1620的操作函数,具体代码如下所示。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.3 DS1620引脚定义lDS1620.h对DS1620的操作函数进行了声明,具体代码如下所示。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.4 数码管驱动MAX7
23、219函数库lMAX7219.c包含了所有对数码管驱动MAX7219的操作函数以及温度显示函数,具体代码如下所示。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.5 MAX7219头文件定义lMAX7219.h对MAX7219的定义进行了声明,其代码如下所示。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.6 键盘操作函数lKeys.c包含了所有的键盘操作函数,具体代码如下。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.7 键盘操作定义lKeys.h包含了对键盘操作函数的声明,具体代码如下所示。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.8 时钟函数库lTimer.c包含了整个系统的时钟基准函数,以及显示时间函数和闹铃函数,具体代码如下。(具体内容请参照本书)技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.9 时间函数定义lTimer.h对时间基准相关的函数进行了声明,具体内容如下。l#ifndef _H_TIMEl#define _H_TIMElvoid TIMER_Init();lvoid TIMER_Start();lvoid Display_Time();lvoid Check_Alarm();l#endif