一、电路设计、
硬件电路设计方案
(一) 硬件电路设计方案 、 电路的单片机芯片采用 A T89C51 芯片,进行数据处理。
数据采集的传感器 采用 DS18B20 芯片数字温度传感器。 总线驱动使用 ZLG7290B 芯片, 用六位七段 LED 数码 显示器显示测量的温度值,键盘按键 S1 实现测量控制,按下按键 S1
则刷新测量的温度值。
系统总体框图:
系统总体框图
(二) 芯片介绍 、
1、A T89C51 芯片 、 A T89C51 是一种带 4K 字节闪存可编程可擦除只 读 存 储 器 ( FPEROM —Flash Programmable and Erasable Read Only Memory ) 的低电压、 高性能 CMOS 8 位微处理器,俗称单片机。A T89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机 的可擦除只读存储器可以反复擦除 1000 次。 该器件采 用 A TMEL 高密度非易失存储器制造技术制造,与工 业标准的 MCS-51 指令集和输出管脚相兼容。由于将 多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, A TMEL 的 A T89C51 是一种高效微控制器, A T89C2051
是它的一种精简版本。A T89C 单片机为很多嵌入式控 制系统提供了一种灵活性高且价廉的方案。外形及引 脚排列如图所示。
2、 DS18B20 芯片 、
(1) DS18B20 简介 DS18B20 是由美国 DALLAS 公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所 不同,DS18B20 可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型 化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20 可以实现 9~12 位的温度 读数。信息经过单线接口送入 DS18B20 或从 DS18B20 送出,因此从微处理器到 DS18B20 仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而 不需要外部电源。 (2) DS18B20 的引脚功能 DS18B20 的引脚(图 7-10) ,其功能如表 7-8 所示。
(3) DS18B20 的主要特点
采用单线技术,与单片机通信只需一个引脚;
通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测 的应用;
实际应用中不需要外部任何器件即可实现测温;
可通过数据线供电,电压的范围在 3~5.5V ;
不需要备份电源;
测量范围为-55~+125℃,在-10~+85℃范围内误差为 0.5℃;
数字温度计的分辨率用户可以在 9 位到 12 位之间选择, 可配置实现 9~12 位的温度 读数;
将 12 位的温度值转换为数字量所需时间不超过 750ms ;
用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。
(4)DS18B20 内部结构
64 位 ROM 的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后8位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信 的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20 温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除 的 EERAM 。高速暂存 RAM 的结构为8字节的存储器,结构如图 3 所示。头2个字节包含 测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。 第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20 工作 时寄存器中的分辨率转换为相应精度的温度数值。 该字节各位的定义如图 3 所示。 低5位一 直为1,TM是工作模式位,用于设置 DS18B20 在工作模式还是在测试模式,DS18B20 出 厂时该位被设置为0,用户要去改动,R1 和R0 决定温度转换的精度位数,来设置分辨率
3、ZLG7290 芯片 ZLG7290 的核心是一块 ZLG7290B 芯片,它采用 I2C 接口,能直 接驱动 8 位共阴式数码管,同时可扫描管理多达 64 只按键,实现人 机对话的功能资源十分丰富。除具有自动
消除抖动功能外,它还具 有段闪烁、段点亮、段熄灭、功能键、
连击键计数等强大功能,并 可提供 10 种数字和 21 种字母的
译码显示功能,用户可以直接向显 示缓存写入显示数据,而且
无需外接元件即可直接驱动数码管,还 可扩展驱动电压和电流。
此外,ZLG7290B 的电路简单,使用也很方便。
用户按下某个键时,ZLG7290 的 INT 引脚会产生一个低电平
的 中断请求信号,读取键值后,中断信号就会自动撤销。正常
情况下, 微控制器只需要判断 INT 引脚就可以得到键盘输入的
信息。 微控制器可通过两种方式得到用 户的键盘输入信息。其
一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微
控制 器的一个外部中断源。其二是查询方式,即通过不断查询 INT 引脚来判断是否有键按下,该 方式可以节省微控制器的一根 I /O 口线,但是代价是 I2C 总线处于频繁的活动状态,消耗 电流多并且不利于抗干扰。
ZLG7290 能够直接驱动 8 位共阴式数码管(或 64 只独立的 LED ) ,同时还可以扫描管 理多达 64 只按键。 其中有 8 只按键还可以作为功能键使用, 就像电脑键盘上的 Ctrl 、 Shift 、 Alt 键一样。另外 ZLG7290B 内部还设置有连击计数器,能够使某键按下后不松手而连续 有效。采用 I2C 总线方式,与微控制器的接口仅需两根信号线。可控扫描位数,可控任一 数码管闪烁。
二、系统软件设计
系统软件设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序, 显示数据刷新子程序,按键扫描子程序等。
在参考程序的基础上,我对数值的显示方式进行了改进。在数值前有“+”“—”符号, 、 小数改为显示两位小数,提高了精度。且百位为零时,显示符号。
(一)软件算法分析
1、主程序 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20
的测量的当
前温度值, 其程序流程见图 2 所示。
2 主程序流
图 3 读温度流程图
2、读出温度子程序 程
图
读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验 有错时不进行温度数据的改写。其程序流程图如图 3 示
3、温度转换命令子程序
、温度转换命令子程序主要是发温度转换开始命令, 当采用 12 位分辨率时转换时间约为 750ms , 在本程序设计中采用 1s 显示程序延时法等待转换的完成。 温度转换命令子程序流程 图如图 4
4、计算温度子程序
计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定, 其程序流程图如图 5 所示。
图5 计算温度流程图
图6 显示数据刷新流程图
5、显示数据刷新子程序
、显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位 为 0 时将符号显示位移入下一位。程序流程图如图 6。
(二)仿真与调试
1、软件调试,在 Keil 软件上输入程序,进行编译、连接。
2、在 DP-51PRO.NET 单片机仿真器、编程器、实验仪三合一综合开发平台上,连接。 DQ 连 P3.3,DA T 连 P1.7,SCL 连 P1.6,REST 连 1.5,INTT0 连 P3.2。
3、进行硬件仿真。
4、仿真结果:运行程序,LED 首先显示六个 P : “PPPPPP”;按下 S1 键,显示当时测量的 室内温度: “+31.81”.;重复按下 S1 键,LED 刷新测量的温度值。
三、总结与体会
在为期一周的电子方向课程设计中,我们要设计一个温度测量系统。软件使用 Keil 软 件进行仿真调试。硬件使用 DP-51PRO.NET 单片机仿真器、编程器、实验仪三合一综合开 发平台上的 DS18B20 数字温度采集模块和 ZLG7290 显示模块。张老师首先给我们详细讲解 了芯片的功能和工作原理,并给了一份参考程序。在机房进行实验时,我先将参考程序进行 仿真,结果正确。然后,我思考显示两位小数怎么改程序,初次修改没有成功,我询问了张 老师,张老师给我讲解了思路,并知道我修改了程序。后来我又思考,怎样能百位为零时不 显示而显示符号位,而百位不为零则显示。我修改程序,反复调试,最后成功了,心里非常 高兴,这次是我独自思考,独立完成的,也使我对整个程序有了更深的理解。 通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解, 同时在具体 的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距, 书本上的知识很 多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这 些是不能被忽略的, 我们不得不考虑这方的问题, 这让我们无法根据书上的理论就轻易得到 预想中的结果, 有时结果甚至很差别很大。 通过这次实践使我更深刻的体会到了理论联系实 际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。 程序清单:
一、电路设计、
硬件电路设计方案
(一) 硬件电路设计方案 、 电路的单片机芯片采用 A T89C51 芯片,进行数据处理。
数据采集的传感器 采用 DS18B20 芯片数字温度传感器。 总线驱动使用 ZLG7290B 芯片, 用六位七段 LED 数码 显示器显示测量的温度值,键盘按键 S1 实现测量控制,按下按键 S1
则刷新测量的温度值。
系统总体框图:
系统总体框图
(二) 芯片介绍 、
1、A T89C51 芯片 、 A T89C51 是一种带 4K 字节闪存可编程可擦除只 读 存 储 器 ( FPEROM —Flash Programmable and Erasable Read Only Memory ) 的低电压、 高性能 CMOS 8 位微处理器,俗称单片机。A T89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机 的可擦除只读存储器可以反复擦除 1000 次。 该器件采 用 A TMEL 高密度非易失存储器制造技术制造,与工 业标准的 MCS-51 指令集和输出管脚相兼容。由于将 多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, A TMEL 的 A T89C51 是一种高效微控制器, A T89C2051
是它的一种精简版本。A T89C 单片机为很多嵌入式控 制系统提供了一种灵活性高且价廉的方案。外形及引 脚排列如图所示。
2、 DS18B20 芯片 、
(1) DS18B20 简介 DS18B20 是由美国 DALLAS 公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所 不同,DS18B20 可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型 化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20 可以实现 9~12 位的温度 读数。信息经过单线接口送入 DS18B20 或从 DS18B20 送出,因此从微处理器到 DS18B20 仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而 不需要外部电源。 (2) DS18B20 的引脚功能 DS18B20 的引脚(图 7-10) ,其功能如表 7-8 所示。
(3) DS18B20 的主要特点
采用单线技术,与单片机通信只需一个引脚;
通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测 的应用;
实际应用中不需要外部任何器件即可实现测温;
可通过数据线供电,电压的范围在 3~5.5V ;
不需要备份电源;
测量范围为-55~+125℃,在-10~+85℃范围内误差为 0.5℃;
数字温度计的分辨率用户可以在 9 位到 12 位之间选择, 可配置实现 9~12 位的温度 读数;
将 12 位的温度值转换为数字量所需时间不超过 750ms ;
用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。
(4)DS18B20 内部结构
64 位 ROM 的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后8位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信 的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20 温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除 的 EERAM 。高速暂存 RAM 的结构为8字节的存储器,结构如图 3 所示。头2个字节包含 测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。 第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20 工作 时寄存器中的分辨率转换为相应精度的温度数值。 该字节各位的定义如图 3 所示。 低5位一 直为1,TM是工作模式位,用于设置 DS18B20 在工作模式还是在测试模式,DS18B20 出 厂时该位被设置为0,用户要去改动,R1 和R0 决定温度转换的精度位数,来设置分辨率
3、ZLG7290 芯片 ZLG7290 的核心是一块 ZLG7290B 芯片,它采用 I2C 接口,能直 接驱动 8 位共阴式数码管,同时可扫描管理多达 64 只按键,实现人 机对话的功能资源十分丰富。除具有自动
消除抖动功能外,它还具 有段闪烁、段点亮、段熄灭、功能键、
连击键计数等强大功能,并 可提供 10 种数字和 21 种字母的
译码显示功能,用户可以直接向显 示缓存写入显示数据,而且
无需外接元件即可直接驱动数码管,还 可扩展驱动电压和电流。
此外,ZLG7290B 的电路简单,使用也很方便。
用户按下某个键时,ZLG7290 的 INT 引脚会产生一个低电平
的 中断请求信号,读取键值后,中断信号就会自动撤销。正常
情况下, 微控制器只需要判断 INT 引脚就可以得到键盘输入的
信息。 微控制器可通过两种方式得到用 户的键盘输入信息。其
一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微
控制 器的一个外部中断源。其二是查询方式,即通过不断查询 INT 引脚来判断是否有键按下,该 方式可以节省微控制器的一根 I /O 口线,但是代价是 I2C 总线处于频繁的活动状态,消耗 电流多并且不利于抗干扰。
ZLG7290 能够直接驱动 8 位共阴式数码管(或 64 只独立的 LED ) ,同时还可以扫描管 理多达 64 只按键。 其中有 8 只按键还可以作为功能键使用, 就像电脑键盘上的 Ctrl 、 Shift 、 Alt 键一样。另外 ZLG7290B 内部还设置有连击计数器,能够使某键按下后不松手而连续 有效。采用 I2C 总线方式,与微控制器的接口仅需两根信号线。可控扫描位数,可控任一 数码管闪烁。
二、系统软件设计
系统软件设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序, 显示数据刷新子程序,按键扫描子程序等。
在参考程序的基础上,我对数值的显示方式进行了改进。在数值前有“+”“—”符号, 、 小数改为显示两位小数,提高了精度。且百位为零时,显示符号。
(一)软件算法分析
1、主程序 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20
的测量的当
前温度值, 其程序流程见图 2 所示。
2 主程序流
图 3 读温度流程图
2、读出温度子程序 程
图
读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验 有错时不进行温度数据的改写。其程序流程图如图 3 示
3、温度转换命令子程序
、温度转换命令子程序主要是发温度转换开始命令, 当采用 12 位分辨率时转换时间约为 750ms , 在本程序设计中采用 1s 显示程序延时法等待转换的完成。 温度转换命令子程序流程 图如图 4
4、计算温度子程序
计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定, 其程序流程图如图 5 所示。
图5 计算温度流程图
图6 显示数据刷新流程图
5、显示数据刷新子程序
、显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位 为 0 时将符号显示位移入下一位。程序流程图如图 6。
(二)仿真与调试
1、软件调试,在 Keil 软件上输入程序,进行编译、连接。
2、在 DP-51PRO.NET 单片机仿真器、编程器、实验仪三合一综合开发平台上,连接。 DQ 连 P3.3,DA T 连 P1.7,SCL 连 P1.6,REST 连 1.5,INTT0 连 P3.2。
3、进行硬件仿真。
4、仿真结果:运行程序,LED 首先显示六个 P : “PPPPPP”;按下 S1 键,显示当时测量的 室内温度: “+31.81”.;重复按下 S1 键,LED 刷新测量的温度值。
三、总结与体会
在为期一周的电子方向课程设计中,我们要设计一个温度测量系统。软件使用 Keil 软 件进行仿真调试。硬件使用 DP-51PRO.NET 单片机仿真器、编程器、实验仪三合一综合开 发平台上的 DS18B20 数字温度采集模块和 ZLG7290 显示模块。张老师首先给我们详细讲解 了芯片的功能和工作原理,并给了一份参考程序。在机房进行实验时,我先将参考程序进行 仿真,结果正确。然后,我思考显示两位小数怎么改程序,初次修改没有成功,我询问了张 老师,张老师给我讲解了思路,并知道我修改了程序。后来我又思考,怎样能百位为零时不 显示而显示符号位,而百位不为零则显示。我修改程序,反复调试,最后成功了,心里非常 高兴,这次是我独自思考,独立完成的,也使我对整个程序有了更深的理解。 通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解, 同时在具体 的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距, 书本上的知识很 多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这 些是不能被忽略的, 我们不得不考虑这方的问题, 这让我们无法根据书上的理论就轻易得到 预想中的结果, 有时结果甚至很差别很大。 通过这次实践使我更深刻的体会到了理论联系实 际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。 程序清单: