ADC0832数字电压表

更新时间:2024-06-15 22:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文)

摘 要 单片计算机即单片微型计算机。(Single-Chip Microcomputer),是集CPU ,RAM ,ROM 定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

简易电压表是利用模拟量转换成数字量经单片机处理并反映在显示器上,它可以分析5V的电压,并能用该电压表可测出该电路的电流和电阻值。

本文介绍了电压表的使用和开发环境,仿真系统和开发使用的MCS-51系列的单片机芯片。在第二章论述了总体设计过程,确定了技术指标及器件的选择第四章着重描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性。 关键词:电压表、 单片机技术、A/D转换

- 1 -

Abstract

With the infiltration in the social field of the computer in recent years, the application of the one-chip computer is moving towards deepening constantly, drive tradition is it measure crescent benefit to upgrade day to control at the same time. In measuring in real time and automatically controlled one-chip computer application system, the one-chip computer often uses as a key part, only one-chip computer respect knowledge is not enough, should also follow the structure of the concrete hardware , and direct against and use the software of target's characteristic to combine concretly, in order to do perfectly. The pressure system of much passways of simulation utilizes the pressure sensor to gather the pressure at present and reflect by display, it can analyse excessive Cheng of the pressure , sends out and reports to the police. It can be according to inputting the amount of money of calculating out the object with accurate unit price to adopt the principle of the electronic scale. This text has introduced the research meaning of this system and development environment used in the introduction at first, artificial system of the big good fortune and developing the one-chip computer chip of MCS-51 series used. Have described the overall design process in chapter two, have confirmed chapter three of choice of technical indicator and device has described emphatically that designs the block diagram and various kinds of chip functions and characteristics used in circuit design of the systematic hardware , hardware, have analyzed the design course of the software especially in chapter four.

Keyword: Electric voltage form, technology of the one-chip computer , A/D change

- 2 -

目 录

引言 ???????????????????????????????? 4 1 核心芯片简介???????????????????????????? 5 2 AT89S51简介???????????????????????????? 8 2.1 AT89S52芯片的引脚及特点????????????????????? 8 2.2 AT89S52的主要性能参数?????????????????????? 11 2.3 AT89S52的新功能????????????????????????? 11 3 方案设计?????????????????????????????? 12 4 软硬件设计????????????????????????????? 13 4.1 硬件电路设????????????????????????????13 4.2 单片机AT89S52外围电路设计????????????????????13 4.3 ADC0832与单片机的接口设计?????????????????? 14 4.4 显示设计?????????????????????????????14 4.5 电源设计?????????????????????????????14 5 结论???????????????????????????????? 15 6 致 谢????????????????????????????????15 7 参考文献 ??????????????????????????????16 附录一 设计总电路图????????????????????????? 17 附录二 设计总PCB图????????????????????????? 18 附录三 电压表源程序????????????????????????? 19

引 言

电压、电流、功率是表征电信号能量大小的三个基本参量。在电子电路中,只- 3 -

要测量出其中一个参量就可以根据电路的阻抗求出其它二个参量。考虑到测量的方便性、安全性、准确性等因素,几乎都用测量电压的方法来测定表征电信号能量大小的三个基本参量。此外,许多参数,例如频率特性、谐波失真度、调制度等都可视为电压的派生量。所以电压的测量是其它许多电参量,也包括非电量测量的基础。 电压是基本的电参数,其它许多电参数可看作电压的派生量,由于电压测量方便,因此电压测量是电子测量中最基本的测量。按测量结果的显示方式可将电子电压表分为模拟式和数字式两大类。数字式电压表的核心是A/D转换器,A/D转换器最基本的两种类型是积分型和比较型。前者抗干扰能力强,测量精度高,但测量速率低;后者测量速度快,但抗干扰能力差。总的来说,积分型特别是双斜积分式DVM性能较优,应用较广泛。 数字电压表除具有一般的所具有的准确度高、数字显示、读数迅速准确、分辨力高、输入阻抗高、能自动调零、自动转换量程、自动转换及显示极性等优点,因而体积小,可靠性好,操作简便,由于数字电压表具有上述这些优点,使得它获得越来越广泛的应用。 使用数字万用表的注意事项: (1)要注意该电压表的量程,切误测量比额定值大。 (2)电压表使用或存放应避免高温、寒冷、阳光直射、高湿度及强烈振动环境。

1 核心芯片简介

1 ADC0832芯片

ADC0832具有以下特点:(1)8位分辨率;(2)双通道A/D转换;(3)输入输出电平与TTL/CMOS相兼容;(4)5V电源供电时输入电压在0~5V之间;(5)工作频率为250KHZ,转换时间为32μS;(6) 一般功耗仅为15mW;(7)8P、14P—DIP(双列直插)、PICC多种封装;(8)商用级芯片温宽为0°C to +70°C?,工业级芯片温宽为40℃- +85℃

引脚及功能:

图 6-1-1 DAC0832引脚图

CS:片选使能,低电平有效

CH0:模拟输入通道0,或作为IN+/-使用 CH1:模拟输入通道1,或作为IN+/-使用 GND:芯片参考0电位(地)

DI:数据信号输入,选择通道控制 DO:数据信号输出,转换数据输出

- 4 -

CLK:芯片时钟输入 VCC:电源输入

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。

时序图:

图6-1-2 ADC0832时序图

与DS1302非常相似,CS作为选通信号,在时序图中可以看到,从CS置为低电平开始,一直到置为高电平结束。CLK提供时钟信号。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据(SGL、Odd)用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。在完成输入启动位、通道选择之后,到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下

- 5 -

沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,此时就可以开始读出数据,转换得到的数据会被送出二次,一次高位在前传送,一次低位在前传送,连续送出。在程序读取二个数据后,我们可以加上检验来看看数据是否被正确读取。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压,则转换后的数据结果始终为0。

2 AT89S52简介

AT89S52美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含8K Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.1 AT89S52芯片的引脚及特点

- 6 -

AT89S52芯片的引脚结构如图2.2.1所示: (1)功能特性概括:

AT89S52提供以下标准功能:40个引脚、8K Bytes Flash片内程序存储器、256 Bytes的随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路。此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲模式下,CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作。掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 (2)管脚说明:

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。作为输出口用时,能驱动8个TTL逻辑门电路。对端口写“1”时,被定义为高阻输入。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在Flash编程和程序校验期间,P1接收低8位地址。部分端口还有第二功能,如表1所示:

端口引脚 P1.5 P1.6 P1.7 第二功能 MOSI(用于ISP编程) MISO(用于ISP编程) SCK (用于ISP编程) 表1 P1口部分引脚第二功能

P2口:P2口是一个带有内部上拉电阻的8位双向I/O口, P2口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

- 7 -

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据寄存器(例如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。

在Flash编程或校验时,P2亦接收高位地址和其它控制信号。

P3口: P3口是一个带有内部上拉电阻的双向8位I/O口, P3口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入口使用时,被外部信号拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2所示: P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD (串行输入口) TXD (串行输出口) INT0 (外中断0) INT1 (外中断1) T0 (定时/计数器0) T1 (定时/计数器1) WR (外部数据存储器写选通) RD (外部数据存储器读选通) 表2 P3口引脚第二功能

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。 DISRTO位缺省为RESET输出高电平打开状态。

ALE/PROG:当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部寄存器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。值得注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只要一条MOVX和MOVC指令才会激活ALE。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由

- 8 -

外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器时,没有两次有效的PSEN信号。

EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端保持高电平(接VCC端),CPU则执行内部程序存储器中的指令。 Flash存储器编程期间,该引脚用于施加+12V编程电压(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入端。 XTAL2:反向振荡放大器器的输出端。 (3)晶体振荡器特性:

AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。这个反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。

外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,电容应该使用30pF?10pF。

还可以使用外部时钟。这种情况下,外部时钟脉冲接XTAL1端,即内部时钟发生器的输入端, XTAL2应悬空。

由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大低电平持续时间应符合产品技术条件的要求。

2.2 AT89S52的主要性能参数:

(1)与MCS-51产品指令系统完全兼容。 (2)8K字节在系统可编程(ISP)Flash闪速存储器。 (3)1000次擦写周期。 (4)4.0—5.5V的工作电压范围。 (5)全静态工作模式:0Hz--33Hz。 (6)三级程序加密。 (7)128x8字节的内部RAM。 (8)32个双向可编程I/O口线。 (9)2个16位可编程定时/计数器。 (10)6个中断源。 (11)全双工UART串行通道。 (12)低功耗空闲和掉电模式。 - 9 -

(13)中断可从空闲模式唤醒系统。 (14)看门狗(WDT)及双数据指针。 (15)掉电标识和快速编程特性。 (16)灵活的在系统编程(ISP-字节或页写模式)。 2.3 AT89S52的新功能:

AT89S52兼容标准MCS-51指令系统及AT89C52引脚结构,它相对于AT89C52增加的新功能包括: (1)ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。 (2) 最高工作频率为33MHz,AT89C52的极限工作频率是24M,所以AT89S52具有更高工作频率,从而具有了更快的计算速度。 (3)具有双工UART串行通道。 (4)内部集成看门狗计时器,不再需要像AT89C52那样外接看门狗计时器单元电路。 (5)双数据指示器。 (6)电源关闭标识。 (7)全新的加密算法,这使得对于AT89S52的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。 (8) 兼容性方面:向下完全兼容51全部字系列产品。比如8051、AT89C51等早期MCS-51产品 3 方案设计

使用ADC0832模拟/数字转换器芯片设计数字电压表电路。该设计方案以单片机AT89S52为主控芯片,以ADC0832模拟/数字转换器芯片为核心转换模拟/数字量的芯片,组成数字电压表电路。该电路能准确地测出所被测有效电压值、附加四位显示功能,可精确到有效电压值为0.01V。

4 设计流程图 4.1总体设计流程图

- 10 -

附录四:电压表源程序: #include #include

#define uchar unsigned char #define uint unsigned int

#include%uchar code table[]= {

0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,

}; //共阳数码管段码表 没有小数点 0~9

- 21 -

uchar code table1[]= {0x40,0x79,0x24,0x30,0x19,

0x12,0x02,0x78,0x00,0x10};//带小数点的编码 0~9

uchar dat=0;//AD值 uint c,d;

uint DY_dat=0; //烟雾浓度数据 uchar ad_dat1=0; //读取滤波后的AD值 uchar count=0;//定时器计数 uchar CH=0;//通道变量

uint num,ge,xiao1,xiao2,shi,shi1,ge1,xiao3,xiao4,dy;

/**********************************************************/

/********************************************************* 延时函数

**********************************************************/ void delay(uint x) { uint a,b;

- 22 -

for(a=x;a>0;a--) for(b=110;b>0;b--); }

void Read_ad() {

static uint AD_DAT=0; float ad_buf=0; static uchar i=0; if(i<5) // 滤 { i++;

AD_DAT+=A_D(); // 波 }

else // 算 {

i=0; // 法 ad_dat1=(uchar)(AD_DAT/5);

- 23 -

ad_buf=(float)(ad_dat1/0.51); DY_dat=(uint)(ad_buf); AD_DAT=0; } }

/******************************************************** 显示函数

********************************************************/

void display() {

shi1=DY_dat/1000; ge1=DY_dat00/100; xiao2=DY_dat0/10; xiao3=DY_dat;

- 24 -

P2=0xfd; P0=table1[ge1]; delay(3);

P2=0xfb;

P0=table[xiao2]; delay(3);

P2=0xf7;

P0=table[xiao3]; delay(3);

P2=0xff; }

/********************************************************* 主函数

**********************************************************/

- 25 -

void main() { d=A_D(); c=d; while(1) {

/* d=A_D();

c=c*4+d; c/=5; */

// ad_buf=(float)(c*7.84313); // dy=(uint)(ad_buf); Read_ad();

// convdata(dat); display(); } }

- 26 -

- 27 -

本文来源:https://www.bwwdw.com/article/n693.html

Top