您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页数字电压表设计论文

数字电压表设计论文

来源:化拓教育网
设计论文

一、 题目及设计要求

1、题目:数字电压表

2、利用单片机ATS51与ADC0809设计一个数字电压表,能够测量0-5V 的直流电压值,通过四位数码管显示。

二、主要技术指标

1、单片机的定时中断技术 2、数字芯片A/D转换技术 3、单片机的数据处理技术 4、单片机控制的数码管显示技术

三、方案论证及选择

1、主控芯片

方案1:选用专用电压转换芯片INC7107实现电压的测量和现实。缺点是精度比较低,且内部电压转换和控制部分不可控制。优点是价格低廉。

方案2:选用单片机ATS52和A/D转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。缺点是价格稍贵。优点是转换精度高,且转换的过程和控制、显示部分可以控制。

基于课程设计的要求,我们优先选用了:方案2。 2、显示部分

方案1:选用4个单体的共阳数码管,将a—h全部连接起来,然后接到单片机口的I/O上进行控制。缺点是焊接时比较麻烦,容易出错。优点是价格比较便宜。

方案2:选用一个四联的共阳数码管,外加四个三极管驱动。这个电路几乎没有缺点,优点是便于控制,价格低廉,焊接简单。

基于以上方案和课程设计的要求,我们优先选用了:方案2。

四、电路原理图

这个电路主要芯片有ADC0809、单片机ATS52和四联共阳数码管组成,

下面分别介绍一下它们的功能:

ADC0809

1.主要特性

1)8路8位A/D转换器,即分辨率8位。 2)具有转换起停控制端。 3)转换时间为100μs 4)单个+5V电源供电

5)模拟输入电压范围0~+5V,不需零点和满刻度校准。 6)工作温度范围为-40~+85摄氏度 7)低功耗,约15mW。 2.内部结构

ADC0809内部结构框图

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图1所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。

图1 ADC0809引脚图

3.外部特性(引脚功能)

ADC0809芯片有2引脚,采用双列直插式封装,如图13.23所示。下面说明各引脚功能。

IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。

ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。如下表所示。

表1 ADDA、ADDB、ADDC真值表

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

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

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

ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据

已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

ATS52

1、ATS52是一种低功耗、高性能CMOS8位微控制器,具有

8K在系统可编程Flash存储器,32位I/O口线,三个16位定时器/计数器,另外,ATS52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。 2、引脚结构及作用

ATS52管脚图

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)。

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为ATS52特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。

RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于

外部执行模式下无效。

PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当ATS52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP 电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。

五、软件设计

#include

#define uchar unsigned char #define uint unsigned int

sbit EOC=P3^2; //A/D转换结束信号 sbit ST=P3^0; //A/D启动转换信号 sbit OE=P3^1; //数据输出允许信号 sbit CLK=P3^3; //时钟脉冲 uint AD,temp,count,i,j;

//**********************数据****************************

char tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7f}; char wei[4]={0xfe,0xfd,0xfb,0xf7}; char weishu[4]={0,0,0,0};

//**********************延时函数*********************** delay(uchar z) {

uchar x,y; for(x=z;x<0;x--) }

for(y=110;y<0;y--);

//**********************显示函数************************ time0() interrupt 1 {

TH0=0xef; TL0=0xff; P1=wei[count]; P2=tab[weishu[count]]; if(count==3)

P2=tab[weishu[count]]-0x80; delay(20); count++; if(count==4) count=0; delay(20); }

//***********************显示处理函数************************ dealwith(void) {

uint date; if(AD>=250) AD=250; date=AD*20;

weishu[3]=date/1000; date=date%1000; weishu[2]=date/100; weishu[1]=date/10; date=date%100;

weishu[0]=date%10; }

//**************中断函数提供CLK脉冲************************ time1 () interrupt 3 {

TH1=0xfe; TL1=0xff; CLK=~CLK; }

//**********************主函数****************************** void main(void) {

TMOD=0X11; TH1=0xef; TL1=0xff; TH0=0xfe; TL0=0xff; TR1=1; ET1=1; TR0=1; ET0=1; EA=1; while(1)

{

ST=0; ST=1;

ST=0; //数据开始采集

ET0=0;

//关中断

while(EOC==1); //判断A/D是否结束

ET0=1; OE=1; AD=P0; OE=0; EA=1;

//开中断

dealwith(); for(i=0;i<1024;i++) for(j=0;j<10;j++); } }

六、调试过程及测试结果

1、首先根据电路原理图焊接出实际电路,然后编写简单的程序进行电路的调试,在实际的电路中,P2口接数码管的a—h段,P1.0—P1.3接四个数码管的位进行控制,ADC0809的数据输出端接单片机P0口,ADC0809的ST、OE、EOC、CLK分别由P3.0—P3.3进行控制。现在将在调试过程中的问题总结:测试数码管显示数据是否正确,将编好的程序写进单片机后,观察数码管,发现码型显示不正确,通过改正程序和硬件电路,使数码管显示出正确的数据。

2、通过以上软硬件电路调试,最终达到了题目的要求,实现了从0V—5V的显示,并且精度比较高。

七、主要元件清单

1、ATS52单片机 2、ADC0809芯片 3、12MHZ晶振 4、四联共阳数码管 5、按键和10K电位器

6、8550驱动三极管 7、电阻若干

八、总结

本次课程设计对点阵显示电路认真的学习以及对单片机技术有了更进一步的熟悉,实际操作和课本上的知识有很大联系,但又高于课本,一个看似很简单的电路,要动手把它设计出来就比较困难了,因为是设计要求我们在以后的学习中注意这一点,要把课本上所学到的知识和实际联系起来,同时通过本次电路的设计,不但巩固了所学知识,也使我们把理论与实践从真正意义上结合起来,增强了学习的兴趣,考验了我们借助互联网络搜集、查阅相关文献资料,和组织材料的综合能力。通过这次设计不仅锻炼了我们的团队协作精神,而且提高了创新能力。

在这三周的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了思考、动手操作的能力,在各种其它能力上也都有了提高,而且在与老师和同学的交流过程中,互动学习,将知识融会贯通。更重要的是我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。不管怎样,这些都是一种锻炼,一种知识的积完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。

九、参考文献

1、单片机原理及应用 张毅刚、刘杰 《哈尔宾工业大学》 2、单片机基础第三版 李广弟、朱月秀、冷祖祁 《人民邮电》 3、单片机的C语言应用程序设计 马忠梅、张凯《北航大学》 4、51系列单片机 楼然苗、李光飞 《北京航空航天大学》

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务