基于单片机数字电压表Word文件下载.docx

上传人:b****5 文档编号:21775104 上传时间:2023-02-01 格式:DOCX 页数:20 大小:341.95KB
下载 相关 举报
基于单片机数字电压表Word文件下载.docx_第1页
第1页 / 共20页
基于单片机数字电压表Word文件下载.docx_第2页
第2页 / 共20页
基于单片机数字电压表Word文件下载.docx_第3页
第3页 / 共20页
基于单片机数字电压表Word文件下载.docx_第4页
第4页 / 共20页
基于单片机数字电压表Word文件下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于单片机数字电压表Word文件下载.docx

《基于单片机数字电压表Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机数字电压表Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。

基于单片机数字电压表Word文件下载.docx

1.1概述

数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。

目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。

与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。

本章重点介绍单片A/D转换器以及由它们构成的基于单片机的数字电压表的工作原理。

1.2系统原理及基本框图

如图1.1所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到单片机中进行数据处理。

处理后的数据送到LCD中显示,同时通过串行通讯与上位机通信。

图1.1系统基本方框图

第二章硬件设计

2.1输入电路

图2.1.1量程切换开关

图2.1.2衰减输入电路

输入电路的作用是把不同量程的被测的电压规范到A/D转换器所要求的电压值。

智能化数字电压表所采用的单片双积分型ADC芯片ICL7135,它要求输入电压0-±

2V。

本仪表设计是0-1000V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图3.1.2所示9M、900K、90K、和10K电阻构成1/10、1/100、1/1000的衰减器。

衰减输入电路可由开关来选择不同的衰减率,从而切换档位。

为了能让CPU自动识别档位,还要有图3.1.1的硬件连接。

2.2A/D转换电路

A/D转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。

本设计采用双积A/D转换器,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。

在对转换精度要求较高,而对转换速度要求不高的场合如电压测量有广泛的应用。

2.2.1双积A/D转换器的工作原理

图2.2.1.1双积A/D转换器

如图所示:

对输入模拟电压和基准电压进行两次积分,先对输入模拟电压进行积分,将其变换成与输入模拟电压成正比的时间间隔T1,再利用计数器测出此时间间隔,则计数器所计的数字量就正比于输入的模拟电压;

接着对基准电压进行同样的处理。

在常用的A/D转换芯片(如ADC-0809、ICL7135、ICL7109等)中,ICL7135与其余几种有所不同,它是一种四位半的双积分A/D转换器,具有精度高(精度相当于14位二进制数)、价格低廉、抗干扰能力强等优点。

本文介绍用单片机并行方式采集ICL7135的数据以实现单片机电压表和小型智能仪表的设计方案。

图2.2.1.2双积A/D转换器的波形图

2.2.27135的应用

2.2.2.1ICL7135引脚图

7135是采用CMOS工艺制作的单片4位半A/D转换器,其所转换的数字值以多工扫描的方式输出,只要附加译码器,数码显示器,驱动器及电阻电容等元件,就可组成一个满量程为2V的数字电压表。

㈠7135主要特点如下:

①双积型A/D转换器,转换速度慢。

②在每次A/D转换前,内部电 

路都自动进行调零操作,可保证零点在常温下的长期稳定。

在20000字(2V

满量程)范围内,保证转换精度1字相当于14bitA/D转换器。

③具有自动极性转换功能。

能在但极性参考电压下对双极性模拟输入电压进行A/D转换,模拟电压的范围为0~±

1.9999V。

④模拟出入可以是差动信号,输入电阻极高,输入电流典型值1PA。

⑤所有输出端和TTL电路相容。

⑥有过量程(OR)和欠量程(UR)标志信号输出,可用作自动量程转换的控制信号。

⑦输出为动态扫描BCD码。

⑧对外提供六个输入,输出控制信号(R/H,BUSH,ST,POL,OR,UR),因此除用于数字电压表外,还能与异步接收/发送器,微处理器或其它控制电路连接使用。

⑨采用28外引线双列直插式封装,外引线功能端排列如图所示。

㈡7135数字部分

数字部分主要由计数器、锁存器、多路开关及控制逻辑电路等组成。

7135一次A/D转换周期分为四个阶段:

1、自动调零(AZ);

2、被测电压积分(INT);

3、基准电压反积分(DE);

4、积分回零(ZI)。

具体内部转换过程这里不做祥细介绍,主要介绍引脚的使用。

①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脚)每次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或微处理器进行传送。

图2.2.2.2ICL7135的波形图

③BUSY(21脚)在双积分阶段(INT+DE),BUSY为高电平,其余时为低电平。

因此利用BUSY功能,可以实现A/D转换结果的远距离双线传送,其还原方法是将BUSY和CLK“与”后来计数器,再减去10001就可得到原来的转换结果。

④OR(27脚)当输入电压超出量程范围(20000),OR将会变高。

该信号在BUSY信号结束时变高。

在DE阶段开始时变低。

