竞赛:| 全国大学生数模竞赛 | 全国研究生数模竞赛 | 全国大学生电工数模竞赛 | 美国"MCM/ICM" 竞赛 |
 资讯:| 数学理论 | 交叉学科 | 基础教育 | 考研数学 | 学术动态 | 编程交流 | 网络安全 | 经验技巧 |
 下载:| 数 学 篇 | 算 法 篇 | 建 模 篇 | 编 程 篇 | 数 据 篇 | 软 件 篇 | 考 研 篇 | 交叉学科 |
 视频:| 大学数学 | 大学英语 | 计 算 机 | 法律课程 | 政治课程 | 经济管理 | 数学建模 | 高考数学 |
 功能:| 矩阵论坛 | 学校协会 | 挑 战 赛 | 人才招聘 | 数学问吧 | "MC"理工浏览器 | "MCQ"即时通讯 |

 
会员中心
社区论坛
加入收藏
联系我们
您现在的位置: 数学中国 >> 资讯无限 >> 计算机技术 >> 编程交流 >> 正文
【字体:           
 
单片机
作者:39688264…    文章来源:本站原创    点击数:    更新时间:2008-4-3

基于AT89S52的直流数字电压表设计

学 生 姓 名   刘 锋

学 院(系)   通信与电子学院

专 业 班 级   电子信息工程2004(1)

指 导 教 师   刘建雄

完 成 日 期   2007

摘要

随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。本设计在参阅了大量前人设计的数字电压表的基础上,利用单片机技术结合A/D转换芯片构建了一个直流数字电压表。本文首先简要介绍了设计电压表的主要方式以及单片机系统的优势;然后详细介绍了直流数字电压表的设计流程,以及硬件系统和软件系统的设计,并给出了硬件电路的设计细节,包括各部分电路的走向、芯片的选择以及方案的可行性分析等。

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,在多方面显示出了它的优势,值得进一步学习和研究。但是仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

关键词 单片机(MCU  电压  A/D转换  AD574A  ISD1420

Abstract

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Keywords Micro Controller Unit,Voltmeter,A/D switch,AD574A,ISD1420

 

目录

摘要··· 1

Abstract· 1

目录··· 1

前言··· 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

前言

A/D转换器AD574A

 

电压显示器

模拟电压输入

ISD1420语音芯片

量程控制电路

文本框: 单片机
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。框图如下:

 

本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为单片机小系统电路、分压电路、A/D转换电路、LED显示电路及语音报读电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程,利用Keil 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。

 

 

 

 

 

 

 

 

 

1 系统硬件电路设计

 

1.1 单片机小系统电路

1.1.1.单片机芯片选择

单片机采用MCS-51系列单片机。由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8 CPU 和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash256字节RAM32 I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。


AT89S5240个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,216位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。其芯片外观及引脚图如下:

            1.1_1                                      1.1_2

 

1.1.2.单片机管脚说明

VCC:供电电压。

GND:接地。

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口缓冲器可接收,输出4TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89S52的一些特殊功能口,如下表所示:

管脚

备选功能

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口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVXMOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

1.1.3.单片机小系统电路连接


电路连接图如下图:

1.1_3

 

1.2 A/D转换器与单片机接口电路

1.2.1.A/D转换器芯片选择

A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。

随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。

双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX系列等,它们通常带有自动较零、七段码输出等功能。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示。

本设计中,要求精度小于0.1%,则必须选用分辨率大于8位的芯片,如10位、12位、14位或16A/D转换器,比如AD573AD574AADC1140等。本电路采用AD574A

AD574A是美国Analog Device公司在AD574的基础上改进过的一种完全12位单片A/D转换器。它采用逐次逼近型的A/D转换器,最大转换时间为25us,转换精度为0.05%,所以适合于高精度的快速转换采样系统。芯片内部包含微处理器借口逻辑(有三态输出缓冲器),故可直接与各种类型的8位或者16位的微处理器连接,而无需附加逻辑接口电路,切能与CMOSTTL电路兼容。


AD574A采用28脚双列直插标准封装,其引脚图如下:

1.2_1

1.2.2.A/D转换器管脚说明

A/D574A5根控制线,逻辑控制输入信号有:

A0:字节选择控制信号。

CE:片启动信号。

/CS:片选信号。当/CS=0CE=1同时满足时,AD574才处于工作状态,否则工作被禁止。

R/-C:读数据/转换控制信号。

12/-8:数据输出格式选择控制信号。当其为高电平时,对应12位并行输出;为低电平时,对应8位输出。

R/-C=0,启动A/D转换:当A0=0,启动12A/D转换方式;当A0=1,启动8位转换方式。

R/-C=1,数据输出,A0=0时,高8位数据有效;A0=1时,低4位数据有效,中间4位为0,高4位为三态。

输出信号有:

STS:工作状态信号线。当启动A/D进行转换时,STS为高电平;当A/D转换结束时为低电平。则可以利用此线驱动一信号二极管的亮灭,从而表示是否处于A/D转换。

其它管脚功能如下:

10Vin,20Vin:模拟量输入端,分别为10V20V量程的输入端,信号的另一端接至AGND

DB11~DB012位数字量输出端,送单片机进行数据处理。

REF OUT 10V内部参考电压输出端。

REF IN  :内部解码网络所需参考电压输入端。

BIP OFF :补偿校正端,接至正负可调的分压网络,0输入时调整数字输出为0

AGND:接模拟地。

DGND:接数字地。

1.2.3.AD574A与单片机接口

由于对AD574A 81012引脚的外接电路有不同连接方式,所以AD574A与单片机的接口方案有两种,一种是单极性接法,可实现输入信号010V或者020V的转换;另一种为双极性接法,可实现输入信号-5+5V或者-10+10V之间转换。


我们采用单极性接法,电路图如下1.2_2

 

根据芯片管脚的原理,无论启动、转换还是结果输出,都要保证CE端为高电平,所以可以将单片机的/RD引脚和/WR端通过与非门与AD574ACE端连接起来。转换结果分高8位、低4位与P0口相连,分两次读入,所以12/-8端接地。同时,为了使CSA0R/-C在读取转换结果时保持相应的电平,可以将来自单片机的控制信号经74LS373锁存后再接入。CPU可采用中断、查询或者程序延时等方式读取AD574A的转换结果,本设计采用中断方式,则将转换结束状态STS端接到P3.2(外部中断/INT0)。其工作过程如下:

A.    当单片机执行对外部数据存储器的写指令,并使CE=1/CS=0R/-C=0A0=0时,

进行12A/D转换启动。                       

B. CPU等待STS状态信号送P3.2口,当STS由高电平变为低电平时,就表示转换结束。

C. 转换结束后,单片机通过分两次读外部数据存储器操作,读取12位的转换结果数据。当CE=1/CS=0R/-C=1A0=0时,读取高8位;当CE=1/CS=0R/-C=1A0=1时,读取低4位。


1.3量程划分电路

由于本设计要求测量的范围是0500V,而A/D转换器的最大输入电压为20V,所以要对输入的模拟电压进行分段和降压处理。根据AD574A与单片机的单极性接法,可以将量程分为以下三段,并作相应处理:

分段电压

降压

输入A/D转换器电压

020V

V/1

020V

20200V

V/10

220V

200500V

V/100

25V

降压处理有多种方法,本设计用固定电阻的分压电路进行降压,分压电阻分别为R1=90KR2=9KR3=1K,则R=R1+R2+R3=100K,继电器K1闭合之后选择了020V段电压;当继电器K2闭合之后选择了20200V段电压;选择了200500V段电压。电路如下图1.3_1                      

                                1.3_1

由图可见,使用了继电器控制量程的选择,所以为了控制继电器的闭合,又要由单片机的I/O口产生持续的高(低)电平。本设计使用P3口控制。当P3.0接的按键S0被按下时,单片机由P3.3口输出持续的高电平,接入到2003驱动芯片的输入口1,进而驱动继电器K1的闭合;当P3.1接的按键S1被按下时,单片机由P3.4输出持续的高电平,接到2003芯片的输入口2,进而驱动继电器K2的闭合;当P3.2接的按键S2被按下时,单片机由P3.5输出持续的高电平,接到2003芯片的输入口3,进而驱动继电器K3的闭合。

 

1.4 电压显示电路

设计中采用的是8LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由8个发光二极管组成,其中7个按‘8’字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把8个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阳极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。其8段分别命名为dp g f e d c b a。例如,要显示“0”,则dp g f e d c b a分别为:1100 0000B;要显示“A”,则dp g f e d c b a分别为:0001 0001B(共阳极)。若要显示多个数字,只要让若干个数码管的位码循环为低电平就可以了。


根据设计要求,显示电路需要至少4LED数码管来显示电压值,我们再多加一位用来显示电压单位“V”,则有7LED循环显示。利用单片机的I/O口驱动LED数码管的亮灭,设计中由P0口驱动LED的段码显示,即显示字符,由P2口选择LED位码,即选择点亮哪位LED来显示。电路如下:

                              1.4_1

另外,一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。驱动电路有多种,常用的是TTLMOS集成电路驱动器,在本设计中采用了74LS245芯片驱动电路,如上图所示。

1.5 语音报读电路

1.5.1.语音芯片选择

近年来,语音电路发展极为迅速,在单片机系统中的应用越来越广。设计中使用ISD1420作为语音芯片。美国信息存储器件的ISD1420语音芯片采用直接模拟存储技术,不需要专用开发工具和编程器,它由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成,先将语音经A/D转换后存入存储器中,放音时取出再经D/A转换输出。并且ISD1420具有以下特点:

1)外围电路简单,仅需少量阻容元件、麦克风即可组成一完整录放系统。

2)放音时间20S,可扩充级联。

3)可持续放音,也可分段放音,最小分段为20S/160段即0.125S/段,可分为160段。

4)录放次数达10万次。

5)断电信息存储,无需备用电池,信息可保存100年。

6)操作简单,无需专用编程器及语音开发器,典型+5V供电。

1.5.2.ISD1420管脚说明


ISD1420封装为28脚,引脚图如下图1.5_1             

其各引脚功能如下:

1)A0