毕业设计 - 数字电压表的制作 - 图文

更新时间:2023-10-12 22:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中南大学电子工程本科毕业论文

数字电压表的设计与制作

[摘要] 随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度

和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。在参阅大量数字电压表的基础上的数字直流电压表,所测量范围直流电压为0~500V,测量精度为0.08v。它以单片机8951为核心,主要由转换电路将输入的模拟量转换为数字量的A/D转换器ADC0809,液晶显示器1602构成。

[关键词]:单片机; 模数转换;按键开关;液晶显示;

Design and manufacture of digital voltmeter

[Abstract]: With the development of electronic science and technology, electronic

measurement become the e-worker must have the means, the measurement accuracy and functional requirements of increasingly high, while the voltage measurement is very strong, because the voltage measurement of the most common. In a large number of digital voltage meter read based on the digital DC voltage meter, the measuring range DC voltage 0 ~ 500V, measurement precision is 0.08v. It is based on 8951 MCU core, mainly by the conversion circuit to convert analog input

to digital volume A / D converter ADC0809, LCD display 1602 form.

[Key words]: SCM; analog-digital conversion; button switch; liquid crystal display;

第1页 共48页

中南大学电子工程本科毕业论文

目 录

引 言 ................................................. - 2 - 1.系统设计方案的选择 ................................. - 4 -

1.1基于分立元件的电压表 ............................ - 4 - 1.2基于单片机系统及A/D转换芯片的电压表。 ........... - 4 - 1.3单片机简介及本设计单片机的选择 ................... - 4 -

1.3.1常用单片机的特点比较及本设计单片机的选择 .... - 5 - 1.3.2本设计使用的单片机的简介 ................... - 5 - 1.4各种显示器件的介绍和选择......................... - 7 -

1.4.1常用显示器件简介........................... - 7 - 1.4.2 1602液晶的参数资料 ....................... - 8 - 1.5 模数(A/D)转换芯片的选择 ...................... - 10 -

1.5.1常用的A/D芯片简介 ........................ - 10 - 1.5.2模数(A/D)芯片ADC0809的资料 ............. - 10 -

2.总体设计 .......................................... - 19 -

2.1技术要求 ...................................... - 19 - 2.2设计方案 ...................................... - 19 - 3.硬件电路系统模块的设计 ............................ - 20 -

3.1 单片机系统 .................................... - 20 - 3.2输入电路 ....................................... - 21 - 3.3 A/D转换芯片与单片机的连接 ...................... - 22 - 3.4 1602液晶与单片机连接 ........................... - 23 - 3.5按键控制电路设计。 ............................. - 24 - 4.系统软件的设计 .................................... - 26 -

4.1 汇编语言和C语言的特点及选择 .................. - 26 - 4.2 主程序的设计 .................................. - 27 - 5.系统的调试 ........................................ - 28 -

5.1硬件调试 ....................................... - 28 - 5.2软件调试 ....................................... - 28 - 总结 ...................................... 错误!未定义书签。 致 谢 ............................................... - 30 -

第1页 共48页

中南大学电子工程本科毕业论文

参考文献 ............................................. - 31 - 附录A:英语科技文献原文及其翻译稿 ................... - 32 - 附录B:电路总图 ...................................... - 39 - 附录C:实物图 ......................................... - 2 - 附录D:元器件清单 .................................... - 3 - 附录E:源程序 ......................................... - 5 -

第1页 共48页

中南大学电子工程本科毕业论文

引 言

数字电压表出现在50年代初,60年代末发起来的电压测量仪表,简称DVM,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测理仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦锁和陈旧方式也催促了它的飞速发展,如今,它又成为向智能化仪表发展的必要桥梁。

如今,数字电压表已绝大部分已取代了传统的模拟指针式电压表。因为传统的模拟指针式电压表功能单一,精度低,读数的时候也非常不方便,很容易出错。而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常的方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量,工业自动化仪表,自动测试系统等智能化测量领域。显示出强大的生命力。

数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度慢,重量达几十公斤,体积大。继之出现了斜波式电压表,它的速度方面稍有提高,但是准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐近式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点是抗干扰能力差,很容易受到外界各种因素的影响。随后,在斜波式的基础上双引伸出阶梯波式,它的唯一的进步是成本降低了,可是准确宽,速以及抗干扰能力都未能提高。而现在,数字电压表的发展已经是非常的成熟,就原理来讲,它从原来的一,二种已发展到多种,在功能上讲,则从测单一参数发展到能测多种参数;从制作元件来看,发展到了集成电路,准确度已经有了很大的提高,精度高达1NV;读数每秒几万次,而相对以前,它的价格也有了降低了很多。

目前实现电压数字化测量的方法仍然模-数(A/D)转换的方法。而数字电压表种类繁多,型号新异,目前国际仍未有统一的分类方法。而常用的分类方法有如下几种:

