1、1基于单片机的数字电压表摘要:本文介绍一种基于 89S52单片机的一种电压测量电路,该电路采用ICL7135高精度、双积分 A/D转换电路,测量范围直流 0-2000伏,使用 LCD液晶模块显示,可以与 PC机进行串行通信。正文着重给出了软硬件系统的各部分电路,介绍了双积分电路的原理,89S52 的特点,ICL7135 的功能和应用,LCD1601的功能和应用。该电路设计新颖、功能强大、可扩展性强。关键词:电压测量,ICL7135,双积分 A/D转换器,1601 液晶模块Abstract : The introduction of a cost-based 89S52 MCU a voltag
2、e measurement circuits, the circuits used ICL7135 high-precision, dual-scoring A/D conversion circuits, measuring scope DC 0-2000 volts, the use of LCD that can be carried out with a PC serial communications. The paper focuses on providing a software and hardware system components circuit, introduce
3、d double integral circuit theory, 89S52 features ICL7135 functions and applications, LCD1601 functions and applications. the circuit design innovative, powerful, can be expansionary strong.Key Words : Digital Voltmeter ICL7135 LCD1601 89S521 前言数字电压表(Digital Voltmeter)简称 DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电
4、压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与 PC进行实时通信。目前,由各种单片 A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由 DVM扩展而成的各种通用及专用数字2输入电路A/D转换89S52单片机LCD显示 通讯模块仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。2 系统原理及基
5、本框图如图 2.1所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到 A/D转换器进行 A/D转换,然后送到单片机中进行数据处理。处理后的数据送到 LCD中显示,同时通过串行通讯与上位机通信。图 2.1系统基本方框图3 硬件设计3.1 输入电路图 3.1.1量程切换开关 图 3.1.2衰减输入电路输入电路的作用是把不同量程的被测的电压规范到 A/D转换器所要求的电压值。智能化数字电压表所采用的单片双积分型 ADC芯片 ICL7135,它要求输入电压 0-2V。本仪表设计是 0-1000V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图 3.1.2所示 9M、900K、90K
6、、和 10K电阻构成31/10、1/100、1/1000 的衰减器。衰减输入电路可由开关来选择不同的衰减率,从而切换档位。为了能让 CPU自动识别档位,还要有图 3.1.1的硬件连接。3.2 A/D 转换电路A/D 转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。本设计采用双积 A/D 转换器,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。在对转换精度要求较高,而对转换速度要求不高的场合如电压测量有广泛的应用。3.2.1 双积 A/D 转换器的工作原理图 3.2.1.1双积 A/D 转换器如图所示:对输入模拟电压和基准电压进行两次积分,
7、先对输入模拟电压进行积分,将其变换成与输入模拟电压成正比的时间间隔 T1,再利用计数器测出此时间间隔,则计数器所计的数字量就正比于输入的模拟电压;接着对基准电压进行同样的处理。在常用的 A/D转换芯片(如 ADC -0809、ICL7135、ICL7109 等)中,图 3.2.1.2双积 A/D 转换器的波形图4ICL7135与其余几种有所不同,它是一种四位半的双积分A/D转换器,具有精度高(精度相当于 14位二进制数)、价格低廉、抗干扰能力强等优点。本文介绍用单片机并行方式采集 ICL7135的数据以实现单片机电压表和小型智能仪表的设计方案。3.2.1 7135 的应用7135是采用 CMO
8、S工艺制作的单片4位半 A/D转换器,其所转换的数字值以多工扫描的方式输出,只要附加译码器,数码显示器,驱动器及电阻电容等元件,就可组成一个满量程为 2V的数字电压表。7135 主要特点如下:双积型 A/D转换器,转换速度慢。在每次 A/D转换前,内部电 路都自动进行调零操作,可保证零点在常温下的长期稳定。在 20000字(2V满量程)范围内,保证转换精度 1字相当于 14bitA/D转换器。具有自动极性转换功能。能在但极性参考电压下对双极性模拟输入电压进行 A/D转换,模拟电压的范围为 01.9999V。模拟出入可以是差动信号,输入电阻极高,输入电流典型值 1PA。所有输出端和 TTL电路相
9、容。有过量程(OR)和欠量程(UR)标志信号输出,可用作自动量程转换的控制信号。输出为动态扫描 BCD码。对外提供六个输入,输出控制信号(R/H,BUSH,ST,POL,OR,UR),因此除用于数字电压表外,还能与异步接收 /发送器,微处理器或其它控制电路连接使用。采用 28外引线双列直插式封装,外引线功能端排列如图所示。7135 数字部分数字部分主要由计数器、锁存器、多路开关及控制逻辑电路等组成。71353.2.1.1 ICL7135引脚图5一次 A/D转换周期分为四个阶段:1、自动调零(AZ);2、被测电压积分(INT);3、基准电压反积分(DE);4、积分回零(ZI)。具体内部转换过程这
10、里不做祥细介绍,主要介绍引脚的使用。R/H(25 脚)当 R/H=“1”(该端悬空时为“1”)时,7135 处于连续转换状态,每 40002个时钟周期完成一次 A/D转换。若 R/H由“1”变“0”,则7135在完成本次 A/D转换后进入保持状态,此时输出为最后一次转换结果,不受输入电压变化的影响。因此利用 R/H端的功能可以使数据有保持功能。若把R/H端用作启动功能时,只要在该端输入一个正脉冲(宽度300ns),转换器就从 AZ阶段开始进行 A/D转换。注意:第一次转换周期中的 AZ阶段时间为 9001-10001个时钟脉冲,这是由于启动脉冲和内部计数器状态不同步造成的。/ST(26 脚)每
11、次 A/D转换周期结束后,ST 端都输出5个负脉冲,其输出时间对应在每个周期开始时的 5个位选信号正脉冲的中间,ST 负脉冲宽度等于 1/2时钟周期。第一个 ST负脉冲在上次转换周期结束后 101个时钟周期产生。因为每个选信号(D5-D1)的正脉冲宽度为 200个时钟周期(只有 AZ和 DE阶段开始时的第一个 D5的脉冲宽度为 201个 CLK 周期),所以 ST负脉冲之间相隔也是 200个时钟周期。需要注意的是,若上一周期为保持状态(R/H=“0”)则 ST无脉冲信号输出。ST 信号主要用来控制将转换结果向外部锁存器、UARTs 或微处理器进行传送。BUSY(21 脚)在双积分阶段(INT+
12、DE),BUSY 为高电平,其余时为低电平。因此利用 BUSY功能,可以实现 A/D转换结果的远距离双线传送,其还原方图 3.2.1.2 ICL7135的波形图6法是将 BUSY和 CLK“与”后来计数器,再减去 10001就可得到原来的转换结果。OR(27 脚)当输入电压超出量程范围(20000),OR 将会变高。该信号在 BUSY信号结束时变高。在 DE阶段开始时变低。UR(28 脚)当输入电压等于或低于满量程的 9%(读数为 1800),则一当 BUST信号结束,UR 将会变高。该信号在 INT阶段开始时变低。POL(23 脚)该信号用来指示输入电压的极性。当输入电压为正,则 POL等于
13、“1”,反之则等于“0”。该信号 DE阶段开始时变化,并维持一个 A/D转换调期。位驱动信号 D5、D4、D3、D2、D1(12、17、18、19、20 脚)每一位驱动信号分别输出一个正脉冲信号,脉冲宽度为 200个时钟周期,其中 D5对应万位选通,以下依次为千、百、十、个位。在正常输入情况下,D5-D1 输出连续脉冲。当输入电压过量程时,D5-D1 在 AZ阶段开始时只分别输出一个脉冲,然后都处于低电平,直至 DE阶段开始时才输出连续脉冲。利用这个特性,可使得显示器件在过程时产生一亮一暗的直观现象。B8、B4、B2、B1(16、15、14、13 脚)该四端为转换结果 BCD码输出,采用动态扫
14、描输出方式,即当位选信号 D5=“1”时,该四端的信号为万位数的内容,D4=“1”时为千位数内容,其余依次类推。在个、十、百、千四位数的内容输出时,BCD 码范围为 0000-1001,对于万位数只有 0和 1两种状态,所以其输出的 BCD码为“0000”和“0001”。当输入电压过量程时,各位数输出全部为零,这一点在使用时应注意。最后还要说明一点,由于数字部分以 DGNG端作为接地端,所以所有输出端输出电平以 DGNG作为相对参考点。基准电压,基准电压的输入必须对于模拟公共端 COM是正电压。与单片机系统的串行连接在 ICL7135与单片机系统进行连接时,使用并行采集方式,要连接 BCD码数
15、据输出线,可以将 ICL7135的/STB 信号接至 AT89C52的 P3.2(INT0)。 ICL7135需要外部的时钟信号,本设计采用 CD4060来对 4M信号进行 32分频得到 125KHz的时钟信号。CD4060 计数为级进制计数器,在数字集成7电路中可实现的分频次数最高,而且 CD4060还包含振荡电路所需的非门,使用更为方便。图 3.2.1.3 ICL7135与系统的连接图 图 3.2.1.4 CD4060时钟发生电路 3.3 单片机部分单片机选用的是 ATMEL公司新推出的 AT89S52,如图 3.2.1.1所示。该芯片具有低功耗、高性能的特点,是采用 CMOS工艺的 8位
16、单片机,与 AT89C51完全兼容。AT89S52 还有以下主要特点:采用了 ATMEL公司的高密度、非易失性存储器(NV-SRAM)技术;其片内具有 256字节 RAM,8KB 的可在线编程(ISP)FLASH 存储器;有 2种低功耗节电工作方式:空闲模式和掉电模式片内含有一个看门狗定时器(WDT),WDT 包含一个 14位计数器和看门狗定时器复位寄存器(WDTRST),只要对 WDTRST按顺序先写入 01EH,后写入 0E1H,WDT 便启动,当 CPU由于扰动而使程序陷入死循环或“跑飞”状态时,WDT 即可有效地使系统复位,提高了系统的抗干扰性能。3.4 液晶显示部分显示接口用来显示系
17、统的状态,命令或采集的电压数据。本系统显示部分图 3.2.1.1 89S52 引脚图8用的是 LCD液晶模块,采用一个 161的字符型液晶显示模块, 点阵图形式液晶由 M 行N 列个显示单元组成,假设 LCD 显示屏有 64行,每行有 128列,每 8列对应 1 个字节的 8 个位,即每行由 16 字节,共 168=128个点组成,屏上 6416 个显示单元和显示 RAM 区 1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由 68 或 88点阵组成,即要找到和屏上某几个位置对应的显示 RAM区的 8 个字节,并且要使每个字节的不同的位为1,其它的为0,为1的点亮,为0
18、的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在 LCD 上开始显示的行列号及每行的列数找出显示 RAM对应的地址,设立光标,在此送上该字符对应的代码即可。3.4.1 1601 使用说明图 3.4.1.1 1601引脚图表 3.4.1.1 LCD1601液晶模块的引脚引脚 符号 功能说明1 GND 接地2 Vcc 5V3 VL 驱动 LCD,一般将此脚接地4 RS寄存器选择 0:指令寄存器(WRITE)Busy flag,位址计数器(READ) 1:数据寄存器(WRITE,READ)95 R/W READ/WRITE选择
19、1:READ 0:WTITE6 E 读写使能(下降沿使能)7 DB0 低 4位三态、双向数据总线续表 3.4.1.1 LCD1601液晶模块的引脚8 DB19 DB210 DB311 DB412 DB513 DB614 DB7高 4位三态、双向数据总线另外 DB7也是一个 Busy flag寄存器选择,如表所示:表 3.4.1.3 寄存器选择控制线操作RS R/W 操作说明0 0 写入指令寄存器(清除屏幕等)0 1 读 Busy flag(DB7),以及读取位址计数器(DB0DB6)值1 0 写入数据寄存器(显示各字型等)1 1 从数据寄存器读取数据Busy flag(DB7):在此位未被清除
20、为“0”时,LCD 将无法再处理其他指令要求。(1)显示地址:内部地址计数器的计数地址:SB7=0(DB0DB6)第一行00、01、02 等,第二行 40、41、42 等,可配合检测 DB7=1 (RS=0,R/W=1)读取目前显示字的地址,判断是否需要换行。表 3.4.1.4 LCD1601 161 显示字的地址1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1600 01 02 03 04 05 06 07 40 41 42 43 44 45 46 47(2)外部地址:DB7=1,亦即 80H内部计数地址,可以用此方式将字显示在某一位置。LCD各地址列举如下表:10
21、表 3.4.1.5 LCD1601 161 显示字的外部地址161 16字 1行 16011 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1680 81 82 83 84 85 86 87 C0 C1 C2 C3 C4 C5 C6 C7表 3.4.1.6 LCD1601 的指令组设置码指 令说 明 RS R/W D7 D6 D5 D4 D3 D2 D1 D0清除显示幕 0 0 0 0 0 0 0 0 0 *光标回到原点 0 0 0 0 0 0 0 0 1 *进入模式设定 0 0 0 0 0 0 0 1 I/D S显示幕 ON/OFF 0 0 0 0 0 0 1 D C
22、B移位 0 0 0 0 0 1 S/C R/L * *功能设定 0 0 0 0 1 DL N F * *字发生器地址设定 0 0 0 1 AGC设置显示地址 0 0 0 1 ADD忙碌标志位 BF 0 0 1 BF显示数据 1 0 写入数据读取数据 1 1 读取数据I/D I/D=1 表示加 1, I/D=0 表示减 1S S=1 表示显示幕 ON S=0表示 OFFD D=1 表示显示屏幕 ON D=0表示显示屏幕 OFFC C=1 表示光标 ON C=0表示光标 OFFB B=1 表示闪烁 ON B=0表示显示闪烁 OFFS/C S/C=1表示显示屏幕移位 S/C=0 光标移位R/L R/L=1表示右移 R/L=0 表示左移DL DL=1表示 8位 DL=0 表示 4位F F=1表示 510点矩阵 F=0 表示 57点矩阵