数字电压表.docx
- 文档编号:30635742
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:19
- 大小:31.62KB
数字电压表.docx
《数字电压表.docx》由会员分享,可在线阅读,更多相关《数字电压表.docx(19页珍藏版)》请在冰豆网上搜索。
数字电压表
1.绪论
数字电压表(DigitalVoltmeter)简称DVM,作为智能仪表的一种,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
举例:
图1CAKJ系列数字电流-电压-功率-因数-频率表
如图1是一个CAKJ系列数字电流-电压-功率-因数-频率表
1)适用范围该系列产品是一种高精度的安装式仪表,它可广泛用于电力系统和自动化控制系统中对单相三相电量参数(交直流电流-电压-功率-因数-频率)的测量和显示。
采用大规模集成电路,具有转换精度高、响应速度快、性能稳定等特点,可直接替代指针式仪表。
2)通用技术参数
*精度等级:
数显0.2、0.5级 光柱1.5级
*数显范围:
四位半显示0-19999
*光柱指示:
0-120%
*标称输入:
电流1A、5A;电压100V、220V、380V、450V
*过量程:
持续:
1.2倍,瞬时:
电流10倍/5秒,电压2倍/1秒
本次设计是以单片机AT89S51芯片为核心,设计了一个简易的电压检测电路,它由5V直流电源供电。
在硬件方面,通过一个可变电阻调节输入电压的变化来反映所检测到的电压变化。
此变化的电压通过ADC0809的一个通道(IN0)送入并进行A/D转换,将转换后的数字量在单片机AT89S51中进行处理,再转换
成相应的实际电压值,最后通过四位LED数码管显示,精确到十分位,LED采用的是动态扫描显示,使用74HC02P芯片进行驱动。
软件方面采用汇编语言编程。
使得整个系统完成一个简易的数字电压表的功能。
2.电压表设计目的及要求
2.1设计目的
通过简易数字电压表的设计过程,结合在校所学课程,掌握目前电子仪表的一般设计过程,锻炼动手能力和分析、解决问题的能力,积累经验,培养自己以后能在工作中按部就班、一丝不苟以及对所学知识的综合应用能力。
2.2设计要求
1)根据课题的设计内容,正确设计电路原理图。
2)合理排布电路元器件,正确焊接硬件电路板。
3)正确设计程序流程图,正确编写软件程序,设计的软件程序能够在调试好的硬件电路上正常运行。
4)软件编程及与微机通信下载可通过单片机最小系统进行程序写入。
5)电压表量程0-5V,精确到十分位。
3.系统硬件设计
3.1单片机硬件系统设计
3.1.1AT89S51引脚图及功能和应用介绍
掌握MCS-51单片机,应首先了解MCS-51的引脚,熟悉并牢记各引脚的功能。
AT89S52有40条引脚,与其他51系列单片机引脚是兼容的。
这40条引脚可分为I/O端口线(32条)、控制线(4条)、电源线(2条)、外接晶体线(2条)四部分,引脚排列参见图2。
图2AT89S51芯片引脚图
1).I/O端口线输入输出引脚
P0.0—P0.7(39—32):
P0口是一个漏极开路型准双向I/O口。
在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。
在E—PROM编程时,它接收指令字节,而在验证程序时,则输出指令字节。
本设计中将P0口作为电压数据的输入端口。
P1.0—PI.7(1—8):
P1口是带内部上拉电阻的8位双向I/O口。
设计中用P1口来输出数码管的八位段码。
P2.0—P2.7(21—28):
P2口是一个带内部上拉电阻的8位双向I/O口。
在访问外部存储器时,它送出高8位地址。
设计中用P2.0—P2.3来输出数码管的四位位码。
图3P3口的第二功能
P3.0—P3.7(10—17):
P3口是一个带内部上拉电阻的8位双向I/O口。
在MCS—5l中,这8个引脚还兼有专用功能,P3的8条口线都定义有第二功能,详见图3。
2).控制线控制引脚(ALE/PROG、PSEN、RST/VPD、EA/Vpp)
ALE(30脚):
地址锁存控制信号。
在系统扩展时,ALE用于控制P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
PSEN(29脚):
外部程序存储器读选通信号。
在读外部ROM时,有效(低电平),以实现外部ROM单元的读操作。
EA(31脚):
访问程序存储控制信号。
当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
RST/Vpp(9脚):
复位信号。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。
3).外接晶体线
XTAL1(19脚)和XTAL2(18脚)外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
设计使用了6MHz的晶振。
4).主电源引脚高VCC和低VSS
VCC(40脚):
+5V电源。
VSS(20脚):
地线(GND)。
3.1.2显示电路设计方案及选择
方案一:
通过1个LED显示模块组成4个LED指示灯进行显示,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
所以本设计即采用LED显示。
P1口输出段码信号,P2输出位码信号。
这些信号由89SC51软件生成,如图4所示。
图4LED数码管显示电路
LED显示器又称数码管,八段LED显示器由8个发光二极管组成。
其中7个发光二极管构成字型“8”的各个笔画段,另一个小数点为dp发光二极管。
LED显示器有两种不同的形式:
一种是发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
如图5所示。
共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。
当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的D7D6D5D4D3D2D1D0,于是用8位二进制码就可以表示欲显示字符的字型代码。
例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示"P"字符,即对于共阴极LED显示器,“P”字符的字形码是73H。
如果是共阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。
此设计所采用的是共阳极的四位八段数码管进行电压显示,并且显示精确到十分位。
图5LED数码管共阳极和共阴极示图
LED显示方式有动态显示和静态显示两种方式。
本设计采用动态扫描显示接口电路,动态显示接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM各自独立地受I/O线控制。
CPU向字段输出口送出字型码时,所有显示器接收到相同的字型码,但究竟是哪个显示器亮,则取决于COM端。
也就是说我们可以采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
方案二:
采用液晶1602做为显示电路。
其中7-14脚为数据口脚,3脚为背景灯亮度调节脚,EN、RW、RS命令状态字脚。
我们可以通过程序使1602显示各类字符。
图61602显示电路
1602管脚说明
1)Vss电源地;
2)Vdd电源正极4.5~5.5V通常使用5V;
3)Vl对比度调节电源调节范围0~5V。
接正电源时对比度最弱,接地对比度最高,但是对比度过高时产生“鬼影”,因此通常使用一个10K电位器来调整对比度,或者直接接一个电阻到地;
4)Rs数据/命令选择高电平选择数据寄存器,低电平选择指令寄存器;
5)R/W读/写选择高电平读取数据,低电平写入数据;
6)E模块使能端写数据需要下降沿触发模块;
7~14)D0~D7三态双向数据口MCUI/O口资源紧张可以使用4位数据线D4~D7接口传送数据;
15)Blk背光源地
16)Bla背光源正极需要背光串接一个限流电阻接Vdd,blk接地,实测该模块背光电流50mA左右
用液晶作为显示电路,功能强大,能做各类扩展。
本设计暂不采用。
3.1.3电源电路设计方案及选择
方案一:
由变压器输入7805的1脚,2脚接地,3脚+5V输出,中间加2个104电容和1000u的电解电容分别为了退耦和稳压。
使+5V更稳定地输出。
下图是电源设计接线图。
由于再做个电源又增加了设计的复杂程度,所以此方案可行,但没有采用。
图7电源接线图
方案二:
通过在电路板上固定一个电源插口,直接采用5V的直流稳压源。
3.2电压采集及A/D转换电路设计方案
3.2.1A/D转换电路原理图
本设计采用8位AD转换器ADC0809,编程简单方便,价格便宜。
如图8所示。
图8A/D转换电路
3.2.2ADC0809的结构和引脚
ADC0809是8位逐次逼近型A/D转换器。
带8个模拟量输入通道,芯片内带通道地址译码锁存器,输出带三态数据锁存器,启动信号为脉冲启动方式,每一通道的转换大约100fts。
ADC0809由两大部分组成,一部分为输入通道,包括8位模拟开关,三条地址线的锁存器和译码器,可以实现8路模拟输人通道的选择。
另一部分为一个逐次逼近型A/D转换器。
图9ADC0809的引脚与通道地址码
其中:
.IN0—IN7:
8个模拟通道输入瑞。
.START:
启动转换信号。
.EOC:
转换结束信号。
.OE:
输出允许信号。
信号由CPU读信号和片选信号组合产生。
.CLOCK:
外部时钟脉冲输入端,典型值640KHZ。
.ALE:
地址锁存允许信号。
.A、B、C:
通道地址线,CBA的8种组合状态000—111对应了8个通道选择。
.VREF(十),VREF(—):
参考电压输入端。
.VCC:
十5V电源。
.GND:
地。
C、B、A输入的通道地址在ALE有效时被锁存。
启动信号START启动后开始转换,但是EOC信号是在START的下降沿10us后才变无效的低电乎,这要求查询程序待EOC无效后再开始查询,转换结束后由OE产生信号输出数据。
设计只进行一路电压测量,从其通道IN0输入,所以CBA的值为000。
3.2.3驱动电路74HC02芯片
74HC02是一款高速CMOS器件,74HC02遵循JEDEC标准no.7A。
74HC02引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC02实现了4路2输入或非门功能。
其引脚图如图10所示。
图1074HC02芯片的引脚
5.软件程序设计
本设计程序是采用汇编语言编写的。
汇编语言(AssemblyLanguage)是面向机器的程序设计语言。
在汇编语句中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
于是汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
汇编程序把汇编语言翻译成机器语言的过程称为汇编。
设计源程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT_0
ORG0040H
MAIN:
MOVSP,#60H;初始化
MOVR7,#0FFH
MOVIE,#81H
MOVTCON,#01H
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
MOV36H,#00H
MOV37H,#00H
MOV38H,#00H
MOV39H,#00H
A_D:
MOVDPTR,#4000H;取数
MOVX@DPTR,A
CJNER7,#00H,$
LCALLQUSU
LCALLXIAN
MOVR7,#0FFH
LJMPA_D
QUSU:
MOVR0,A
MOVA,R0
MOVB,#50
DIVAB
MOV31H,A;电压整数位
MOVA,B
MOVB,#5
DIVAB
MOV32H,A;电压小数的个位
MOVA,B
RLA
MOV33H,A;电压小数的十位
MOVA,33H;电压小数的十位变成实际电压
MOVB,#2
MULAB
MOV34H,A
CLRC
SUBBA,#10
JNCL
AJMPZ
L:
MOVA,34H
ADDA,#6
MOV34H,A
Z:
MOVA,34H
MOV33H,A
MOVA,32H;电压小数的个位
MOVB,#2
MULAB
MOV35H,A
CLRC
SUBBA,#10
JNCLL
AJMPZZ
LL:
MOVA,35H
ADDA,#6
MOV35H,A
ZZ:
MOVA,35H
MOV32H,A
MOVA,31H;电压的个位
MOVB,#2
MULAB
MOV30H,A
CLRC
SUBBA,#10
JNCLLL
AJMPZZZ
LLL:
MOVA,30H
ADDA,#6
SWAPA
ANLA,#0FH
MOV39H,A;电压的百位
MOV30H,#00H
AJMPPPP
ZZZ:
MOV39H,#00H
PPP:
MOVA,33H;显示值
ANLA,#0FH
MOV36H,A;显示值的小数位
MOVA,33H
ANLA,#0F0H
SWAPA
MOV37H,A
MOVA,32H
ANLA,#0FH
ADDA,37H
MOV37H,A;显示值的个位
MOVA,32H
ANLA,#0F0H
SWAPA
MOV38H,A
MOVA,30H
ADDA,38H
MOV38H,A;显示值的十位
RET
XIAN:
MOVP2,#0FFH;数码管送值显示
MOVA,39H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP2,#11111110B;显示整数百位
MOVP1,A
LCALLDELAY1S
MOVA,38H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP2,#11111101B;显示整数十位
MOVP1,A
LCALLDELAY1S
MOVA,37H
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP2,#11111011B;显示整数个位
MOVP1,A
LCALLDELAY1S
MOVA,36H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP2,#11110111B;显示小数位
MOVP1,A
LCALLDELAY1S
RET
INT_0:
MOVDPTR,#4000H;中断
MOVXA,@DPTR
MOVR7,#00H
RETI
DELAY1S:
MOVR2,#04;延时
DL:
MOVR3,#255
DL1:
DJNZR3,DL1
DJNZR2,DL
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4
DB92H,82H,0F8H,80H,90H;5,6,7,8,9
TAB1:
DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10H;0-9的带小数点的段选码
END
6.设计原理图及工作原理
图14设计原理图
如上图,当调整电位器(0-5V)R15时,模/数转换芯片ADC0809的第一个输入通道IN-0所接收的模拟电压值即会改变,通过内部的A/D转换电路,使得输出端口的高低电位也相应改变,即数值的改变。
将数值从AT89S51的P0口输入,经过一系列内部电路处理之后,从其P1口和P3口分别输出段码和位码,在数码管上进行显示,从而达到了检测电压并显示的功能。
即数字电压表的设计。
7.综合调试及结论
1).对源程序用WAVE软件进行编写调试,当编译没有错误时进行程序下载。
2).当把程序加载到单片机最小系统板子上的时候,因为不是直接应用的最小系统板,所以要关闭通信下载开关,从而将程序保留在芯片AT89S51当中。
然后将其拔出插入到自己所焊的电路板上,发现数码管的显示不完整,可能是显示电路的焊接问题。
用万用表检查电路各重要节点的电位及相应电路间的导通与断开。
3).运用例子程序对芯片和最小系统进行调试,当把程序进行加载时,发现数码管上面显示的是乱码,修改程序,直至显示出例子所要求的现象。
4).在老师的指导下重新对设计的源程序进行编译下载,修改错误,并对电路板检查和改进,直到达到设计的要求。
5).最终在调试过程中我们发现了硬件连接的重要性,因为有太多线路要连接而导致容易出现由于粗心而导致的连接错误,这个错误看似简单,但却是在整个系统设计调试过程中最不可忽视的,因此我们在硬件焊接时要非常细心,同时所有组员也要密切配合,这样一个团结的小组,才能解决所有问题,同时也可以保证系统的稳定和可靠。
9.参考文献
[1]李光飞,楼然苗,胡佳文,谢象佐.单片机课程设计实例指导.北京航空航天大学出版社.2004.9
[2]蔡朝洋.单片机控制实习与专题制作.北京:
北京航空航天大学出版社,2006.11
[3]楼然苗.51系列单片机设计实例.北京:
北京航空航天大学出版社,2006.2
[4]刘刚,秦永左.单片机原理及应用.北京:
中国林业出版社,2006.9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电压表
![提示](https://static.bdocx.com/images/bang_tan.gif)