第 页 共- 2 - 51 页

中南大学电子工程本科毕业论文

按用途来分:有直流数字电压表,交、直流数字电压表,交直流万用表等。

按显示位数来分:有4位,5位,6位,7位,8位等。 按测量速度来分:有低准确度,中准确度,高准确度等。 按测量速度来分:有低速,中速,高速,超高速等。

但在日常生活中,数字电压表一般是按照原理不同进行分类的,目前大致分为以下几类:比较式,电压——时间变换式,积分式等。 在电量的测量中,电压、电流和频率是最基本的三个被测量。其中,电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受用户青睐,数字式电压表就是基于这种需求而发展起来的,是一种必不可少的电子测量仪表。

第 页 共- 3 - 51 页

中南大学电子工程本科毕业论文

5 6 8-14 15 16

R/W E D0-D7 BLA BLK

读/写选择端 使能信号 Data I/O 背光源正极 背光源负极

(1).基本操作时序:

读状态:输入:RS=0,RW=1,E=1。输出:D0-D7为状态字

写状态:输入:RS=0,RW=0,D0-D7为指令码,E为高脉冲。输出:无 读数据:输入:RS=1,RW=1,E=1。输出:D0-D7为数据。

写数据:输入:RS=1,RW=0,D0-D7为数据,E为高脉冲。输出:无

表1. 2 状态字说明

STA7 STA0-6 STA7

STA6

STA5

STA4

STA3

STA2

1:禁止 0:允许

STA1

STA0

当前数据地址指针的数值 读写操作使能

表1.3 指令的说明。

显示模式设置

指令码

0

0

1

1

1

0

0

0

功能

设置16*2显示,5*7点阵,8位数据口

表1.4 显示开/关及光标设置

指令码 0

0

0

0

1

D

C

B

功能 D=1开显示;D=0关显示 C=1显示光标;C=0不显示关标 B=1光标闪烁;B=0光标不显闪烁

0

0

0

0

0

1

N

S

N=1当读写一个字条款后地址指针加一,且光标加一。

N=0当读或写一个字符后地址指针减一,且光标减一。

S=1当写一个安条款,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。

S=0当写一个字符,整屏显示不移动。

表1.5 数据控制 第 页 共- 9 - 51 页

中南大学电子工程本科毕业论文

指令码

80H+地址码(0-27H,40H-67H) 01H

功能 设置数据地址指针

显示清屏:1,数据指针清0 2,所有显示清0

02H 显示回车:数据指针清0

1.5 模数(A/D)转换芯片的选择

在本设计中,模数(A/D)转换模块是一个重要的模块,它关系到最后数电压表电压值的精确度。所以,A/D芯片的选择是设计过程中一个很重要的环节。 1.5.1常用的A/D芯片简介

常用的A/D芯片有AD0809,AD0832,TLC2543C等几种。下面简单介绍一下这三种芯片。

AD0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。些A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。

AD0832也是8位逐次逼近型A/D转换器,可支持致命伤个单端输入通道和一个差分输入通道。它易于和微处理器接口或独立使用;可满量程工作;可用地址逻辑多路器选通各输入通道。

TLC2543C是12位开关电容逐次逼近A/D转换,每个器件有三个控制输入端,片选,输入/输出时钟以及地址输入端。它可以从主机高速传输转换数据。它有高速的转换,通用的控制能力,具有简化比率转换,刻度以及模拟电路与逻辑电路和电源噪声隔离,耐高温等特点。

综合上述几种A/D转换芯片的特点,在本设计中,我们设计的是简易数字电压表,因此在此,我们选择精度为8位的ADC0809芯片。 1.5.2模数(A/D)芯片ADC0809的资料

综合本设计的各方面考虑,我们选了ADC0809模数转换芯片。下面就介绍此芯片的各方面资料。

1.5.2.1 ADC0809的内部结构及引脚如图所示。

第 页 - 10 - 共 51 页

中南大学电子工程本科毕业论文

① 结构和转换原理

如图(3-15)所示为ADC0809的内部结构框图。ADC0809由3部分组成:8路模拟量选通开关、8位A/D转换器和三态输出数据锁存器。 ADC0809允许8路模拟信号输入,由8路模拟开关选通其中一路信号,模拟开关受通道地址锁存和译码电路的控制。当地址锁存信号ALE有效时,3位地址C、B、A进入地

START6CLOCK107转换结束(中断)EOCIN75IN64模拟量输入IN53IN42IN31IN228IN127IN0268通道多路模拟开关VxVcW1W2控制逻辑21D7D6D5D4D3D2D1D0ENABLE数字量输出逐次逼近型寄存器SAR开关树组地址选择ABC25242322输出缓三冲态锁存器2019188151417地址锁存器和译码器256R电阻分压器9ALE地址锁存允许11131216VccGNDVREF(+)VREF(-)

图1.2 ADC0809的内部结构

第 页 - 11 - 共 51 页

中南大学电子工程本科毕业论文

图1.3 ADC0809的引脚

地址锁存器,经译码后使8路模拟开关选通某一路信号。

8位A/D转换器为逐次逼近式,由256R电阻分压器、树状模拟开关(这两部分组成一个D/A变换器)、电压比较器、逐次逼近寄存器、逻辑控制和定时电路组成。

三态门输出锁存器用来保存A/D转换结果,当输出允许信号OE有效时,打开三态门,输出A/D转换结果。因输出有三态门,便于与单片机总线连接。

表1.6 ADC0809通道地址选择表

② 引脚功能

由引脚图(3-15) b所示,ADC0809共有28个引脚, 采用双列直插式封装。ADC0809 虽然有8路模拟 通道可以同时输入8路模拟信号,但每个瞬间只能 转换一路,各路之间的切换由软件变换通道地址来 实现。其主要引脚功能如下所示。 IN0~IN7:8路模拟量输入端。 D7~D0:8位数字量输出端。

A、B、C:3位地址输入线,用于选通8路模拟输入中的一路。

ALE:地址锁存允许信号,输入,高电平有效。 START: A/D转换启动信号,输入,高电平有效。

EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一 个高电平(转换期间一直为低电平)。

OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。

第 页 - 12 - 共 51 页

中南大学电子工程本科毕业论文

Vcc:电源,单一+5V。 GND:地。

1.5.2.2 ADC0809工作过程 ALE 地址总 线 模拟输入 START EO C 出允许输OUTPUT ENEBLEDATA稳定稳定

图1.4 ADC0809的时序图

ADC0809的工作过程分为如下几步。

第一步:首先确定A、B、C三位地址,决定选择哪一路模拟信号。 第二步:使ALE端接收一正脉冲信号,使该路模拟信号经选择开关达到比较器的输入端。

第三步:使START端接收一正脉冲信号,START的上升沿将逐次逼近寄存器复位,下降沿启动A/D转换。

第四步:EOC输出信号变低,指示转换正在进行。

第五步:A/D转换结束,EOC变为高电平,指示A∕D转换结束。此时,数据已保存到8位锁存器中。

第六步:OE信号变为高电平,则8位三态锁存缓冲器的三态门被打开,转换好的8位数字量数据被输出到数据线上。

如上所述,EOC信号变为高电平表示A/D转换完成,EOC可作为中断申请信号,通知89C51取走数据。在查询传送方式中,EOC可以作为89C51查询外设(ADC)的状态信号。

第 页 - 13 - 共 51 页

中南大学电子工程本科毕业论文

1.5.2.3 ADC0809与单片机的接口

ADC0809与单片机的连接主要考虑三方面:与单片机的数据总线、地址总线和控制总线的连接。

*数据总线。由于ADC0809的输出D7~D0具有三态输出锁存缓冲器,因此ADC0809可以直接和单片机的数据总线P0.0~P0.7相连。

*地址总线。地址总线的P0.0、P0.1和P0.2可以对应连接ADC0809的A、B、C三位地址信号输入线,用以控制8路模拟输入中哪一路被选中输入。

*控制总线。有启动转换信号START、输出允许信号OE、转换结束信号EOC以及ALE等信号线的连接。START要求是一个正脉冲信号,由单片机控制发出,输出允许信号OE也需要单片机提供一个正脉冲信号。在A/D转换结束时,ADC0809会发出转换结束信号EOC,通知89C51可以读取转换数据。

A/D转换后得到的是数据,这些数据应传送给89C51单片机进行处理。数据传送的关键问题是如何确认A/D转换完成,因为只有确认数据转换完成后,才能进行传送。为此可采用下述三种方式。

1. 定时传送方式

对于一种A/D转换器来说,转换时间作为一个主要技术指标是已知的和固定的。例如,若ADC0809转换时间为128μs,相当于6MHz的89C51单片机的64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用这个延时子程序,延迟时间一到,转换肯定完成了,接着就可以进行数据传送。 2. 查询传送方式

由于ADC0809片内无时钟,利用AT89C51提供的地址锁存信号ALE经过分频后可保证ADC0809可靠的工作。由于ADC0809的输出D7~D0具有三态输出锁存缓冲器,因此ADC0809可以直接和单片机的数据总线相连。由于此种方式下ALE和START连接在一起,因此0809在锁存通道地址的同时也启动转换。在读取转换结果时,用单片机的读信号和片选信号引脚经或非门后产生的正脉冲信号作为OE信号,用以打开三态输出锁存器。

第 页 - 14 - 共 51 页

中南大学电子工程本科毕业论文

3. 中断传送方式

采用中断方式可大大节省单片机的时间。当转换结束时,EOC向单片机发出中断请求信号,由中断服务子程序读取A/D转换结果并存储到RAM中,然后启动ADC0809的下一次转换。 三种典型连接电路

大体上说,ADC0809在整个51单片机系统中是作为外部RAM的一个单元定位的。但具体到某一个连接方式,ADC0809在整个51单片机系统中的定位又有一些差别。

1. 第一种典型连接

这是一种数据线对数据线、地址线对地址线的标准连接方式,如图(3-17)。但是由于51单片机没有现成的低8位地址总线,所以采用这种标准连接方式需要用74LS373或类似芯片产生低8位地址总线。

早期的MCS51系列单片机的应用品种很多是没有内置程序存储器的8031芯片,本身就需要外挂74LS373等芯片产生低8位地址总线来外接EPROM等程序存储器,连接ADC0809时不需要专门外挂74LS373。因此早期的MCS51系列单片机,如8031,采用这种连接ADC0809还是比较可行的。图(3-17)中P2.7/A15线作为整个ADC0809芯片的片选线。当P2.7/A15=0时,或非门敞开,允许写信号通过,将单片机负的写脉冲转换为ADC0809所需要的正脉冲,以选中ADC0809某一通道并启动转换。

这是一种不完全地址译码方式。如果增加地址译码器,将P2.7/A15线改为高位地址译码器的输出线,就可以形成完全译码。

在图(3-17)连接方式中,ADC0809的转换结果寄存器在概念上定位为单片机的一个只读寄存器,与通道号无关,因此读取转换结果时不必关心DPTR

第 页 - 15 - 共 51 页

中南大学电子工程本科毕业论文

图1.5 ADC0809与51单片机的第一种连接方式

中的通道号如何。 编程概要:

MOV DPTR,#7FF8H;DPTR指向0809通道0 MOVX @DPTR,A;锁定通道0并启动转换

???????????????????? MOVX A,@DPTR;读取转换结果

2. 第二种典型连接

通常芯片的地址线只能进不能出自不必说,ADC0809的数据线有一特点:只能出不能进。就是说,就像往SBUF写入时写到发送缓冲寄存器,从SBUF

第 页 - 16 - 共 51 页

中南大学电子工程本科毕业论文

图1.6 ADC0809与51单片机的第二种连接方式

读出时实际是读取接收缓冲寄存器的数据一样,往ADC0809写入时,把数据总线上的数据写到地址寄存器,从ADC0809读出时实际是读取转换结果数据。因此可以在把51单片机的8位数据线接到ADC0809的8位数据线的同时,又把其中的3位直接接到ADC0809的3根地址线以确定通道号。通常把51单片机的8位数据线中的低3位D2,D1,D0直接接到ADC0809的3根地址线A2,A1,A0以确定通道号,如图(3-18),采用这种连接方式明显可以省去一片74LS373。

在这种连接方式中,ADC0809的转换结果寄存器在概念上定位为单片机外部RAM单元的只读寄存器,而通道号寄存器在概念上定位为单片机同一个外部RAM单元的只写寄存器。同一个外部RAM单元的只读寄存器与只写寄存器使用同一个地址,就像51系列单片机的串行发送缓冲器与串行接受缓冲器使用同一个地址99H一样,不会发生混乱。

这种连接方式有一个特点,那就是单片机要把最低3位二进

制数据通过数据总线写入ADC0809的地址锁存器,然后作为通道地址使用。

第 页 - 17 - 共 51 页

中南大学电子工程本科毕业论文

编程概要:

MOV A,#0F8H;ADC0809通道0地址送到A MOV DPTR,#7FFFH;DPTR指向ADC0809 MOVX @DPTR,A;锁定通道0并启动转换

???????????????????? MOVX A,@DPTR;

要求在程序第一条指令中把决定是否能选中整个ADC0809芯片的数据传送到数据指针。在本电路中,只要送到DPTR的最高位数据为0,就能选中ADC0809,而通道地址由累加器A的最低3位数字决定。除了最高位以外,DPTR的其余15位数据对于ADC没有任何意义。除了较低3位以外,累加器A的其余5位数据对于ADC也没有任何意义。这是本程序的一大特点。 3. 第三种典型连接

在很多应用场合,AT89S51内部的硬件资源,例如4KB闪存,128B内部RAM,一个串行口和4个8位并行口等,已经够用。就是说,在很多应用场合,不需要外扩RAM或I/O口。

第 页 - 18 - 共 51 页

{

if(key1==0) {

delay(10); //消抖延时 if(key1==0) { num=1; }

while(key1==0) ;

}

if(key2==0) {

delay(10); //消抖延时 if(key2==0) { num=2; }

while(key2==0) ;

}

if(key3==0) {

delay(10); //消抖延时 if(key3==0) { num=3; }

while(key3==0) ;

}

第 页 共- 6 - 42页

}

void int0_init() {

EA=1; IT0=1; EX0=1; }

void ad_transform() {

P2&=0x0f;

////////////////////////////// delay(2);

ale=0;

P2|=0x00+num*16; //地址计算 delay(1); ale=1; ale=0;

start=0; start=1; start=0; }

void main() {

float aa=0.0; lcd_init();

//液晶屏初始化 int0_init();

//中断初始化

while(1)

第 页 共- 7 - 42页

{

key_scan(); //按键扫描函数

ad_transform();

delay(100); if(flag>=1) { EA=0; flag=0;

aa=(float)ad_data; //ad转换函数

if(num==1) aa=aa*200/255; //标度转换此公式将ad值放大100倍 if(num==2) aa=aa*200/255; //标度转换此公式将ad值放大100倍 if(num==3) aa=aa*500/255; //标度转换此公式将ad值放大100倍

EA=1; }

display_data(0,4,(uint)aa);//数值显示

} }

void it0() interrupt 0 {

out=1; flag++; ad_data=P0; out=0; }

#define uint unsigned int #define uchar unsigned char extern bit rs,e;

extern void delay(uchar);

extern uchar num; //函数及变量声明 uchar data table[]=\//////////////写指令//////////////// void write_com(uchar com) //写指令函数 {

- 8 - 第 页 共42页

rs=0; P1=com; e=1; delay(1); e=0; }

//////////////写数据//////////////////// void write_data(uchar da) //写数据函数 { rs=1; P1=da; e=1; delay(1); e=0; }

///////////////初始化液晶///////////// void lcd_init() {

write_com(0x38); /*显示模式设置*/ delay(5); write_com(0x38); delay(5); write_com(0x38); delay(5);

write_com(0x38);

write_com(0x08); /*显示关闭*/ write_com(0x01); /*显示清屏*/

write_com(0x06); /*显示光标移动设置*/ delay(5);

write_com(0x0C); /*显示开及光标设置*/ ////////////////////////////////// write_com(0x83);

write_data(table[14]); //初始化显示相关字符

- 9 - 第 页 共42页

////////////////////////////////// }

void display_data(uchar add1,uchar add2,uint date) {

uchar i;

write_com(0x82);

write_data(table[num]); //ad通道显示 write_com(0x80+add1*0x40+add2); //地址计算 delay(1); if(num==1) {

i=date/100;

write_data(table[i]); //

i=date/10;

write_data(table[i]);

write_data(table[10]);

i=date;

write_data(table[i]); write_data(table[11]);

}

if(num==2||num==3) {

i=date/100;

write_data(table[i]); //write_data(table[10]); i=date/10;

write_data(table[i]); i=date;

write_data(table[i]); write_data(table[11]);

write_data(table[12]); }

第 页 - 10 - 共42页

中南大学电子工程本科毕业论文

图1.7 ADC0809与51单片机的第三种连接方式

当51单片机没有外扩RAM和I/O口时,ADC0809就可以在概念上作为一个特殊的唯一的外扩RAM单元。因为它是唯一的,就没有地址编号,也就不需要任何地址线或者地址译码线。只要单片机往外部RAM写入,就是写到ADC0809的地址寄存器中。只要单片机从外部RAN读取数据,就是读取ADC0809的转换结果。 基于这种外部RAM的唯一单元概念设计的AT89S51与ADC0809的连接电路如图 图(3-19)。相应的启动程序和读数程序都非常简单。 编程概要: MOV A,#0F8H;ADC0809通道0地址送到A MOVX @R0,A;锁定通道0并启动转换

????????????????????

MOVX A,@R0 ;读取转换结果

其中间寄存器R0中的数据无论在启动ADC0809还是在读取转换结果时都没有任何意义,因此事先不必考虑往R0中送入什么数据。这是本程序的一大特点。

4. 三种连接方式的综合比较

第一种和第二种连接方式允许多片ADC0809与单片机连接,第三种连接方式只能连接一片。通常1片8通道ADC0809就能满足控制工程需要。因此在单片机没有外扩RAM和I/O接口时,第三种连接方式时一种优选方案。需要2片或更多ADC0809时,第二种连接方式时一种优选方案。

第一种连接方式需要一片74LS373做地址锁存器。如果单片机系统已经有一片73LS373地址锁存器,那么第一种连接方式也不失为一种可以考虑的连接方式。

2.总体设计

2.1技术要求:

(1)最高量程为:500V。

(2)分为三档量程:0~20V,0~200V,0~500V。可以通过调档开关实现各档位。精度为0.08 v。 2.2设计方案:

第 页 - 19 - 共 51 页

中南大学电子工程本科毕业论文

根据上述,我们选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:AT89C51单片机,ADC0809模数转换芯片,1602液晶显示器,开关,按键,电容,电阻,晶振,标准电源等等。设计的基本框图如下:

单片机系统模块 1602液晶显示模块 A/D转换模块 输入电路模块 按键模块

图2.1 设计的基本框图

3.硬件电路系统模块的设计

根据上述选择的各元器件,各电路模块的电路图如下描述。 3.1 单片机系统

单片机最小系统包括晶振电路,复位电路,电源。其原理图如下:

第 页 - 20 - 共 51 页

中南大学电子工程本科毕业论文

图3.1 复位电路

此模块中,单片机的晶振是12MHZ,C1和C2的电容是22pf,C3可选10UF。R1电阻为1K。 3.2输入电路

由于输入电路的电压比基准电压(5V)高很多,因此在输入电路必须加电压衰减器。衰减电路可由开关来选择不同的通道,从而切换档位。则完整输入电路如下:

第 页 - 21 - 共 51 页

中南大学电子工程本科毕业论文

图3.2 衰减电路

通过计算,根据不同量程的通道,设定不同的衰减电阻如上图所示,并用手动开关的方式来切换相应档位,用其相应数据转换的算法计算出所测正确的电压值。被测电压输入端、整理过的模拟电压输入端,开关与单片机的连接如下图所示。 3.3

A/D转换芯片与单片机的连接

此设计中选择的是A/D转换芯片的通道1、通道2、 通道3,数据输出口连接单片机的P0口,脉冲端连接单片机的ale口。模块连接如下图所示。

第 页 - 22 - 共 51 页

中南大学电子工程本科毕业论文

图3.3 A/D转换芯片与单片机的连接

3.4 1602液晶与单片机连接

此模块液晶的RS和E端分别连接单片机的P3.0和P3.1口;液晶的数据各端口连接单片机的P1口。具体如下图所示。

图3.4 1602液晶与单片机连接

第 页 - 23 - 共 51 页

中南大学电子工程本科毕业论文

3.5按键控制电路设计。

三个通道键盘的三端分别与单片机的P3.4、P3.5、P3.6口连接,另一端接地。原理图如下所示。

图3.5 按键控制电路

键盘的功能:可根据所测的电压范围,通过按键来切换通道。 3.6系统电路的设计

第 页 - 24 - 共 51 页

中南大学电子工程本科毕业论文

图3.6 总电路图

第 页 - 25 - 共 51 页

中南大学电子工程本科毕业论文

4.系统软件的设计

4.1 汇编语言和C语言的特点及选择

本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高。执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。

由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。

第 页 - 26 - 共 51 页

中南大学电子工程本科毕业论文

4.2 主程序的设计

主程序的总体流程如下图:

开始 选择档位 启动AD 开外部中断 N 判断中Y 数据标定 液晶显示

图4.1 主程序的总体流程

第 页 - 27 - 共 51 页

中南大学电子工程本科毕业论文

5.系统的调试

完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。调试分了硬件和软件调试。 5.1硬件调试

硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工

艺性故障等。

1) 检查所设计的硬件电路板所有的器件和引脚是否正确,尤其是电源的连接是否正确;检查各总线是否有短路的故障。检查开关/按键是否正常,是否连接正确,为了保护芯片,应先对各插座电位进行检查,确认无误后再插入芯片。

2) 将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬件电路的好坏。 5.2软件调试

软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块一个模块进行的。首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。最后调试整个程序。尤其注意的是各模块间能否正确的传递参数。 1)

检查液晶显示模块程序。在主程序中调用display()和dislay_zifu()函数,观察在1602液晶上是否能够显示相应的字符。如果不能,则在相关的子程序中设计断点,反复调

第 页 - 28 - 共 51 页

中南大学电子工程本科毕业论文

试直到能够显示。 2)

检查按键模块程序。本设计的按键模块程序是用状态机的方法,可以在key_state1状态下加一个任务,如显示一个字符在液晶上。观察是否正确显示。 3)

检查A/D转换模块程序。可以在硬件电路的输入端输入已知的几个电压,分别观察液晶上是否显示相应的电压值。 4)

检查数据的转换模块程序。可以按硬件电路的按键开关,输入相应的电压,观察液晶显示的电压值是否一致。如果一致。则数据转换的算法正确的。 5)

总调试。当相应的各模块环节都正确后,可程序下载到单片机。接上电源运行。再检查所有功能,观察是否能预期的一样。如果一样,说明设计成功完成。

结束语

由于本设计使用的是高效的51系列单片机作为核心的测量系统,

以及高精度,高速度,高抗干扰的A/D转换器。使得本直流数字电压表具体精度高,灵敏度强,性能可靠,电路简单,设计成本低,能够满足一般的电压测量。

因为平时所需要测量的被测电压的电压值不是一个定值,多多少少都有一些微小的变化。但是本产品相对模拟电压表来说读数时非常的方便,抗干扰能力强,可扩展性强等优点。

