Ⅰ 求一简易数字电压表的电路原理图
28.数字电压表
1.实验任务
利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
2.电路原理图
图1.28.1
3.系统板上硬件连线
a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。
d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
g)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
h)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。
i)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
4.程序设计内容
i.由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了。
ii.由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值(D/256*VREF)
5.汇编源程序
ADC0809中文资料
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1)ADC0809的内部逻辑结构
由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
(2).ADC0809引脚结构
ADC0809各脚功能如下:
D7-D0:8位数字量输出引脚。
IN0-IN7:8位模拟量输入引脚。
VCC:+5V工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).
EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为500KHz)。
A、B、C:地址输入线。
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。
CBA选择的通道
000IN0
001IN1
010IN2
011IN3
100IN4
101IN5
110IN6
111IN7
数字量输出及控制线:11条
ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。
2.ADC0809应用说明
(1).ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
(2).初始化时,使ST和OE信号全为低电平。
(3).送要转换的哪一通道的地址到A,B,C端口上。
(4).在ST端给出一个至少有100ns宽的正脉冲信号。
(5).是否转换完毕,我们根据EOC信号来判断。
(6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
3.实验任务
如下图所示,从ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接+5V电压。
4.ADC0809应用电路原理图
6.程序设计内容
(1).进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。
(2).进行A/D转换之前,要启动转换的方法:
ABC=110选择第三通道
ST=0,ST=1,ST=0产生启动转换的正脉冲信号.
C语言源程序
#include
unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsignedchardispbuf[8]={10,10,10,10,10,0,0,0};
unsignedchardispcount;
sbitST="P3"^0;
sbitOE="P3"^1;
sbitEOC="P3"^2;
unsignedcharchannel="0xbc";//IN3
unsignedchargetdata;
voidmain(void)
{
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TR0=1;
ET0=1;
EA=1;
P3=channel;
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
getdata=P0;
OE=0;
dispbuf[2]=getdata/100;
getdata=getdata%100;
dispbuf[1]=getdata/10;
dispbuf[0]=getdata%10;
}
}
voidt0(void)interrupt1using0
{
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
dispbuf[i]=temp;
ST=1;
ST=0;
}
}
}
voidt0(void)interrupt1using0
{
CLK=~CLK;
}
voidt1(void)interrupt3using0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==7)
{
P1=P1|0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
Ⅱ 求一个数字电压表的原理图
基于PC的数字电压表设计
本文运用AT89S51和AD678进行A/D转换,根据数据采集的工作原理,设计实现数字电压表,最后完成单片机与PC的数据通信,传送所测量的电压值
数字电压表的设计和开发,已经有多种类型和款式。传统的数字电压表各有特点,它们适合在现场做手工测量,要完成远程测量并要对测量数据做进一步分析处理,传统数字电压表是无法完成的。然而基于PC通信的数字电压表,既可以完成测量数据的传递,又可借助PC,做测量数据的处理。所以这种类型的数字电压表无论在功能和实际应用上,都具有传统数字电压表无法比拟的特点,这使得它的开发和应用具有良好的前景。
新型数字电压表的整机设计
该新型数字电压表测量电压类型是直流,测量范围是-5~+5V。整机电路包括:数据采集电路的单片机最小化设计、单片机与PC接口电路、单片机时钟电路、复位电路等。下位机采用AT89S51芯片,A/D转换采用AD678芯片。通过RS232串行口与PC进行通信,传送所测量的直流电压数据。整机系统电路如图1所示。
数据采集电路的原理
在单片机数据采集电路的设计中,做到了电路设计的最小化,即没用任何附加逻辑器件做接口电路,实现了单片机对AD678转换芯片的操作。
AD678是一种高档的、多功能的12位ADC,由于其内部自带有采样保持器、高精度参考电源、内部时钟和三态缓冲数据输出等部件,所以只需要很少的外部元件就可以构成完整的数据采集系统,而且一次A/D转换仅需要5ms。
在电路应用中,AD678采用同步工作方式,12位数字量输出采用8位操作模式,即12位转换数字量采用两次读取的方式,先读取其高8位,再读取其低4位。根据时序关系,在芯片选择/CS=0时,转换端/SC由高到低变化一次,即可启动A/D转换一次。再查询转换结束端/EOC,看转换是否已经结束,若结束则使输出使能/OE变低,输出有效。12位数字量的读取则要控制高字节有效端/HBE,先读取高字节,再读取低字节。整个A/D操作大致如此,在实际开发应用中调整。
由于电路中采用AD678的双极性输入方式,输入电压范围是-5~+5V,根据公式Vx10(V)/4096*Dx,即可计算出所测电压Vx值的大小。式中Dx为被测直流电压转换后的12位数字量值。
RS232接口电路的设计
AT89S51与PC的接口电路采用芯片Max232。Max232是德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2个驱动器、2个接收器和1个电压发生器电路提供TIA/EIA-232-F电平。Max232芯片起电平转换的功能,使单片机的TTL电平与PC的RS232电平达到匹配。
串口通信的RS232接口采用9针串口DB9,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连。在实验中,用定时器T1作波特率发生器,其计数初值X按以下公式计算:
串行通信波特率设置为1200b/s,而SMOD=1,fosc=6MHz,计算得到计数初值X=0f3H。在编程中将其装入TL1和THl中即可。
为了便于观察,当每次测量电压采集数据时,单片机有端口输出时,用发光二极管LED指示。
软件编程
软件程序主要包括:下位机数据采集程序、上位机可视化界面程序、单片机与PC串口通信程序。单片机采用C51语言编程,上位机的操作显示界面采用VC++6.0进行可视化编程。在串口通信调试过程中,借助“串口调试助手”工具,有效利用这个工具为整个系统提高效率。
单片机编程
下位机单片机的数据采集通信主程序流程如图2所示、中断子程序如图3所示、采集子程序如图4所示。单片机的编程仿真调试借助WAVE2000仿真器,本系统有集成的ISP仿真调试环境。
在采集程序中,单片机的编程操作要完全符合AD678的时序规范要求,在实际开发中,要不断加以调试。最后将下位机调试成功而生成的.bin文件固化到AT89S51的Flash单元中。
人机界面编程
打开VC++6.0,建立一个基于对话框的MFC应用程序,串口通信采用MSComm控件来实现。其他操作此处不赘述,编程实现一个良好的人机界面。数字直流电压表的操作界面如图5所示。运行VC++6.0编程实现的Windows程序,整个样机功能得以实现。
功能结果
根据上面所述工作原理及实施方案,在实践中很好地实现了整个样机的功能,各项指标达到了预先的设计要求。电路工作稳定,每次测量均伴有LED发光指示,可视化界面显示也正常。
AD678转换精度是12位,它的分辨率为1/4096。这为整机系统的高精度提供了保障。为了提高测量精度,运用了AD678自带的校准电路,这样使其A/D转换精度更高。在实际测量中,整机测量精度达到了0.8%。
Ⅲ 数字直流电压表电路分哪几块
本文介绍了用ADC0808集成电压转换芯片和AT89C51单片机设计制作的数字直流电压表。在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。为此,我们设计了数字电压表,此作品主要由A/D0808转换器和单片机AT89C51构成,A/D转换器在单片机的控制下完成对模拟信号的采集和转换功能,最后由数码管显示采集的电压值。此设计通过调试完全满足设计的指标要求。电路设计简单,设计制作方便有较强的实用性。
关键词:
ADC0808;单片机AT89C51;数字电压表
Abstract:
In this paper, with ADC0808 voltage converter integrated chips and microcontroller designed AT89C51 the number of DC voltage table. In measuring instruments, voltage meter is necessary, and voltage meter will have a direct impact on measurement accuracy. With a high precision, the conversion speed and stable performance of the voltage meter to conform to the requirements of measurement. To this end, we design a digital voltage meter, this works mainly by A/D0808 converter and a microcontroller AT89C51, A / D converter under the control of the MCU to complete the acquisition and analog signal conversion functions, from the final Acquisition of the digital display voltage value. This design through debugging to fully meet the design requirements of the target. Circuit design simple, designed to facilitate a more practical.
Key words:
ADC0808; SCM AT89C51; Digital Voltmeter
目 录
1.设计方案……………………………………………………………………………………1
2. 系统硬件设计……………………………………………………………………………2
2.1单片机芯片……………………………………………………………………………2
2.1.1.单片机芯片选择……………………………………………………………2
2.1.2.单片机管脚说明……………………………………………………………3
2.2.A/D转换器……………………………………………………………………………5
2.2.1.A/D转换器芯片选择………………………………………………………5
2.2.2.A/D转换器管脚说明………………………………………………………6
2.3.电压显示电路…………………………………………………………………………7
3.系统程序设计……………………………………………………………………………………8
3.1.软件总体框架设计……………………………………………………………………8
4.系统总图及程序…………………………………………………………………………………9
5.参考文献………………………………………………………………………………………………12
6.结束语……………………………………………………………………………………………………13
1.设计方案
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。框图如下:
本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用WAVE和PROTEUS 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。
2.系统硬件电路设计
2.1 单片机芯片
2.1.1.单片机芯片选择
AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示
图2.1_1 AT89C51引脚图
2.1.2.单片机管脚说明
主要特性:
Ⅳ 设计一个数字电压表,用仿真软件画电路图,求解
ICL7107的确在万用表上用得很广泛,这没错,但用它做出来的表,是三位半ICL7135干不了的活,你一个破7107就更别想了,这个你心里也清楚。再纠正
Ⅳ 急!!!怎样设计一个直流数字电压表
ICL7107不可以的,它是10位的ADC,2V的电压勉强能精确到2mV,计算公式:2/2的十次方
看你的这个需要用ICL7135做,它是14位ADC,做这个足够了。
你这是电子设计大赛吧?我以前参加过三次,老师告诉我,遇到电压测量的地方,就用ICL7135!14位的精度,一条线就可以通讯,而且电路容易调,程序简单。
具体的电路你可以找一下ICL7135的芯片手册,上面画的很清楚,照做就是了。至于程序,20行之内就可以搞定的,我以前做过这个,毕业好久了,早就不知道弄哪去了啊。
对了,ICL7135的转换速度是每秒三次,属于双积分型ADC,可以自动调零的,你就用这个吧,肯定合适。
您说的是凌阳的SPC061A吗?这款单片机是凌阳专门为教学设计的,我学的第一款单片机就是凌阳哈~
用哪款单片机不重要,你这个要求的数据处理能力不高,速度也用不着太高,51就足以胜任了,图纸你可以去看ICL7135的资料,上面画的很清楚,程序按照上面的通信时序写,不难。
补充:德运 - 探花 十一级
呵呵,我告诉您一点事情:
10位ADC做的万用表,那是三位半的
12位ADC做的万用表,那是三又四分之三位的
14位ADC做的万用表,那是四位半的
ICL7107的确在万用表上用得很广泛,这没错,但用它做出来的表,是三位半的,明白了吗?也就是说,它是最烂的AD,很多单片机上集成这样精度的AD,按你说的,我用个PIC或者AVR的单片机,凌阳的当然也可以,做这个题目根本用不着再去买ADC,比赛的题目不可能这么简单!
ICL7135干不了的活,你一个破7107就更别想了,这个你心里也清楚。
再纠正一点:我老师就是这么说的,前提:比赛的时候,这不是不负责任,这是经验,真正参加过比赛的人心里才有体会,评委们就认这个,别的都不认,它是最廉价的14位ADC,双积分型,在低速电压精确测量的场合中,是毋庸置疑的首选!
Ⅵ 数字电压表原理图中的放大电路
OP07的精度略低,建议用OP37。实用电路图如下(放大电路的电压增益为1+R2/R1)——
Ⅶ 简易数字直流电压表的设计
1.转换方式
V-T型间接转换ADC。
2. 电路结构
图11.11.1是这种转换器的原理电路,它由积分器(由集成运放A组成)、过零比较器(C)、时钟脉冲控制门(G)和计数器(FF0~FFn)等几部分组成。
图11.11.1 双积分A/D转换器
(1)积分器
积分器是转换器的核心部分,它的输入端所接开关S1由定时信号Qn控制。当Qn为不同电平时,极性相反的输入电压vI和参考电压 VREF将分别加到积分器的输入端,进行两次方向相反的积分,积分时间常数τ=RC。
(2)过零比较器
过零比较器用来确定积分器的输出电压v0过零的时刻。当v0≥0时,比较器输出vC为低电平;当v0<0时,vC为高电平。比较器的输出信号接至时钟控制门(G)作为关门和开门信号。
(3)计数器和定时器
它由n+1个接成计数器的触发器FF0~FFn-1串联组成。触发器FF0~FFn-1组成n级计数器,对输入时钟脉冲CP计数,以便把与输入电压平均值成正比的时间间隔转变成数字信号输出。当计数到2n个时钟脉冲时,FF0~FFn-1均回到0态,而FFn翻转到1态,Qn=1后开关 S1从位置A转接到B。
(4)时钟脉冲控制门
时钟脉冲源标准周期Tc,作为测量时间间隔的标准时间。当vC=1时,门打开,时钟脉冲通过门加到触发器FF0的输入端。
3.工作原理
双积分ADC的基本原理是对输入模拟电压和参考电压分别进行两次积分,将输入电压平均值变成与之成正比的时间间隔,然后利用时钟脉冲和计数器测出此时间间隔,进而得到相应的数字量输出。由于该转换电路是对输入电压的平均值进行变换,所以它具有很强的抗工频干扰能力,在数字测量中得到广泛应用。
下面以输入正极性的直流电压vI为例,说明电路将模拟电压转换为数字量的基本原理。电路工作过程分为以下几个阶段进行,图中 各处的工作波形如图11.11.2所示。 (1) 准备阶段
首先控制电路提供CR信号使计数器清零,同时使开关S2闭合,待积分电容放电完毕后,再使S2断开。
(2) 第一次积分阶段
在转换过程开始时(t=0),开关S1与A端接通,正的输入电压vI加到积分器的输入端。积分器从0V开始对vI积分,其波形如图11.11.2斜线O-VP段所示。 根据积分器的原理可得
(其中τ=RC)
由于vO<0,过零比较器输出为高电平,时钟控制门G被打开。于是,计数器在CP作用下从0开始计数。经2n个时钟脉冲后,触发器FF0~FFn-1 都翻转到0态,而Qn=1,开关S1由A点转接到B点,第一次积分结束,第一次积分时间为t=T1=2nTc 令VI为输入电压在T1时间间隔内的平均值, 则由式 可得第一次积分结束时积分器的输出电压为Vp
图11.11.2双积分A/D转换器各处工作波形
(3) 第二积分阶段
当t=t1时,S1转接到B点,具有与vI相反极性的基准电压-VREF加到积分器的输入端;积分器开始向相反方向进行第二次积分;当t=t2时,积分器输出电压v0≥0,比较器输出vC=0,时钟脉冲控制门G被关闭,计数停止。在此阶段结束时v0的表达式可写为
设T2=t2-t1,于是有 设在此期间计数器所累计的时钟脉冲个数为λ,则 T2=λTc
可见,T2与V1成正比,T2就是双计分A/D转换过程中的中间变量。
上式表明,在计数器中所得的数λ(λ=Qn-1···Q1Q0),与在取样时间T1内输入电压的平均值VI成正比的。只要VI<VREF,转换器就能正常地将输入模拟电压转换为数字量,并能从计数器读取转换的结果。如果取VREF=2nV,则λ=VI,计数器所计的数在数值上就等于被测电压。
由于双积分A/D转换器在时间内采的是输入电压的平均值,因此具有很强的抗工频干扰的能力。尤其对周期等于T1或几分之一的对称干扰(所谓对称干扰是指整个周期内平均值为零的干扰),从理论上来说,有无穷大的抑制能力。即使当工频干扰幅度大于被测直流信号,使得输入信号正负变化时,仍有良好的抑制能力。由于在工业系统中经常碰到的是工频(50Hz)或工频的倍频干扰,故通常选定采样时间T1总是等于工频电源周期的倍数,如20ms或40ms等。另一方面,由于在转换过程中,前后两次积分所采用的同一积分器。因此,在两次积分期间(一般在几十到数百毫秒之间),R、C和脉冲源等元器件参数的变化对转换精度的影响均可忽略。
最后必须指出,在第二积分阶段结束后,控制电路又使开关S2闭合,电容C放电,积分器回零。电路再次进入准备阶段,等待下一次转换开始。
4.特点
(1)计数脉冲个数λ与RC无关,可以减小由RC积分非线性带来的误差。
(2)对脉冲源CP要求不变,只要在T1+T2时间内稳定即可。
(3)转换精度高。
(4)转换速度慢,不适于高速应用场合。
单片集成双积分式A/D转换器有ADC-EK8B(8位,二进制码)、ADC-EK10B(10位,二进制码)、MC14433(7/2位,BCD码)等。
Ⅷ 单片机设计制作数字电压表
3.系统板上硬件连线
a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。
d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
g)把“模数转换模块”区域中的A2A1A0端子用导线连接到“把其他形式的能转换成电能的装置叫做电源">电源模块”区域中的GND端子上。
h)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压">电压模块”区域中的VR1端子上。
i)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
4.程序设计内容
i.由于ADC0809在进行转换为相应的数宇量的电路">A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了。
ii.由于ADC0809的参考电压VREF=VCC">CC,所以转换之后的数据要经过数据处理,在数码管">数码管上显示出电压值。实际显示的电压值(D/256*VREF)
5.汇编源程序
(略)
6.C语言源程序
#include<AT89X52.H>
unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsignedchardispbuf[8]={10,10,10,10,0,0,0,0};
unsignedchardispcount;
unsignedchargetdata;
unsignedinttemp;
unsignedchari;
sbitST=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitCLK=P3^3;
voidmain(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
ST=1;
ST=0;
while(1)
{
if(EOC==1)
{
OE=1;
getdata=P0;
OE=0;
temp=getdata*235;
temp=temp/128;
i=5;
dispbuf[0]=10;
dispbuf=10;
dispbuf=10;
dispbuf=10;
dispbuf[4]=10;
dispbuf[5]=0;
dispbuf[6]=0;
dispbuf[7]=0;
while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp;
ST=1;
ST=0;
}
}
}
voidt0(void)interrupt1using0
{
CLK=~CLK;
}
voidt1(void)interrupt3using0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==7)
{
P1=P1|0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
Ⅸ 简易数字电压表的设计(电路图和C程序)
先不说具体的图和程序。
你的器件就达不到你要的计数指标啊。
TLC549是8位的内AD。你要求的精度和分辨率起容码要13~14位的AD才能实现。
再换个AD吧。
兄弟,学习期间有机会做这种小项目,机会啊。
正要是费点力气,自己做出来了。
将来找工作,值啊。
Ⅹ 跪求高人“简易数字电压表”电路图~~~~
可用L7107制作三位半数字电压表.
L7107-7.00元1只.
参考电子报93下181页.