⑤UR(28脚)当输入电压等于或低于满量程的9%(读数为1800),则一当BUST信号结束,UR将会变高。

该信号在INT阶段开始时变低。

⑥POL(23脚)该信号用来指示输入电压的极性。

当输入电压为正,则POL等于“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码输出,采用动态扫描输出方式,即当位选信号D5=“1”时,该四端的信号为万位数的内容,D4=“1”时为千位数内容,其余依次类推。

在个、十、百、千四位数的内容输出时,BCD码范围为0000--1001,对于万位数只有0和1两种状态,所以其输出的BCD码为“0000”和“0001”。

当输入电压过量程时,各位数输出全部为

零,这一点在使用时应注意。

最后还要说明一点,由于数字部分以DGNG端作为接地端,所以所有输出端输出电平以DGNG作为相对参考点。

基准电压,基准电压的输入必须对于模拟公共端COM是正电压。

㈢与单片机系统的串行连接

在ICL7135与单片机系统进行连接时,使用并行采集方式,要连接BCD码数据输出线,可以将ICL7135的/STB信号接至AT89C52的P3.2(INT0)。

ICL7135需要外部的时钟信号,本设计采用CD4060来对4M信号进行32分频得到125KHz的时钟信号。

CD4060计数为14级2进制计数器,在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。

图2.2.2.3ICL7135与系统的连接图

图2.2.2.4CD4060时钟发生电路

2.3单片机部分

单片机选用的是ATMEL公司新推出的AT89S52,如图2.3.1所示。

该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机,与AT89C51完全兼容。

AT89S52还有以下主要特点:

①采用了ATMEL公司的高密度、非易失性存储器(NV-SRAM)技术;

②其片内具有256字节RAM,8KB的可在线编程(ISP)FLASH存储器;

③有2种低功耗节电工作方式:

空闲模式和掉电模式

④片内含有一个看门狗定时器(WDT),WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST),只要对WDTRST按顺序先写入01EH,后写入0E1H,WDT便启动,当CPU由于扰动而使程序陷入死循环或“跑飞”状态时,WDT即可

有效地使系统复位,提高了系统的抗干扰性能。

图2.3.189S52引脚图

2.4液晶显示部分

显示接口用来显示系统的状态,命令或采集的电压数据。

本系统显示部分用的是LCD液晶模块,采用一个16×

1的字符型液晶显示模块,

点阵图形式液晶由M行×

N列个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16×

8=128个点组成,屏上64×

16个显示单元和显示RAM区1024个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。

一个字符由6×

8或8×

8点阵组成,即要找到和屏上某几个位置对应的显示RAM区的8个字节,并且要使每个字节的不同的位为‘1’,其它的为‘0’,为‘1’的点亮,为‘0’的点暗,这样一来就组成某个字符。

但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

2.4.11601使用说明

图2.4.1.11601引脚图

表2.4.1.1LCD1601液晶模块的引脚

引脚

符号

功能说明

1

GND

接地

2

Vcc

+5V

3

VL

驱动LCD,一般将此脚接地

4

RS

寄存器选择0:

指令寄存器(WRITE)Busyflag,位址计数器(READ)1:

数据寄存器(WRITE,READ)

5

R/W

READ/WRITE选择1:

READ0:

WTITE

6

E

读写使能(下降沿使能)

7

DB0

低4位三态、双向数据总线

续表2.4.1.1LCD1601液晶模块的引脚

8

DB1

9

DB2

10

DB3

11

DB4

高4位三态、双向数据总线

另外DB7也是一个Busyflag

12

DB5

13

DB6

14

DB7

寄存器选择,如表所示:

表2.4.1.2寄存器选择控制线操作

操作说明

写入指令寄存器(清除屏幕…等)

读Busyflag(DB7),以及读取位址计数器(DB0~DB6)值

写入数据寄存器(显示各字型等)

从数据寄存器读取数据

Busyflag(DB7):

在此位未被清除为“0”时,LCD将无法再处理其他指令要求。

(1)显示地址:

内部地址计数器的计数地址:

SB7=0(DB0~DB6)第一行00、01、02……等,第二行40、41、42……等,可配合检测DB7=1(RS=0,R/W=1)读取目前显示字的地址,判断是否需要换行。

表2.4.1.3LCD160116×

1显示字的地址

15

16

00

01

02

03

04

05

06

07

40

41

42

43

44

45

46

47

(2)外部地址:

DB7=1,亦即80H+内部计数地址,可以用此方式将字显示在某一位置。

LCD各地址列举如下表:

表2.4.1.4LCD160116×

1显示字的外部地址

16×

116字1行1601

80

81

82

83

84

85

86

87

C0

C1

C2

C3

C4

C5

C6

C7

表2.4.1.5LCD1601的指令组

指令

说明

设置码

RS

D7

D6

D5

D4

D3

D2

D1

D0

清除显示幕

*

光标回到原点

进入模式设定

