多路数字电压表.docx

上传人:b****6 文档编号:5966281 上传时间:2023-01-02 格式:DOCX 页数:15 大小:127.42KB
下载 相关 举报
多路数字电压表.docx_第1页
第1页 / 共15页
多路数字电压表.docx_第2页
第2页 / 共15页
多路数字电压表.docx_第3页
第3页 / 共15页
多路数字电压表.docx_第4页
第4页 / 共15页
多路数字电压表.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

多路数字电压表.docx

《多路数字电压表.docx》由会员分享,可在线阅读,更多相关《多路数字电压表.docx(15页珍藏版)》请在冰豆网上搜索。

多路数字电压表.docx

多路数字电压表

1引言

随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。

传统的模拟电压表,已有百年的发展历史,虽然经过改进,但是仍然远远不能满足测量的需要。

近几十年来随着电子技术的发展,经常需要测量高精度的电压,因此数字电压表应运而生,发展的速度很快,数字电压表成为数字仪表的基础和核心。

本次设计的数字电压表的测量电路主要由三个模块组成:

A/D转换模块、数据处理模块及显示控制模块。

A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。

数据处理则由芯片8031来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。

显示模块主要由数码管,显示测量到的电压值。

 

2系统原理及基本框图

2.1设计原理

采用80C51系列单片机和ADC0809设计一个多路数字电压表,能够测量0-5V之间的直流电压值,四位数码管动态显示,这里采用总线型DIP40引脚封装.80C51系列基本型单片机具有如下特点:

40个引脚,4kROM,128字节RAM,32个外部双向输入/输出(I/O)口,5个中断优先级,2层中断嵌套中断,2个16位定时计数器,还具有一套完善的中断系统.

根据系统的功能要求,控制系统采用AT89C51单片机,A/D转换器采用ADC0809.ADC0809是8位A/D转换器.当输入电压为5伏时,输出的数据值为255(0FFH),因此最大分辨率为0.0196(5/255).ADC0809具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换.每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8路输入电压进行测量.LED数码管显示采用软件译码动态显示.通过按键选择可8路循环显示,也可单路显示,单路显示可通过按键选择显示的通道数.

基本框图如图2.1所示

 

图2.1基本框图

 

3系统硬件电路设计

3.1硬件电路设计

多路数字电压表应用系统硬件电路主要由AT89C51单片机、ADC0809A/D转换器、数码管动态显示电路和按键处理电路等组成。

设计时假设待测的输入电压为8路,电压值的范畴为0~5V,要求能在4位LED数码管上轮流显示或单路选择显示。

测量的最小分辨率为0.019V,测量误差为正负0.02V。

它的硬件电路见附录A

3.2硬件电路组成及介绍

3.2.1AT89C51单片机基本结构

AT89C51单片机主要由以下几部分组成:

CPU系统

●8位CPU,含布加尔累加器;

●时钟电路;

●总线控制逻辑。

存储器系统

●4K字节的程序存储器(ROM/EPROM/FLASH,可外扩至64K);

●128字节的数据存储器(RAM,可外扩至64K);

●特殊功能寄存器SFR。

I/O口和其他功能单元

●4个并行I/O口;

●2个16位定时记数器

●1个全双工异步串行口

●中断系统(5个中断源、2个优先级)。

 

3.2.2AT89C51介绍

89C51芯片引脚封装如图3.1所示

 

图3.189C51引脚封装

电源极时钟引脚

●Vcc:

电源接入引脚;

●Vss:

接地引脚;

●XTAL1:

晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地);

●XTAL2:

晶体振荡器介入的另一引脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。

控制线引脚

●RST/VPD:

复位信号输入引脚/备用电源输入引脚;

●ALE/PROG:

地址锁存允许信号输出引脚/编程脉冲输入引脚;

●EA/VPP:

内外存储器选择引脚/片内EPROM9或FlashROM)编程电压输入引脚;

●PESN:

外部程序存储器选通信号输出引脚。

并行I/O引脚(32个,分成4个8位口)

●P0.0~P0.7:

一般I/O口引脚或数据/低位地址总线复用引脚;

●P1.0~P1.7:

一般I/O引脚;

●P2.0~P2.7:

一般I/O引脚或高位地址总县引脚;

●P3.0~P3.7:

一般I/O引脚或者第二功能引脚。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

当CPU不对P3口进行字节或位寻址时,单片机内部硬件自动将口琐存器的Q端置1。

这时,

P3口可以作为第二功能使用。

各脚的定义如下:

●P3.0:

RXD(串行口输入);

●P3.1:

TXD(串行口输出);

●P3.2:

INT0(外部中断0输入);

●P3.3:

INT1(外部中断1输入);

●P3.4:

T0(定时/计数器0的外部输入);

●P3.5:

T1(定时/计数器1的外部输入);

●P3.6:

WR(片外数据存储器“写”选通控制输出);

●P3.7:

RD(片外数据存储器“读”选通控制输出)。

当P3口相应的口线处于第二功能,应满足的条件是:

(1)串行口处于运行状态(RXD,TXD);

(2)外部中断已经打开(INT0、INT1);

(3)定时/计数器处于外部计数状态(T1、T2);

(4)执行读/写外部RAM的指令(RD、WR)。

作为输出功能的口线(如RXD),由于此时该位的锁存器已自动置1,与非门对第二功能输出是畅通的,即引起的状态与第二功能是相同的。

3.2.3ADC0809A/D转换器

ADC0809具有8路模拟量输入通道IN0-IN7,通过3位地址输入端C,B,A进行选择。

D0-D7是8位数字量输出端,ALE是地址锁存控制端,当输入高电平时,C,B,A引脚输入的地址锁存于ADC0809内部的锁存器中,经内部译码电路译码选中相应的模拟通道。

6引脚为启动转换控制端,当输入2US宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。

7引脚为A/D转换结束信号EOC,ADC0809为逐次比较型A/D转换器,当开始转换时,EOC信号为低电平,经过一段时间,转换结束,转换结束EOC输出高电平,转换的结果存放在ADC0809内部的输出数据锁存器中。

9引脚为A/D转换数据输出允许控制端OE,当OE为高电平时,存放于输出数据锁存器中的数据通过ADC0809的数据线D0~D7输出。

10引脚为ADC0809的时钟信号输入端CLOCK。

再连接时,ADC0809的数据线D0~D7与AT89S51的P0口相连,ADC0809的地址引脚、地址锁存端ALE、启动信号START、数据输出允许控制端OE分别与AT98S51的P2口相连,转换结束信号EOC与AT89S51的P3.7相连。

时钟信号输入端CLOCK由单片机的地址锁存信号ALE通过14024二分频后得到,由于单片机的系统时钟为12MHZ,因而AD0809时钟输入端CLOCK信号的频率为1MHZ。

ADC0809的内部逻辑结构图如图3.2所示

 

 

图3.2ADC0809内部逻辑图

ADC0809的管脚图如图3.3所示

 

图3.3ADC0809管脚图

3.2.4LED数码管动态显示及按键

LED数码管采用动态扫描方式连接,通过AT89S52的P1口和P3.0~P3.3口控制。

P1口为LED数码管的字段码输入端,P3.0~P3.5口为LED数码管的位选码输出端,通过三极管驱动并反向。

K1和K2是两个按键开关,它通过单片机的P3.5和P3.6相连,K1用于单路显示或多路循环显示转换控制,K2当单路显示时通道选择。

 

4系统软件程序的设计

4.1系统软件程序设计组成

多路数字电压表系统软件程序由主程序、A/D转换子程序和显示程序组成。

4.2各部分组成及功能

4.2.1主程序

主程序包含初始化部分、调用A/D转换子程序和调用显示程序,初始化部分包含存放通道数据的缓冲区初始化和显示缓冲区初始化。

另外,对于单路显示和循环显示,系统设置了一个标志位00H控制,初始化时00H位设置位0,默认为循环显示,当它为1时改变为单路显示控制位,00H位通过单路/循环按键控制。

 

图4.1主程序框图

4.2.2A/D转换子程序

A/D转换子程序用于对ADC08098路输入模拟电压进行A/D转换,并将转换的数值存入8个相应的存储单元中。

A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次。

图4.2.2A/D转换子程序框图

4.2.3显示子程序

LED数码管采用软件译码态扫描方式。

在显示子程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把8个存储单元的数值一次取出送到4个数码管上显示,每一路显示一秒。

单路显示程序只对当前选中的一路数据进行显示。

每路数据显示时须经过转换变成十进制BCD码,放于4个数码管的显示

缓冲区中。

单路或多路循环显示通过标志位00H控制。

在显示控制程序中加入了对单路或多路循环按键和通道选择按键的判断。

 

4.3程序清单

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

RET

START:

LCALLCLEARMEMIO

MAIN:

LCALLTEST

LCALLDISPLAY

AJMPMAIN

NOP

NOP

LJMPSTART

DISPLAY:

JB00H,DISP11

MOVR3,#04H

MOVR0,#70H

MOV7BH,#00H

