多路电压测量系统.docx
《多路电压测量系统.docx》由会员分享,可在线阅读,更多相关《多路电压测量系统.docx(24页珍藏版)》请在冰豆网上搜索。
![多路电压测量系统.docx](https://file1.bdocx.com/fileroot1/2023-1/30/ab77bcf8-60d4-4f01-b005-81e938c0fdca/ab77bcf8-60d4-4f01-b005-81e938c0fdca1.gif)
多路电压测量系统
姓名苏永斌
专业电气自动化技术
论文名称多路电压测量系统
指导教师何跃军
摘要
本毕业设计项目为多路电压测量系统。
这是一个以单片机AT89C51为控制核心,利用A/D转换器、数码管、驱动电路等组成的单片机系统。
它的主要功能是能同时测量和显示多路和单路电路的电压,测量电压的范围为0-5V,电压测量的最小分辨率为0.019V,测量通道为8路,我们设了两个功能键,对其功能进行选择,其中按键1是进行单路和多路切换的;按键2是进行通道号选择的。
关键词:
单片机;AT89C51;A/D转换;ADC0809;数据处理
第一章系统总体设计
1-1系统功能介绍
本系统应用的范围主要是能同时测量并显示多路低压电路的电压,我们在系统设计时,测量电压的范围设计成0~5V。
它能同时对一路电压或多达8路电压进行测量,我们可以通过按键1进行单路和多路切换;通过按键2进行通道号选择,并在四位LED数码管上轮流显示或单路选择显示。
测量最小分辨率为0.019V,测量误差约为±0.02V。
1-2系统设计思想
多路电压测量系统由硬件和软件两大部分组成。
硬件部分包括单片机电路、过程输入通道(模拟量输入通道)和接口电路。
如图1-1所示。
单片机电路用来存储数据、程序,并进行一系列运算处理,它通常由微处理器(CPU)等芯片组成。
模拟量输入通道(模/数转换器ADC0809)用来采集模拟量信号,经过单片机处理后,在显示电路中,显示电压值。
软件部分主要是在硬件电路的基础上,对单片机编写相应程序以实现电路的功能,本系统软件采用模块化设计思想,编程语言采用汇编语言,仿真系统采用南京伟福仿真器。
图1-1多路电压测量系统硬件组成框图
1-3多路电压测量系统主要特点
本多路电压测量系统主要特点如下:
1)控制灵活:
由于采用单片机控制,因此系统可以在不改变硬件电路的情况下,通过编程,增加或修改功能。
2)成本较低:
本系统采用元件都是普通常用件,因而造价低廉,与同类产品相比,有较大的价格优势。
3)精度较高:
本系统采用8位A/D转换器ADC0809,因而电压转换精度可以达到0.019V,由于采用三位数码管显示电压,因而最小显示电压为0.01V.
4)有较大的实用价值。
本产品可用于多路电压的测量,在电子电气领域因而有较大的使用范围,另外,在保证一定的精度的情况下,本产品有较大的价格优势,这是我们这款产品的特点,从而使它具有较大的实用价值。
1-4多路电压测量系统设计
按系统功能实现要求,决定控制系统采用AT89C51单片机为控制核心,A/D转换采用ADC0809。
系统除能确保实现要求的功能外,还可以方便地进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。
多路电压测量系统设计方案框图如图1-4
图1-4多路电压测量系统设计方案框图
1-5多路电压测量系统总体开发与设计流程图
多路数字电压测量系统总体开发与设计流程图如图1-5所示:
图1-5系统总体开发与设计流程图
第二章多路电压测量系统的硬件系统设计
2-1系统硬件电路的设计原理
本多路电压测量系统以单片机为控制核心,包括单片机及其外围电路,A/D转换电路、分频电路、按键选择电路、数码管动态驱动与显示电路等组成,电路原理图如图2-1所示,系统实物图如图2-2。
A/D转换由A/D转换元件ADC0809完成。
ADC0809具有8路模拟输入端口,地址线(23~25脚)可决定对哪一路模拟输入作A/D转换。
22脚为地址锁存控制,当输入为高电平时,为地址信号进行锁存。
6脚为测试控制,当输入一个2μS宽高电平脉冲时,就开始A/D转换。
7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。
10脚为0809的时钟输入端,利用单片机ALE引脚(ALE引脚,其输出频率为2M,它是对单片机外接12M晶振进行六分频),与4024相连,经过4024元件二分频后,得到1MHz时钟,作为A/D0809的输入时钟。
单片机的P1口最为数码管的段码控制口、P3.0~P3.3端口作为四位LED数码管位选控制端口。
P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。
P0端口作A/D转换数据读入用,P2端口用作0809的A/D转换控制。
图2-1多路电压测量系统电路原理图
图2-2多路电压测量系统实物图
2-2电压测量系统在设计上特点
本系统在设计上,有以下几个特点:
1)系统硬件结构结合应用软件方案一并考虑。
我们在设计上,考虑的原则是:
软件能实现的功能尽可能由软件来实现。
但必须注意如用软件来实现的硬件功能,其响应时间要比直接用硬件来实现花的时间长,而且占用CPU时间。
2)系统中相关的器件要尽可能做到性能匹配。
3)可靠性及抗干扰设计是硬件系统设计不可缺少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。
4)单片机外接电路较多时,必须考虑其驱动能力。
驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力,增设线驱动器或者减少芯片功耗,降低总线负载。
在完成各个单元电路的设计与调试后,我们与软件系统进行了联调,且达到了一个较为理想的结果。
2-3多路数字电压测量系统的设计与制作步骤
研制一个电压测量系统是个复杂的过程,这一过程包括分析仪表的功能要求和拟制总体设计方案,确定硬件结构和软件算法,研制逻辑电路,以及系统的调试和性能的测试等等。
为保证系统的质量和提高研制的效率。
设计小组应该完成以下几步工作:
1.确定设计任务和功能要求
2.按照设计图纸进行电路的焊接和调试
3.电路调试工作完成后利用仿真器进行对电路软件上的调试
4.对电路进行工艺上的修改与性能测试
2-4电路各部分硬件电路介绍
本系统电路以单片机AT89C51为控制核心,包括单片机及其外围电路,A/D转换电路、分频电路、按键选择电路、数码管动态驱动与显示电路等组成,下面我们一一进行阐明。
2-4-1单片机AT89C51及其特点
AT89C51是ATMEL公司生产的CMOS型51系列单片机,具有MCS-51内核。
ATMELF是一种低功耗、高性能的含有4KB闪速可编程/擦出只读存储器的八位CMOS微控制器,使用高密度、非易失存储技术制造,并且与8051指令系统和引脚完全兼容。
芯片上的FPEROM允许在线或采用通用的非易失存储编程对程序存储重复编程。
1、AT89C51的主要性能包括:
(1)与MCS-51微控制器产品系列兼容
(2)片内有4KB可在线重复编程闪速擦写存储器
(3)存储器可循环写入/擦出1000次
(4)存储数据保存时间为10年
(5)全静态工作:
可由0HZ到16MHZ
(6)程序存储具有3级锁存保护
(7)128ⅹ8位内部RAM
(8)32条可编程I/O线
(9)两个16位定时器/计数器
(10)中断结构具有5个中断源和两个优先级
(11)空闲状态维持低功耗和掉电状态保存存储内容
2、AT89C51系列引脚及功能:
AT89C51系列有40个引脚,采用双列直插(DIP)封装形式,使用很方便。
AT89C51引脚如图2-3所示。
图2-3引脚图
其各个引脚功能如下:
P0口(39-32):
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口(1-8):
P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。
P2口(21-28):
P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器
可接收和输出4个TTL门电流。
P3口(10-17):
P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。
RST(9):
复位输入。
当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。
ALE/PROG(30):
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲。
PSEN(29):
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。
EA/VPP(31):
当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。
FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1(19):
反向振荡器放大器的输入及内部时钟工作电路的输入。
XTAL2(18):
来自反向振荡器的输出
2-4-2数码管驱动电路
为提供单片机对显示数码管的驱动能力,我们采用总线驱动器74HC244对数码管进行驱动,其工作原理与管脚排列图如图2-4:
其功能表如表1所示:
图2-474HC244引脚图
输入
输出
G
A
Y
L
L
H
L
H
X
L
H
Z
表1,74HC244功能表
74HC244功能表说明如下:
L:
低电平
H:
高电平
Z:
高阻状态
X:
高低电平均可(包括跳变)
G:
输出禁止控制端。
高电平,输出禁止,位高阻状态。
量组电路分开控制。
电源电压参考值:
TTL极限值+7V,一般使用+5V,CMOS极限值+20V,一般使用+15V,其典型参数如表2所示。
型号
最大拉出电流
(mA)
最大吸收电流
(mA)
典型传播延迟时间
(ns)
典型总功耗
(mW)
54S244
-12
48
6
558
74S244
-15
64
6
558
54LS244
-12
12
12
127
74LS244
-15
24
12
127
表2,74HC244典型参数
2-4-3动态LED数字显示电路
在本系统中,需要用到的数码管比较多,包括1位显示通道号,三位显示电压值,电压显示精确到小数点后两位。
为减少I/O数目,简化电路,降低成本,我们的数码管采用动态显示方式。
动态LED显示器接口及工作原理:
动态LED显示器的电路连接特点是将各位LED显示器的所有对应段线并联在一起,由一个8位I/O口控制输出字段码,而每位LED显示器的公共端(共阳极点或共阴极点)不直接接地或+5V电源,而是分别由另外的I/O口线控制(称为位选)。
LED显示器的显示内容通过段码I/O口和位选I/O口的相互配合控制,以动态扫描显示的工作方式输出待显示的内容。
图2-5单片机与数码管连接实物图
数码显示(LED)及接口:
(1)LED显示器结构
LED显示器内部由发光二极管组成。
根据内部二极管连接方式,数码管结构又分为共阴极和共阳极型。
共阳极型发光二极管阳极连在一起接高电平,共阴极型发光二极管阴极连在一起接低电平。
电压测量系统采用的是共阳极型。
图2-6数码管引脚及内部结构图
由图可见,a.、b、c、d、f、g、分别为七个发光段引脚,dp引脚为小数点。
3与8脚接电源或接地端,共10个引脚。
(2)显示字形与字段码关系
数码管发光原理情况:
共阳极型如图2-6(b)所示,a~g哪个为低电平,哪个二极管亮。
每个二极管为一段,不同的发光段亮,可组成不同字形。
输入到数码管dp、g、f、e、d、c、b、a的进制码称为字段吗(或字形吗),数码管显示的结果为字形。
本系统中,数码管各个字段和PA口输出字形码对应关系如表3和表4所示:
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
小数点
g
f
e
d
c
b
a
表3
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
90H
0
1
2
3
4
5
6
7
8
9
表4
2-4-4系统A/D电压采样电路
本系统A/D电压采样电路采用专用集成电路芯片ADC0809,下面我们介绍一下ADC0809。
1)ADC0809的结构
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
其内部有一个8路通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。
如图2-7管脚图所示。
图2-7管脚图
A/D转换器是连接模拟世界与数字世界的桥梁,它担负着将模拟信号变换成适合数字处理的二进制代码的任务。
目前,8位A/D转换器的转换速度以及达到1.5GHz;
2)ADC0809主要特性:
@8路8位A/D转换器,即分辨率8位;
@具有锁存控制的8路模拟开关;
@易与各种微控控制接口;
@可锁存三态输出,输出与TTL兼容;
@转换时间(f—500KHz):
128US;
@转换精度:
0.2%;
3)ADC0809A/D工作原理
本系统中,ADC0809与单片机连接图如图2-8所示,其工作过程是:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三台门打开,转换结果的数字量输出到数据总线上。
图2-8ADC0809与单片机接口电路图
图2-9ADC0809与单片机连接实物图
ADC0809具有8路模拟输入端口,由于ADC0809内部含有输出三态缓冲锁存器,所以可以直接将8位数字量输出端与单片机P0口相连。
P0端口作A/D转换数据读入用,P2端口用作0809的A/D转换控制。
地址线(23~25脚)可决定对哪一路模拟输入作A/D转换。
22脚ALE为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
6脚START为测试控制,当输入一个2us宽高电平时,就开始A/D转换。
7脚EOC为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平,A/D转换数据从该端口输出。
10脚为ADC0809的时钟输入端,利用单片机30脚的六分频晶振频率再通过分频器二分频得到1MHz时钟。
2-4-54024分频电路
本系统采用4000系列电路中的4024对ALE引脚进行2分频,得到1M频率的方波信号,提供给ADC0809作为工作频率,我们采用的是硬件分频的方法,其特点是不影响软件编程,简化了软件程序。
当然我们也可以采用软件方法,利用单片机的定时器,定时周期为10US,利用一个IO口,则单片机每到10US,使这个IO口反相,则可以通过IO口,产生一个周期为20US的方波,作为ADC0809的工作频率,用软件分频的方法是,节省了硬件资源,但使得编程复杂化。
第三章多路电压测量系统的软件系统介绍
3-1多路数字电压测量系统软件设计概述
在系统软件设计时,应根据系统软件功能要求,将系统软件分成若干个相对独立的部分,并根据它们的联系和时间上的关系,设计出合理的软件总体结构。
通常在编制程序前先根据系统输入和输出变量建立起正确的数学模型,然后画出程序流程框图,要求流程框图结构清晰、简捷、合理,画流程框图时还要对系统资源作具体的分配和说明。
编制程序时一般采用自顶向下的程序设计技术,先设计测量程序再设计各应用程序模块。
各功能程序应模块化、子程序化,这样不仅便于调试、链接,还便于个性和移植。
在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相结合进行。
当系统的电路设计定型后,软件的任务也就明确了。
下图为多路数字电压测量系统设计流程图及系统框图如下图3-1所示:
图3-1多路数字电压测量系统软件系统设计流程图
3-1-2主程序
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1s左右。
主程序在调用显示子程序和测试子程序之间循环,主程序流程图如下图3-2所示:
图3-2主程序流程图
3-1-3显示子程序
系统显示子程序采用动态扫描法,实现四位数码管的数值的动态显示。
我们把测量所得的8个通道的A/D转换数据分别存放在70H~77H寄存器,每个通道的测量数据在显示时,需转换成为3位十进制BCD码,放在78H~7AH单元中,7BH存放通道标志数。
寄存器R3用作8路循环控制,R0用作显示数据地址指针。
系统软件显示子程序如下:
***************************
;*显示控制程序*
;***************************
DISPLAY:
JB00H,DISP11;标志位为1,则转单路显示控制子程序
MOVR3,#08H;8路信号循环显示控制子程序
MOVR0,#70H;显示数据初址70H~77H
MOV7BH,#00H;显示通道路数初值
DISLOOP1:
LCALLTUNBCD;显示数据转为三位BCD码存入7AH,79H,78H
MOVR2,#0FFH;每路显示时间控制在4msX255,约1s
DISLOOP2:
LCALLDISP;调四位显示程序
LCALLKEYWORK1;按键检测
DJNZR2,DISLOOP2
INCR0;显示下一路
INC7BH;通道显示数加1
DJNZR3,DISLOOP1
RET
DISP11:
MOVA,7BH;单路显示控制子程序
SUBBA,#01H
MOV7BH,A
ADDA,#70H
MOVR0,A
DISLOOP11:
LCALLTUNBCD;显示数据转为三位BCD码存入7AH,79H,78H
MOVR2,#0FFH;每路显示时间控制在4msX25
DISLOOP22:
LCALLDISP;调四位显示程序
LCALLKEYWORK2;按键检测
DJNZR2,DISLOOP22
INC7BH;通道显示数加1
RET
3-1-4模/数转换测量子程序
模/数转换测量子程序用来实现对A/D转换模块ADC0809的模拟输入电压进行A/D转换,并将其转换后的数值存入70H~77H内存单元。
其程序流程见图3-3,子程序源程序如下所示。
图3-3A/D转换测量程序流程图
***************************
;*电压测量(A/D)子程序*
;***************************
;一次测量数据8个,依次放入70H~77H单元中
TEST:
CLRA;模/数转换子程序
MOVP2,A
MOVR0,#70H;转换值存放首址
MOVR7,#08H;转换8次控制
LCALLTESTART;启动测试
WAIT:
JBP3.7,MOVD;等A/D转换结束信号
AJMPWAIT
TESTART:
SETBP2.3;测试启动
NOP
NOP
CLRP2.3
SETBP2.4
NOP
NOP
CLRP2.4
NOP
NOP
NOP
NOP
RET
MOVD:
SETBP2.5;取A/D转换数据
MOVA,P0
MOV@R0,A
CLRP2.5
INCR0
MOVA,P2;通道地址加1
INCA
MOVP2,A
CJNEA,#08H,TESTEND;等8路A/D转换结束
TESTEND:
JCTESTCON
CLRA;结束恢复端口
MOVP2,A
MOVA,#0FFH
MOVP0,A
MOVP1,A
MOVP3,A
RET
TESTCON:
LCALLTESTART
LJMPWAIT
3-2系统软件程序设计
本系统采用汇编语言编写,调试与仿真采用南京伟福公司生产的WAVE2000仿真系统,经过调试,达到了满意的效果。
系统源程序清单如下:
主程序
;***************************
;*主程序和中断程序入口*
;***************************
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
RETI
ORG001BH
RETI
ORG0023H
RETI
ORG002BH
RETI
;***************************
;*初始化程序中的各变量*
;***************************
CLEARMEMIO:
CLRA
MOVP2,A
MOVR0,#70H
MOVR2,#0DH
LOOPMEM:
MOV@R0,A
INCR0
DJNZR2,LOOPMEM
MOV20H,#00H
MOVA,#0FFH
MOVP0,A
MOVP1,A
MOVP3,A
***************************
;*主程序*
;***************************
START:
LCALLCLEARMEMIO;初始化
MAIN:
LCALLTEST;测量一次
LCALLDISPLAY;显示数据一次
AJMPMAIN
NOP;PC值出错处理
NOP
NOP
LJMPSTART
***************************
;*显示控制程序*
;***************************
DISPLAY:
JB00H,DISP11;标志位为1,则转单路显示控制子程序
MOVR3,#08H;8路信号循环显示控制子程序
MOVR0,#70H;显示数据初址70H~77H
MOV7BH,#00H;显示通道路数初值
DISLOOP1:
LCALLTUNBCD;显示数据转为三位BCD码存入7AH,79H,78H
MOVR2,#0FFH;每路显示时间控制在4msX255,约1s
DISLOOP2:
LCALLDISP;调四位显示程序
LCALLKEYWORK1;按键检测
DJNZR2,DISLOOP2
INCR0;显示下一路
INC7BH;通道显示数加1
DJNZR3,DISLOOP1
RET
DISP11:
MOVA,7BH;单路显示控制子程序
SUBBA,#01H
MOV7BH,A
ADDA,#70H
MOVR0,A
DISLO