第 页 - 29 - 共 51 页

中南大学电子工程本科毕业论文

致 谢

借此论文结束之际,我首先要感谢我的导师在大学四年里对我的栽培。本论文是在老师的悉心指导下才完成的。陈老师学识渊博,为人和善。他不仅在学术上给了我指导,在生活上也给了我无尽的关怀。这一切都将使我终身难忘。

我要感谢我系的各位老师,在设计过程中,我系的老师们给了我很多种肯定的建议,使我的论文得以顺利的完成。也要感谢各位老师在四年来对我学习和生活上的关心和帮助。

我要感谢所有的师弟师妹们,在这个团结奋斗、积极向上、充满爱心的集体中,我获得了不断进取的动力。

最后 ,我要感谢我的家人,是他们在背后默默无闻的奉献,才使我有充足的时间和充裕的精力顺利完成我的学业。

第 页 - 30 - 共 51 页

中南大学电子工程本科毕业论文

参考文献

[1]李建忠编著.单片机原理及应用[M]. 西安:西安电子科技大学出版社,2002:113-126.

[2]朱勇,陈其乐,刘浩等.单片机原理与应用技术[M] .北京:清华大学出版社.2006:122-138 [3]宋浩,田丰.单片机原理及应用[M] .北京:清华大学出版社.2006:180-197,278-285

[4]边春远,王志强.MCS-51单片机应用开发实用子程序[M].北京:人民邮电出版社.2005:283-287 [5]何立民.单片机应用技术选编(9)[M] .北京:北京航空航天大学出版社.2004:335-342 [6]郭强等. 液晶显示应用技术[M]. 电子工业出版社. 2000 [7] 阎石.数字电子技术基础[M].北京:高等教育出版社,2006

[8] 李光飞 李良儿.单片机C程序设计[M].北京:北京航空航天大学出版社,2005 [9] 何立民.单片机应用文集[M].北京:北京航空航天大学出版社,1991.

[10] Wang Debiao, \[M].the electronics industry publishing house in August, 2003 1st edition 1st time printed. [11] Ding Yuanjie, \Microcomputer Principle And Application\mechanical industry publishing house in January, 2005 2nd edition 10th printing.

[12] Nie resolute, the monolithic integrated circuit timer interruption interval error analysis and compensates [J]. Micro computer information, 2002,18(4):37~38.

[13] Lou Ranmiao Li Guangfei, \Series Monolithic integrated circuit Design Example\1st edition.

第 页 - 31 - 共 51 页

中南大学电子工程本科毕业论文

附录A:英语科技文献原文及其翻译稿

引用的外文文献:

AT89S52 Chip explains Features:

Compatible with MCS-51TM Products

8 Kbytes of In-System Reprogrammable Flash Memory Endurance: 1,000 Write/Erase Cycles Fully Static Operation: 0 Hz to 24 MHz Three-Level Program Memory Lock 256 x 8-Bit Internal RAM 32 Programmable I/O Lines Three 16-Bit Timer/Counters Eight Interrupt Sources Programmable Serial Channel

Low Power Idle and Power Down Modes Description:

The AT89C52 is a low-power, high-performance CMOS 8-bit

microcomputer with 8 Kbytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmel’s high density nonvolatile memory technology and is compatible with the industry standard 80C51 and 80C52

instruction set and pinot. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional on volatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip,

the Atmel AT89C52 is a powerful microcomputer, which provides a highly flexible and cost effective solution to many embedded control applications.

The AT89C52 provides the following standard features: 8 Kbytes of Flash, 256 bytes of RAM, 32 I/O lines, three 16-bit timer/counters, a six-vector two-level interrupt architecturea full duplex serial port, on-chip oscillator, and clock circuitry. In addition, the AT89C52 is designed with static logic for operation down to zero frequency and supports two software

第 页 - 32 - 共 51 页

中南大学电子工程本科毕业论文

selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Power Down Mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next hardware reset. Pin Description

VCC Supply voltage. GND Ground. Port 0 Port 0 is an 8-bit open drain bidirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs. Port 0 can also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode, P0 has internal pullups. Port 0 also receives the code bytes during Flash programming and outputs the code bytes during program verification. External pullups are required during program verification. Port 1 Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins, they are pulled high by the internal pullups and can be used as inputs.As inputs, Port 1 pins that are externally being pulled low will source current because of the internal pullups. In addition, P1.0 and P1.1 can be configured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX), respectively, as shown in the following table.

Port 1 also receives the low-order address bytes during Flash programming and program verification. Port 2 Port 2 is an 8-bit bidirectional I/O port with internal pullups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins, they are pulled high by the

第 页 - 33 - 共 51 页

中南大学电子工程本科毕业论文