DISLOOP1:

LCALLTUNBCD

MOVR2,#0FFH

DISLOOP2:

LCALLDISP

LCALLKEYWORK1

DJNZR2,DISLOOP2

INCR0

INC7BH

DJNZR3,DISLOOP1

RET

DISP11:

MOVA,7BH

SUBBA,#01H

MOV7BH,A

ADDA,#70H

MOVR0,A

DISLOOP11:

LCALLTUNBCD

MOVR2,#0FFH

DISLOOP22:

LCALLDISP

DJNZR2,DISLOOP22

INC7BH

RET

TUNBCD:

MOVA,@R0

MOVB,#51

DIVAB

MOV7AH,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP2

ADDA,#5

LOOP2:

MOV79H,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP3

ADDA,#5

LOOP3:

MOV78H,A

RET

DISP:

MOVR1,#78H

MOVR5,#0FEH

PLAY:

MOVP1,#0FFH

MOVA,R5

ANLP3,A

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP1,A

JBP3.2,PLAY1

SETBP1.7

PLAY1:

LCALLDL1MS

INCR1

MOVA,P3

JNBACC.3,ENDOUT

RLA

MOVR5,A

MOVP3,#0FFH

AJMPPLAY

ENDOUT:

MOVP3,#0FFH

MOVP1,#0FFH

RET

TAB:

DB3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7eH,6fH,00H

DL10MS:

MOVR6,#0D0H

DL1:

MOVR7,#19H

DL2:

DJNZR7,DL2

DJNZR6,DL1

RET

DL1MS:

MOVR4,#0FFH

LOOP11:

DJNZR4,LOOP11

MOVR4,#0FFH

LOOP22:

DJNZR4,LOOP22

RET

TEST:

MOVR1,#70H

MOVDPTR,#7FF8H

MOVR7,#04H

SETBP3.4

LOOP:

MOVX@DPTR,A

HER:

CLRP2.7

SETBP2.7

CLRP2.7

JNBP3.4,HER

MOVXA,@DPTR

MOV@R1,A

INCDPTR

INCR1

DJNZR7,LOOP

KEYWORK1:

JNBP3.5,KEY1

KEYOUT:

RET

KEY1:

LCALLDISP

JBP3.5,KEYOUT

WAIT11:

JNBP3.5,WAIT12

CPL00H

MOVR2,#0AH

MOVR3,#01H

RET

WAIT12:

LCALLDISP

AJMPWAIT11

END

总结

这次课程设计对我来说学到的不仅是那些知识,更多的是团队和合作。

现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!

在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。

还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。

 在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多!

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

这次单片机课程设计给我的最大的印象就是努力的动手去做,困难在你的勇气和毅力下是抬不了头的。

从做这个设计开始无论遇到什么困难,我都没有一丝的放弃的念头。

我会在以后的生活和学习中把所学的东西应用进去。

 

致谢

两周的设计时间很快的过去了,在这两周里学习掌握了许多单片机的相关知识,锻练了动手能力,了解到了一些设计上的方法和技巧。

在这里我要感谢一直帮助指导我的田老师,设计当中我们遇到了什么不明白的问题,田老师都会细心的帮助我们进行解答,使我们的设计可以很顺利地进行。

对我们要求严格使我更用心专注于编程,查找错误,分析错误,感谢田老师的谆谆教导。

同时我也要感谢我同组的伙伴,因为这次设计的很特别,不仅仅是设计单片机程序,同时全组还要上交一份设计的成品,因此在设计时我们独立思考,同时互相帮助,解决个人在单方面的遇到的一些小困难,使我们的设计得以很快的完成。

在这里我感谢小组成员对我设计上的帮助,同时特别要感谢田老师对我们设计上的悉心帮助。

感谢学校给我们这样的机会参与设计和实习,锻炼我们的动手能力,为今后的工作和学习奠定基础。

 

参考文献

[1]黄勤等.单片机原理及原理及应用[M].清华大学出版社,2010

[2]谭浩强.C语言设计(第二版).北京:

清华大学出版社,2006

[3]吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》[M].北京:

清华大学出版社,2002.

[4]刘伟,赵俊逸,黄勇,《一种基予C8051F单片机的SOC型数据采录器的设计与实现》[A].天津市计算机学会单片机分会编.《2003年全国单片机及嵌如入式系统学术年会论文集(下册)》[C].北京:

北京航空航天大学出版社,2003.790-794

[5]何立民.单片机应用技术大全.北京:

北京航空航天大学出版社,1994

 

附录A

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

当前位置:首页 > 自然科学

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

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