基于单片机的数字多用表的设计
1DS1629的结构特性与工作原理
DS1629是专为温度的数字化测量而设计的一种芯片,同时还兼有实时时钟/日历的功能。DS1629的宽电源范围和极小的功耗非常适合于电池供电的应用环境。其时钟功能可以是12小时或者24小时的模式,且在12小时的模式下带有AM/PM指示。当温度达到或超过程序设定的上限TH或者时间到达程序设定的时刻时,芯片就产生漏极开路的报警输出。
DS1629由数字温度传感器、实时时钟、两线串行接口、数据寄存器、温度和时钟报警比较器及时钟分频器和缓冲器6个部分组成。
由制造商标定的温度传感器无需外部器件。芯片一上电就开始进行温度转换,并随后连续进行转换。主机(通常为单片机)可以周期性地读取温度寄存器中最新转换的温度值,并且由于转换是在"后台"进行的,读数据并不影响转换的过程。主机可以修改芯片的配置,如上电后并不立即开始转换和连续转换模式,这样对于要求省电的场合很有益处。实时时钟/日历提供秒、分、时、星期、日期、月、年的BCD数值,这需要内部的振荡器/分频器和外部的32.768kHz的晶振。不足31天的月份则在月底自动调整,闰年的补偿直到2100年。实时时钟可以通过清除时钟寄存器中的控制位而关闭。通过读/写时钟寄存器或者时钟报警寄存器可以关闭时钟报警输出。
二进制数据的读/写通过两线总线进行,高位在前,每个寄存器的访问都采用8位的命令协议。芯片各个引脚的功能如表1所示。
2 硬件设计
从前面的讨论可以看出,DS1629兼有数字温度传感器和实时时钟/日历的功能,工作电压为2.2~5.5V,因而可将其与单片机结合起来设计出带有数字钟功能的数字温度表。单片机采用AT89C2051,封装为20DIP,工作电压范围是2.7~5.5V。显示部分采用6位数码管来显示时间、日期或温度等数据。为了简化电路,减少芯片,降低功耗,显示部分采用动态循环扫描的方式,由一片4~7段译码器CD4543驱动。CD4543的工作电压为 3~18V,整个电路采用两节干电池供电,系统的硬件构成如图1所示。图中,DS1629的SCL与SDA端分别接单片机的P3.0和P3.1,R1和 C1构成上电自动复位电路,P3.2~P3.4接 3个按键,C2、C3及6MHz晶振构成振荡电路,P3.5、P3.7、P1.0~P1.3分别接6位数码管的公共端(图中3个数码管LED2~LED4 没有画出)作为位选信号,P1.4~P1.7接CD4543的BCD码输入端,6个数码管的数据输入端a~g都并接到CD4543的数据输出端a~g。
数字表的功能包括温度的测量显示和时钟两个方面,因而在软件设计中应同时考虑。温度表和时钟功能由按键S3选择,上电后的默认状态为自动显示测量的温度,按一下S3则切换到时间显示,再按一下又返回到温度显示。默认状态下按键S2为秒表功能键,按1次开始计时,按两次停止计时,按3次则清 0,再按则返回到初始状态。默认状态下按键S1为调整时间的功能键,按1次S1设定小时,此时S2为加1键,按1次小时加1,S3为减1键,按1次小时减 1;按2次S1设定分钟,此时S2、S3的作用同前;按3次S1则返回到初始状态。根据这些功能,软件设计由初始化、功能键处理、时间显示、温度测量及显示等几个部分组成。初始化部分完成单片机中断、定时器、片内存储单元和DS1629的初始配置;功能键处理部分则进行键盘的扫描及相应的处理;时间及温度显示则是读取DS1629的时间和温度参数,进行转换后送出显示。下面给出单片机对DS1629操作的程序段,假定单片机的P3.1接SDA,P3.0接 SCL,设定DS1629的工作模式为单次转换模式,禁止时钟输出,对温度及时钟均为高电平报警,则相应的程序段如下:
从前面的讨论可以看出,DS1629给基于单片机的数字化温度的测量与控制带来了极大的方便,使得系统的设计大为简化,具有很高的实用价值。
- 通过几个简便的步骤把34405A 万用表集成到系统中(02-09)
- 数字荧光示波器结构融合模拟示波器和数字示波器的优势(03-03)
- 低功耗制造测试的设计-第一部分(01-29)
- 低功耗制造性测试的设计-第二部分(01-29)
- 白话数字电源(06-17)
- 数字万用表故障排除的一般方法(06-02)