internal pullups and can be used as inputs.As inputs, Port 2 pins that are externally being pulled low will source current because of the internal pullups. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @ DPTR). In this application, Port 2 uses strong internal pullups when emitting 1s. During accesses to external data memory that use 8-bit addresses (MOVX @ RI), Port 2emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification. Port 3 Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port 3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins, they are pulled high by the internal pullups and can be used as inputs.As inputs, Port 3 pins that are externally being pulled low will source current because of the pullups.

Port 3 also serves the functions of various special features of the AT89C51,as shown in the following table.

Port 3 also receives some control signals for Flash programming and programming verification. RST

Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. ALE/PROG

Address Latch Enable is an output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming. In normal operation, ALE is emitted at a constant rate of 1/6 the oscillator frequency and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external data memory.

If desired, ALE operation can be disabled by setting bit 0 of

第 页 - 34 - 共 51 页

中南大学电子工程本科毕业论文

SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcrontroller is in external execution mode. PSEN

Program Store Enable is the read strobe to external program memory. When the AT89C52 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory. EA/VPP

External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset. EA should be strapped to VCC for internal program executions. This pin also receives the 12-volt programming enable voltage (VPP) during Flash programming when 12-volt programming is selected. XTAL1

Input to the inverting oscillator amplifier and input to the internal clock operating circuit. XTAL2

Output from the inverting oscillator amplifier. Special Function Registers

A map of the on-chip memory area called the Special Function Register (SFR) space is shown in Table 1.

Note that not all of the addresses are occupied, and unoccupied addresses may not be implemented on the chip. Read accesses to these addresses will in general return random data, and write accesses will have an indeterminate effect.

User software should not write 1s to these unlisted locations, since they may be used in future products to invoke new features.

第 页 - 35 - 共 51 页

中南大学电子工程本科毕业论文

In that case, the resetor inactive values of the new bits will always be 0.

Timer 2 Registers Control and status bits are contained in registers

T2CON (shown in Table 2) and T2MOD (shown in Table 4) for Timer 2. The register pair (RCAP2H, RCAP2L) are the Capture/Reload registers for Timer 2 in 16-bit capture mode or 16-bit auto-reload mode.

Interrupt Registers The individual interrupt enable bits are in the IE register. Two priorities can be set for each of the six interrupt sources in the IP register 译文:

AT89S52芯片介绍 主要性能

与MCS-51单片机产品兼容

8K字节在系统可编程Flash存储器全静态操作:0HZ-24MHZ 三级加密程序存储器 256x8位内部RAM 32个可编程I/O口线 三个16位定时器/计数器 八个中断源

可编程的串行通道

低功耗空闲和掉电模式 介绍

At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工

第 页 - 36 - 共 51 页

中南大学电子工程本科毕业论文

作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 引脚介绍

VCC电源电压。 GND地面。

P0口

P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1口

P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。

在flash编程和校验时,P1口接收低8位地址字节。 P2口

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

P3口

P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉

第 页 - 37 - 共 51 页

中南大学电子工程本科毕业论文

电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示.在flash编程和校验时,P3口也接收一些控制信号。

RST

复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

ALE/PROG

当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN

程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP

外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

XTAL1

振荡器反相放大器及内部时钟发生器的输入端 XTAL2

振荡器反相放大器的输出端 特殊功能寄存器

第 页 - 38 - 共 51 页

中南大学电子工程本科毕业论文

特殊功能寄存器(SFR)的地址空间映象如表1所示。并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为0。

定时器2

寄存器T2CON和T2MOD包含定时器2的控制位和状态位(如表2和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。

中断寄存器各中断允许位在IE寄存器中,六个中断源和两个优先级也可以在IE中

附录B:电路总图

第 页 - 39 - 共 51 页

C:实物图

第 页 共- 2 - 42页

附录

附录D:元器件清单

- 3 - 第 页 共42页

器件名称 单片机芯片 模数转换芯片 液晶显示器 按键开关 晶振 排阻 电位器 电位器 电阻 电阻 电阻 电阻 电容 电容

型号 AT89C51 ADC0809 LCD1602 脉冲按键 12M 9针 50k 10k 4.7k 10k 100k 51k 10uF/25v 30pF 数量 1 1 1 3 1 1 1 3 1 1 6 2 1 2 备注

- 4 - 第 页 共42页

附录E:源程序

#include #include #define uint unsigned int #define uchar unsigned char

sbit rs=P3^0; sbit e=P3^1; sbit start=P2^0; sbit out=P2^2; sbit ale=P2^3;

sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6;

uchar num=1,flag=0; uint ad_data;

void delay(uchar ms) //延时子函数 {

uchar j,i; for(i=ms;i>0;i--) for(j=110;j>0;j--); }

void key_scan()

第 页 共- 5 - 42页

本文来源:https://www.bwwdw.com/article/xlef.html

Top