湖南大学 基于IAP15F2K61S2的数字温度计 中下篇

发布于 13 天前  25 次阅读


湖南大学 基于IAP15F2K61S2的数字温度计 中下篇

湖南大学 基于IAP15F2K61S2与DS18B20的数字温度计 上篇
湖南大学 基于IAP15F2K61S2的数字温度计 中篇

各功能模块简介

传感模块——DS18B20

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5V;零待机功耗;温度以9或12位二进制数字表示;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;

DS18B20采用3脚TO-92封装或8脚SO或µSOP封装,其封装形式如图3-2所示。


图3-2 DS18B20的封装形式


  DS18B20的64位ROM的结构开始8位是产品类型的编号,接着是每个器件的唯一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。

  DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。高速暂存RAM的结构为8字节的存储器,结构如图3-3所示。


图3-3 DS18B20的高速暂存RAM的结构

  DS18B20温度传感器第1、第2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝是易失的,每次上电复位时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,该字节各位的定义如表3-2所示。

表3-2 DS18B20配置寄存器

D7 D6 D5 D4 D3 D2 D1 D0
TM R1 R0 1 1 1 1 1

  配置寄存器的低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,“R1R0”为“00”是9位,“01”是10位,“10”是11位,“11”是12位。当DS18B20分辨率越高时,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。

  高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

  当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。

  当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。表3-3是一部分温度值对应的二进制温度数据。

表3-3 DS18B20输出的温度值

温度值 二进制输出 十六进制输出
+125℃ 0000 0111 1101 0000 07D0h
+85℃ 0000 0101 0101 0000 0550h
+25.0625℃ 0000 0001 1001 0001 0191h
+10.125℃ 0000 0000 1010 0010 00A2h
+0.5℃ 0000 0000 0000 1000 0008h
0℃ 0000 0000 0000 0000 0000h
-0.5℃ 1111 1111 1111 1000 FFF8h
-10.125℃ 1111 1111 0101 1110 FF5Eh
-25.0625℃ 1111 1110 0110 1111 FF6Fh
-55℃ 1111 1100 1001 0000 FC90h

  DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。

显示模块——1602液晶

  Liquid Crystal Display(LCD)表示液晶,1602表示一行可以显示16个字符,一共有两行,因此故名1602液晶。1602液晶它是一种专门用来显示字母、数字、符号等的点阵型的液晶模块,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。其管脚图如图3-4所示。

图3-4 LCD1602管脚图

其功能如表3-4所示:

表3-4 LCD1602引脚功能说明

编号 符号 引脚说明 编号 符号 引脚说明
1 VSS 电源地 9 D2 数据I/O
2 VDD 电源正极 10 D3 数据I/O
3 VL 液晶显示偏压 11 D4 数据I/O
4 RS 数据/命令选择 12 D5 数据I/O
5 RW 读/写选择 13 D6 数据I/O
6 E 使能信号 14 D7 数据I/O
7 D0 数据I/O 15 BL+ 背光源正极
8 D1 数据I/O 16 BL- 背光源负极

1602液晶模块内部的控制器共有11条控制指令,表3-5所示为各控制指令寄存器内部取值:

表3-5 LCD1602的11条控制指令

序号 指令 RS RW D7 D6 D5 D4 D3 D2 D1 D0
1 清显示 0 0 0 0 0 0 0 0 0 1
2 光标返回 0 0 0 0 0 0 0 0 1 ×
3 置输入模式 0 0 0 0 0 0 0 1 I/D S
4 显示开/关控制 0 0 0 0 0 0 1 D C B
5 光标或字符移位 0 0 0 0 0 1 S/C R/L × ×
6 置功能 0 0 0 0 1 DL N F × ×
7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址
8 置数据存贮器地址 0 0 1 显示数据存贮器地址
9 读忙标志或地址 0 1 BF 计数器地址
10 写数列CGRAM或DDRAM 1 0 要写的数据内容
11 从CGRAM或DDRAM读数 1 1 读出的数据内容

1602液晶的读写操作时序分别如图3-5、图3-6所示:

图3-5 LCD1602读操作时序图

图3-6 LCD1602写操作时序图

其中,1602液晶时序时间参数如表3-6所示:

表3-6 LCD1602时序功能表

时序参数 符号 极限值 单位 测试条件
最小值 典型值 最大值
E信号周期 400 - - | ns | 引脚E
E脉冲宽度 150 - - | ns
E上升沿/下降沿时间 - - 25 | ns
地址建立时间 30 - - | ns | 引脚E、RS、RW
地址保持时间 10 - - | ns
数据建立时间(读操作) - - 100 | ns | 引脚DB0~DB7
数据保持时间(读操作) 20 - - | ns
数据建立时间(写操作) 40 - - | ns
数据保持时间(写操作) 10 - - | ns

  为了在1602液晶屏幕上显示字符,就把字符代码送入DDRAM。DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。同样LCD1602共有80个字节的显存,即DDRAM。但LCD1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,图3-7展示了DDRAM地址和屏幕的对应关系。


图3-7 LCD1602 DDRAM地址和屏幕对应关系图

  所以,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。这样,我们在程序中可以利用“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。

  LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H地址处即可,字符‘A’的字模数据如图3-8所示。


图3-8 字符‘A’的字模数据

  图3-8的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。从而显示出‘A’这个字形。从图3-9中可以看出,字符‘A’的高4位是0100,低4位是0001,合在一起就是01000001b,即上面所述的41H。它恰好与该字符的ASCII码一致,这样就给了我们很大的方便,我们可以在PC上使用P2=‘A’这样的语法。编译后,正好是这个字符的字符代码。


图3-9 常见字符的字符代码

数字时钟模块——DS1302

  时钟芯片DS1302是美国DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。

DS1302引脚及功能如图3-10所示。


图3-10 DS1302芯片管脚图

其功能如下:
- X1,X2:振荡源管脚,外接32.768kHz晶振
- GND:地
- RST:复位/片选线(通过置高电平来启动所有的数据传送)
- I/O:数据输入输出
- SCLK:串行时钟
- VCC1:电池引脚
- VCC2:主电源引脚(双电源供电,在主电源关闭的情况下,有VCC1的电池供电,也能保持时钟的连续运行)

  DS1302的工作原理很简单,它外接32.768kHz的晶振提供振荡时钟。芯片内部的电路对晶振频率做32768分频后获得周期为1s的秒信号,然后对秒信号计数,获得分钟、小时、天、星期、月、年等的数值。


你知道雪为什么是白色的吗?因为她忘记了原来的颜色