第11章 51单片机的温度和时间采集模块
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前一页
11.4.3 DS12C887的操作步骤和驱动函数
51单片机使用地址—数据总线扩展DS12C887的操作步骤如下。 (1)根据外部扩展方法计算出DS12C887的内部地址单元和寄存器的地址。 (2)使DS12C887进入设置模式,设置初始时钟信息。 (3)根据需要设置相关的闹钟或者输出波形信息。 (4)读取相关的时钟信息。 例11.2是51单片机使用地址—数据总线扩展DS12C887的驱动函数,应用代码首先定义了 DS12C887的命令常数,然后使用_at_关键字定义了DS12C887的内部寄存器地址,提供了如 下函数用于对DS12C887进行操作。 【例11.2】DS12C887的驱动函数。 (实例代码详见教材)
前一页
首页
11.4 并行总线接口时钟模块 DS12C887
11.4.1 DS12C887基础 11.4.2 DS12C887的电路 11.4.3 DS12C887的操作步骤和驱动函数
前一页
首页
11.4.1 DS12C887基础
DS12C887模块由内部控制寄存器、日期时间寄存器、时间日期技术电路等组成,具有以下特点。 ●内置晶体振荡器和锂电池,可以在无外部供电的情况下保存数据10年以上。 ●具有秒、分、时、星期、日、月、年计数,并有闰年修正功能。 ●时间显示可以选择24小时模式或者带有“AM”和“PM”指示的12小时模式。 ●时间、日历和闹钟均具有二进制码和BCD码两种形式。 ●提供闹钟中断、周期性中断、时钟更新周期结束中断,3个中断源可以通过软件编程进行控制。 ●内置128字节RAM,其中15字节为时间和控制寄存器,113字节可以用作通用RAM,所有 RAM单元都具有掉电保护功能,因此可被用作非易失性RAM。 ●可以提供可输出可编程的方波信号。 DS12C887芯片的内部带有时钟、星期和日期等信息寄存器,实时时间信息就存放在这些非易失 寄存器中,与51单片机一样,DS12C887采用的也是8位地址/数据复用的总线方式,它同样具有 一个锁存引脚,通过读、写、锁存信号的配合,可以实现数据的输入输出:控制DS12C887内部 的控制寄存器、读取DS12C887内部的时间信息寄存器。DS12C887的各种寄存器在其内部空间 都有相应的固定地址,因此,单片机通过正确的寻址和寄存器操作就可以获取所需要的时间信 息。 表11.8(详见教材)是DS12C887的控制寄存器A的内部结构示意。 表11.9 (详见教材)是DS12C887的控制寄存器B的内部结构示意。 表11.10 (详见教材)是DS12C887的控制寄存器C的内部结构示意。 表11.11 (详见教材)是DS12C887的控制寄存器D的内部结构示意。
前一页
11.5 应用案例11.1-多点温度采 集系统的实现
11.5.1多点温度采集系统的设计 11.5.2多点温度采集系统的电路结构 11.5.3多点温度采集系统的应用代码
前一页
首页
11.5.1多点温度采集系统的设计
设计多点温度采集系统,需要考虑如下几个方面的内容。 ●需要1个能将温度数据转换为采集数据的传感器,其相关指标必须符合采集系统的需求: 由于8个采集点都在10m范围之内,采集温度范围又在-30~+50℃,并且精度只有0.5℃, 所以可以采用1-wire接口的数字温度传感器DS18B20。 ●需要1个能显示温度数据的显示模块:由于只需要显示简单的字符和数字,所以可以使 用1602液晶模块完成相应的工作。 ●51单片机通过何种方式来和传感器进行数据交互:DS18B20数字温度传感器提供了1wire总线接口,51单片机可以使用普通I/O引脚模拟相应的总线时序和传感器进行通信。 ●需要设计合适的单片机软件。
前一页
11.1在51单片应用系统中获取温度
在51单片机应用系统中获取温度信号的方法通常有如下两种。 ●使用数字温度传感器采集:通常利用两个不同温度系数的晶振控制两个计数器进行计数,利 用温度对晶振精度影响的差异测量温度。 ●使用PT铂电阻采集:利用PT金属在不同温度下的电阻值不同的原理来测量温度。 需要注意的是,PT铂电阻根据温度变化的其实只是其电阻值,所以在实际使用过程中需要额外 的辅助器件将其转化为电压信号并且通过调整后送到模拟—数字转化器件才能让51单片机处理, 其组成如下左图所示。 而数字温度传感器在实际使用中则直接和51单片机连接即可,如下右图所示,其具有体积小、 电路简单的优势,但是数字温度传感器通常对安装位置有要求,例如,不能将其贴在被加热物 体(如锅炉)的外壁上。
前一页
11.5.2多点温度采集系统的电路结构
多点温度采集系统硬件设计的重点是如何和多个DS18B20进行数据交互获得当前的温度。多点 温度采集系统的电路如下图所示,51单片机使用P1端口和P2.0~P2.2引脚扩展了一片1602液晶 作为多点温度采集系统的显示模块,使用P2.7引脚模拟1-wire总线时序扩展了8个DS18B20提 供温度数据。
多点温度采集模块中涉及的典型器件说明图表11.12(详见教材)所示。 前一页
11.5.3多点温度采集系统的应用代码
多点温度采集系统的应用代码设计的重点是如何实现对同一条1-wire 总线上多个DS18B20的数据进行读取,其软件可以分为DS18B20驱 动函数模块和1602液晶显示驱动模块两个部分。 多点温度采集系统的DS18B20驱动函数和例11.1中所介绍的有所区别, 它包括了初始化函数void Initialization(),向DS18B20写入一个字节的 函数void WriteByte(unsigned char btData),从DS18B20读出一个字 节的函数unsigned char ReadByte(),ROM匹配函数void MatchROM(const unsigned char *pMatchData)和温度读取函数 TEMPDATA ReadTemperature(),其中最关键的函数是TEMPDATA ReadTemperature,其流程如右图所示。 在例11.3所示的应用代码中, 定义了一个结构体tagTempData用于存放当前的温度输出,为了便于 显示,把温度数据数据都拆开存放到结构体中。 【例11.3】多点温度采集系统的应用代码。(实例代码详见教材) 【例11.4】多点温度采集系统对应的C51语言代码。(实例代码详见 教材)
前一页
11.2.2 DS18B20的电路
在独立供电的工作方式下,DS18B20由独立的电源提供供电,此时的1-wire总线使用普通的电 阻做上拉即可,需要注意的是此时DS18B20的电源地(GND)引脚必须连接到供电电源的地。 如下图所示。
使用寄生供电的DS18B20电路如下图所示,在寄生供电的工作方式下,当1-wire信号线上输出 高电平时,DS18B20从信号线上获取电能并且将电能存储在寄生电容中;当信号线上输出低电 平时,DS18B20消耗电能,寄生供电工作方式的优点是无需本地电源,从而使得电路更加简单。
前一页
首页
11.2 DS18B20温度传感器
11.2.1 DS18B20基础 11.2.2 DS18B20的电路 11.2.3 DS18B20的操作步骤和驱动函数
前一页
首页
11.2.1 DS18B20基础
DS18B20的主要特点如下。 ●具有3~5.5V很广范围工作电压,并且可以使用寄生电容供电的方式,此时只需要在数据线 上连接一个电容即可完成供电。 ●所有的应用模块都集中在一个和普通三极管大小相同的芯片内,使用过程中不需要任何外 围器件。 ●可测量温度区间为-55~125℃,其中在-10~85℃的区间内测量精度为0.5℃。 ●测量分辨率可以设置为9位~12位,对应的最小温度刻度为0.5℃、0.25℃、0.125℃和 0.0625℃; 图11.5 DS18B20的实物示意 ●在9位精度时候转化过程仅耗时93.75ms,在12位精度时则需要750ms; ●支持在同一条1-wire总线上挂接多个DS18B20器件形成多点测试,在数据传输过程中可以 跟随CRC校验。 DS18B20主要由内部ROM、温度传感器、高速缓存以及数据接口4个模块组成,如下图所示。
前一页
11.6.2简单数字时钟的电路结构
数字时钟的电路如下图所示,51单片机使用P0口和DS12C887进行数据交互,使用P2.0~P2.3 作为DS12C887的控制引脚;同时使用P1引脚扩展了一个1602液晶模块用于显示时间信息。
前一页
11.3 51单片的时间采集通道
时间传感器是指能给51单片机的应用系统提供当前时间和日期信息的模块,比起使用51单片机 内置的定时计数器来实现软件定时,时间传感器具有不占用单片机内部资源(需要占用引脚)、 软件相对简单、时间精度较高和掉电不会丢失数据的优点。 单片机应用系统通常使用如下3种方式来获得时间信息。 ●使用单片机的内部定时器进行定时,使用软件算法来计算当前的时间信息。 ●从专用的实时时钟芯片来获取当前的时间信息,实时时钟芯片RTC(Real Time Clock)是 一种可以自行对当前时间信息进行计算并且可以通过相应的数据接口将时间信息输出的芯片。 ●从GPS模块获取当前的实际时钟信息。 这3种方法的优缺点如表11.7(详见教材)所示。
前一页
11.6应用案例11.ຫໍສະໝຸດ Baidu-简单数字时钟的 实现
11.6.1简单数字时钟的设计 11.6.2简单数字时钟的电路结构 11.6.3简单数字时钟的应用代码
前一页
首页
11.6.1简单数字时钟的设计
设计简单数字时钟,需要考虑如下几个问题。 ●如何获得当前的时间信息,这些时间信息包括时、 分、秒、年、月、日和星期:可以使 用时钟传感器来获得当前的时钟信息,由于简单数字时钟的外部器件比较简单,所以可以 使用内部带有电池模块的并行时钟芯片DS12C887。 ●需要一个能显示当前时钟信息的显示模块:由于简单数字时钟的显示内容比较简单,所 以使用了能显示字符和数字的液晶模块1602。 ●需要设计合适的单片机软件。
前一页
11.4.2 DS12C887的电路
DS12C887的应用电路如图11.14所示,51单片机的P0端口作为数据/地址总线连接到 DS12C887的数据/地址总线,DS12C887的MOT引脚直接连接到地选择Intel总线模式,/CS引 脚连接到51单片机的P2.7作为外部地址控制,同时使用单片机的ALE输出信号来控制 DS12C887的AS信号,单片机的WR和RD信号分别连接到DS12C887的R/W和DS引脚, DS12C887的中断信号引脚/IRQ通过一个上拉电阻连接到51单片机的INT0引脚上,如下图所示 的DS12C887的地址为0x7FFF~0x807F。
前一页
11.2.3 DS18B20的操作步骤和驱动函数
51单片机使用普通I/O引脚模拟1-wire总线时序扩展DS18B20的操作步骤如下。 (1)复位1-wire总线。 (2)根据1-wire总线上挂接的器件情况发送匹配或者跳过ROM命令。 (3)设置需要采集温度的上下限区间。 (4)设置采样精度。 (5)启动采集并且等待完成之后读取温度数据。 例11.1是51单片机使用普通I/O引脚模拟1-wire总线时序扩展DS18B20的驱动函数,其中调用 了第9章的9.3.3小节中介绍的1-wire总线驱动函数,提供了用于DS18B20初始化的 DS18b20_int函数和用于从DS18B20读取温度数据的函数DS18b20_readTemp。 【例11.1】DS18B20的驱动函数。 (实例代码详见教材)
《单片机应用技术实例教程(C51版)》
--高等院校嵌入式人才培养规划教材
第11章 51单片机的温度和时 间采集模块
本章主要内容
11.1 在51单片应用系统中获取温度 11.2 DS18B20温度传感器 11.3 51单片机的时间采集通道 11.4 并行总线接口时钟模块DS12C887 11.5 应用案例11.1-多点温度采集系统的实现 11.6 应用案例11.2-简单数字时钟的实现 11.7 本章总结
11.4.3 DS12C887的操作步骤和驱动函数
51单片机使用地址—数据总线扩展DS12C887的操作步骤如下。 (1)根据外部扩展方法计算出DS12C887的内部地址单元和寄存器的地址。 (2)使DS12C887进入设置模式,设置初始时钟信息。 (3)根据需要设置相关的闹钟或者输出波形信息。 (4)读取相关的时钟信息。 例11.2是51单片机使用地址—数据总线扩展DS12C887的驱动函数,应用代码首先定义了 DS12C887的命令常数,然后使用_at_关键字定义了DS12C887的内部寄存器地址,提供了如 下函数用于对DS12C887进行操作。 【例11.2】DS12C887的驱动函数。 (实例代码详见教材)
前一页
首页
11.4 并行总线接口时钟模块 DS12C887
11.4.1 DS12C887基础 11.4.2 DS12C887的电路 11.4.3 DS12C887的操作步骤和驱动函数
前一页
首页
11.4.1 DS12C887基础
DS12C887模块由内部控制寄存器、日期时间寄存器、时间日期技术电路等组成,具有以下特点。 ●内置晶体振荡器和锂电池,可以在无外部供电的情况下保存数据10年以上。 ●具有秒、分、时、星期、日、月、年计数,并有闰年修正功能。 ●时间显示可以选择24小时模式或者带有“AM”和“PM”指示的12小时模式。 ●时间、日历和闹钟均具有二进制码和BCD码两种形式。 ●提供闹钟中断、周期性中断、时钟更新周期结束中断,3个中断源可以通过软件编程进行控制。 ●内置128字节RAM,其中15字节为时间和控制寄存器,113字节可以用作通用RAM,所有 RAM单元都具有掉电保护功能,因此可被用作非易失性RAM。 ●可以提供可输出可编程的方波信号。 DS12C887芯片的内部带有时钟、星期和日期等信息寄存器,实时时间信息就存放在这些非易失 寄存器中,与51单片机一样,DS12C887采用的也是8位地址/数据复用的总线方式,它同样具有 一个锁存引脚,通过读、写、锁存信号的配合,可以实现数据的输入输出:控制DS12C887内部 的控制寄存器、读取DS12C887内部的时间信息寄存器。DS12C887的各种寄存器在其内部空间 都有相应的固定地址,因此,单片机通过正确的寻址和寄存器操作就可以获取所需要的时间信 息。 表11.8(详见教材)是DS12C887的控制寄存器A的内部结构示意。 表11.9 (详见教材)是DS12C887的控制寄存器B的内部结构示意。 表11.10 (详见教材)是DS12C887的控制寄存器C的内部结构示意。 表11.11 (详见教材)是DS12C887的控制寄存器D的内部结构示意。
前一页
11.5 应用案例11.1-多点温度采 集系统的实现
11.5.1多点温度采集系统的设计 11.5.2多点温度采集系统的电路结构 11.5.3多点温度采集系统的应用代码
前一页
首页
11.5.1多点温度采集系统的设计
设计多点温度采集系统,需要考虑如下几个方面的内容。 ●需要1个能将温度数据转换为采集数据的传感器,其相关指标必须符合采集系统的需求: 由于8个采集点都在10m范围之内,采集温度范围又在-30~+50℃,并且精度只有0.5℃, 所以可以采用1-wire接口的数字温度传感器DS18B20。 ●需要1个能显示温度数据的显示模块:由于只需要显示简单的字符和数字,所以可以使 用1602液晶模块完成相应的工作。 ●51单片机通过何种方式来和传感器进行数据交互:DS18B20数字温度传感器提供了1wire总线接口,51单片机可以使用普通I/O引脚模拟相应的总线时序和传感器进行通信。 ●需要设计合适的单片机软件。
前一页
11.1在51单片应用系统中获取温度
在51单片机应用系统中获取温度信号的方法通常有如下两种。 ●使用数字温度传感器采集:通常利用两个不同温度系数的晶振控制两个计数器进行计数,利 用温度对晶振精度影响的差异测量温度。 ●使用PT铂电阻采集:利用PT金属在不同温度下的电阻值不同的原理来测量温度。 需要注意的是,PT铂电阻根据温度变化的其实只是其电阻值,所以在实际使用过程中需要额外 的辅助器件将其转化为电压信号并且通过调整后送到模拟—数字转化器件才能让51单片机处理, 其组成如下左图所示。 而数字温度传感器在实际使用中则直接和51单片机连接即可,如下右图所示,其具有体积小、 电路简单的优势,但是数字温度传感器通常对安装位置有要求,例如,不能将其贴在被加热物 体(如锅炉)的外壁上。
前一页
11.5.2多点温度采集系统的电路结构
多点温度采集系统硬件设计的重点是如何和多个DS18B20进行数据交互获得当前的温度。多点 温度采集系统的电路如下图所示,51单片机使用P1端口和P2.0~P2.2引脚扩展了一片1602液晶 作为多点温度采集系统的显示模块,使用P2.7引脚模拟1-wire总线时序扩展了8个DS18B20提 供温度数据。
多点温度采集模块中涉及的典型器件说明图表11.12(详见教材)所示。 前一页
11.5.3多点温度采集系统的应用代码
多点温度采集系统的应用代码设计的重点是如何实现对同一条1-wire 总线上多个DS18B20的数据进行读取,其软件可以分为DS18B20驱 动函数模块和1602液晶显示驱动模块两个部分。 多点温度采集系统的DS18B20驱动函数和例11.1中所介绍的有所区别, 它包括了初始化函数void Initialization(),向DS18B20写入一个字节的 函数void WriteByte(unsigned char btData),从DS18B20读出一个字 节的函数unsigned char ReadByte(),ROM匹配函数void MatchROM(const unsigned char *pMatchData)和温度读取函数 TEMPDATA ReadTemperature(),其中最关键的函数是TEMPDATA ReadTemperature,其流程如右图所示。 在例11.3所示的应用代码中, 定义了一个结构体tagTempData用于存放当前的温度输出,为了便于 显示,把温度数据数据都拆开存放到结构体中。 【例11.3】多点温度采集系统的应用代码。(实例代码详见教材) 【例11.4】多点温度采集系统对应的C51语言代码。(实例代码详见 教材)
前一页
11.2.2 DS18B20的电路
在独立供电的工作方式下,DS18B20由独立的电源提供供电,此时的1-wire总线使用普通的电 阻做上拉即可,需要注意的是此时DS18B20的电源地(GND)引脚必须连接到供电电源的地。 如下图所示。
使用寄生供电的DS18B20电路如下图所示,在寄生供电的工作方式下,当1-wire信号线上输出 高电平时,DS18B20从信号线上获取电能并且将电能存储在寄生电容中;当信号线上输出低电 平时,DS18B20消耗电能,寄生供电工作方式的优点是无需本地电源,从而使得电路更加简单。
前一页
首页
11.2 DS18B20温度传感器
11.2.1 DS18B20基础 11.2.2 DS18B20的电路 11.2.3 DS18B20的操作步骤和驱动函数
前一页
首页
11.2.1 DS18B20基础
DS18B20的主要特点如下。 ●具有3~5.5V很广范围工作电压,并且可以使用寄生电容供电的方式,此时只需要在数据线 上连接一个电容即可完成供电。 ●所有的应用模块都集中在一个和普通三极管大小相同的芯片内,使用过程中不需要任何外 围器件。 ●可测量温度区间为-55~125℃,其中在-10~85℃的区间内测量精度为0.5℃。 ●测量分辨率可以设置为9位~12位,对应的最小温度刻度为0.5℃、0.25℃、0.125℃和 0.0625℃; 图11.5 DS18B20的实物示意 ●在9位精度时候转化过程仅耗时93.75ms,在12位精度时则需要750ms; ●支持在同一条1-wire总线上挂接多个DS18B20器件形成多点测试,在数据传输过程中可以 跟随CRC校验。 DS18B20主要由内部ROM、温度传感器、高速缓存以及数据接口4个模块组成,如下图所示。
前一页
11.6.2简单数字时钟的电路结构
数字时钟的电路如下图所示,51单片机使用P0口和DS12C887进行数据交互,使用P2.0~P2.3 作为DS12C887的控制引脚;同时使用P1引脚扩展了一个1602液晶模块用于显示时间信息。
前一页
11.3 51单片的时间采集通道
时间传感器是指能给51单片机的应用系统提供当前时间和日期信息的模块,比起使用51单片机 内置的定时计数器来实现软件定时,时间传感器具有不占用单片机内部资源(需要占用引脚)、 软件相对简单、时间精度较高和掉电不会丢失数据的优点。 单片机应用系统通常使用如下3种方式来获得时间信息。 ●使用单片机的内部定时器进行定时,使用软件算法来计算当前的时间信息。 ●从专用的实时时钟芯片来获取当前的时间信息,实时时钟芯片RTC(Real Time Clock)是 一种可以自行对当前时间信息进行计算并且可以通过相应的数据接口将时间信息输出的芯片。 ●从GPS模块获取当前的实际时钟信息。 这3种方法的优缺点如表11.7(详见教材)所示。
前一页
11.6应用案例11.ຫໍສະໝຸດ Baidu-简单数字时钟的 实现
11.6.1简单数字时钟的设计 11.6.2简单数字时钟的电路结构 11.6.3简单数字时钟的应用代码
前一页
首页
11.6.1简单数字时钟的设计
设计简单数字时钟,需要考虑如下几个问题。 ●如何获得当前的时间信息,这些时间信息包括时、 分、秒、年、月、日和星期:可以使 用时钟传感器来获得当前的时钟信息,由于简单数字时钟的外部器件比较简单,所以可以 使用内部带有电池模块的并行时钟芯片DS12C887。 ●需要一个能显示当前时钟信息的显示模块:由于简单数字时钟的显示内容比较简单,所 以使用了能显示字符和数字的液晶模块1602。 ●需要设计合适的单片机软件。
前一页
11.4.2 DS12C887的电路
DS12C887的应用电路如图11.14所示,51单片机的P0端口作为数据/地址总线连接到 DS12C887的数据/地址总线,DS12C887的MOT引脚直接连接到地选择Intel总线模式,/CS引 脚连接到51单片机的P2.7作为外部地址控制,同时使用单片机的ALE输出信号来控制 DS12C887的AS信号,单片机的WR和RD信号分别连接到DS12C887的R/W和DS引脚, DS12C887的中断信号引脚/IRQ通过一个上拉电阻连接到51单片机的INT0引脚上,如下图所示 的DS12C887的地址为0x7FFF~0x807F。
前一页
11.2.3 DS18B20的操作步骤和驱动函数
51单片机使用普通I/O引脚模拟1-wire总线时序扩展DS18B20的操作步骤如下。 (1)复位1-wire总线。 (2)根据1-wire总线上挂接的器件情况发送匹配或者跳过ROM命令。 (3)设置需要采集温度的上下限区间。 (4)设置采样精度。 (5)启动采集并且等待完成之后读取温度数据。 例11.1是51单片机使用普通I/O引脚模拟1-wire总线时序扩展DS18B20的驱动函数,其中调用 了第9章的9.3.3小节中介绍的1-wire总线驱动函数,提供了用于DS18B20初始化的 DS18b20_int函数和用于从DS18B20读取温度数据的函数DS18b20_readTemp。 【例11.1】DS18B20的驱动函数。 (实例代码详见教材)
《单片机应用技术实例教程(C51版)》
--高等院校嵌入式人才培养规划教材
第11章 51单片机的温度和时 间采集模块
本章主要内容
11.1 在51单片应用系统中获取温度 11.2 DS18B20温度传感器 11.3 51单片机的时间采集通道 11.4 并行总线接口时钟模块DS12C887 11.5 应用案例11.1-多点温度采集系统的实现 11.6 应用案例11.2-简单数字时钟的实现 11.7 本章总结