I/D

S

显示幕ON/OFF

D

C

B

移位

S/C

R/L

功能设定

DL

N

F

字发生器地址设定

AGC

设置显示地址

ADD

忙碌标志位BF

BF

显示数据

写入数据

读取数据

I/DI/D=1表示加1,I/D=0表示减1

SS=1表示显示幕ONS=0表示OFF

DD=1表示显示屏幕OND=0表示显示屏幕OFF

CC=1表示光标ONC=0表示光标OFF

BB=1表示闪烁ONB=0表示显示闪烁OFF

S/CS/C=1表示显示屏幕移位S/C=0光标移位

R/LR/L=1表示右移R/L=0表示左移

DLDL=1表示8位DL=0表示4位

FF=1表示5×

10点矩阵F=0表示5×

7点矩阵

NN=1表示2行显示行N=0表示1行显示行

BFBF=1:

内部正在动作BF=0:

可接收指令或数据码

2.4.2液晶显示部分与89S52的接口

用89S52的P2口作为数据线,用P0.1、P0.2、P0.3分别作为LCD的E、R/W、RS。

其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:

显示模块初始化:

首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×

7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。

向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。

2.4.2.1液晶与89S52的接口

2.5通讯模块

89S52内部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号转换成RS-232协议规定的电平标准, 

MAX232是一种双组驱动器/接收器,每个接收器将EIA/TIA-232-E电平输入转换为5V 

TTL/CMOS电平。

每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。

即EIA接口,就是把5V转换为-8V到-15V电位0V转换为8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为0V。

MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。

图2.5.2MAX232元件图

图2.5.2MAX232引脚功能图

第三章系统的软件设计

3.1主程序设计

图3.1.1主程序流程图

ICL7135A/D与单片机连接电路的软件设计系统的程序流程图如图所示。

主程序一开始运行则设置堆栈起始地址为70H,设置中断寄存器,用来对ICL7135的中断进行计数,每5次后清零,完成一次数据采集工作,然后设置ICL7135的STB端的中断的优先级。

紧接着LCDM1601B进行一次清屏,使其各个指令、数据寄存器的值进行清空,屏幕不显示任何字符。

以前面对1601B的介绍,只要将01H送到数据总线,使RS=0,R/W=0,E有个下降沿的脉冲就可以完成清屏工作。

用以下指令实现MOVP2,#01H;

送到数据DB7---DB0,调用子程序ENABLE,由于下降沿时,内部数据要送到RAM区,所以要有一个延时子程序,使这个下降沿持续2.5毫秒。

内部RAM有指令代码后就开始对RAM进行清零,所以屏幕原有的字符将被清除。

接着对1601进行功能的设定。

MOVP2,#01111000B,按表3.1.1来看是设定显示器按2行显示,每行8位,5×

7点阵。

调用一次子程序ENABLE程序,写入CPU的指令寄存器中。

每次向LCDM中写入一个指令,就调用一次ENABLE,然后再对显示器进行闪烁、光标等功能进行设定。

显示器的RAM地址按加1方法进行读写。

再设定第一行字符,也就是‘Voltage’的显示地址80H。

字符‘Voltage’的TABLE表地址送到DPTR中,然后调用远程查表命令,依次把数据送到P2口,这时再调用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E产生一个下降沿脉冲,将数据送入到数据寄存器中,接下来执行子程序DISPLAY1,它的主要功能是将TABLE表中的字符输出到LCD中去。

调定好显示字符数即远程查表的次数,就开始查表了。

例如第一个字符“V”的ASCII码是56H,就将这个码送到P2口,再调用使能数据子程序,使RS=1(数据区使能)写入显示数据区,R/W=0表示写,E=来个下降沿延时2.5毫秒,使数据写入RAM内。

完成TABLE表输出以后,向指令RAM中写入第2行的起

始地址为OCH,再调用显示采样数据的子程序。

采样

数据存放的数据地址安排如下图所示,首先将60H中的数显示在正负号的位置上,按照ASCII码表,正号不显示(#20H),负号显示“-”(#2DH)。

图4.1.2数据地址

3.2A/D中断程序设计

图3.2.1中断子程序流程图

ICL7135每一分钟完成3次据的采集工作,1/3秒完成后向CPU申请中断,CPU这时暂停工作,为中断服务.中断响应后关中断,将PSW、ACC压栈,判断是否首次中断,如果是首次中断,则将正负号标志位置入60H,再把万位置入61H中,如果不是首次中断,则跳到NEXT处,如果是第二次中断,则将千位数置入62H中,如果是第三次中断,再将百位数置入63H中,第四次中断则将十位数置入64H中,第五次中断则将小数点位置入65H中,同时个位置入66H中。

同时清除中断次数寄存器30H中的值,完成中断后将ACC、PSW出栈,开中断。

消隐的思想:

每次电压采集后,CPU将数据送到LCD显示,将可能出现以下几种需要消隐的情况。

例如

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1