数据采集电路设计Word文档格式.docx
《数据采集电路设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据采集电路设计Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
四、所需调试工具
Keil和Multisim软件。
摘要:
数据采集与显示系统是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。
然后利用处理器处理,最后在显示出来。
数据采集与显示技术广泛应用在各个领域。
被采集数据是已被转换为电讯号的各种物理量,如电压、温度、水位、风速、压力等,可以是模拟量,也可以是数字量。
采集的数据大多是瞬时值,也可是某段时间内的一个特征值。
准确的数据测量是数据采集的基础。
不论哪种方法和元件,均以不影响被测对象状态和测量环境为前提,以保证数据的正确性。
数据采集含义很广,包括对面状连续物理量的采集。
在计算机辅助制图、测图、设计中,对图形或图像数字化过程也可称为数据采集,此时被采集的是几何量(或包括物理量,如灰度)数据。
关键词;
数据采集;
电路;
信号;
AbstractDataacquisitionanddisplaysystemistheuseofadevice,collectdatafromoutsidethesystemandinputtotheinternalsystemofaninterface.Thentheprocessor,finallycameuponthescreen.Dataacquisitionanddisplaytechnologyiswidelyusedinvariousfields.
Dataisbeingcollectedhasvariousphysicalquantities,areconvertedtoelectricalsignalssuchasvoltage,temperature,waterlevel,windpressure,etc.,canbeanalog,alsocanbethedigitalquantity.Mostofthedatacollectedisinstantaneous,butalsoafeaturewithinacertainperiodoftimevalueofaccuratedatameasurementis.Thebasisfordatacollection.Nomatterwhatkindofmethodsandcomponentsarenotaffectedthemeasuredobjectandmeasuringenvironmentisthepremisetoensuretheaccuracyofthedata.Dataacquisitionisaverybroadmeaning,includingplanarcontinuousphysicalcollection.Incomputeraideddrawing,mapping,design,digitalgraphicsorimagetheprocessiscalleddataacquisition,theacquisitionisthegeometricvolume(includingthephysicalquantities,suchasthegraydata).
Keywords:
Dataacquisition;
Circuit;
Signal;
1课程设计要求
结合单片机的课程,选择一款A/D转换器,采集输入实时电压并显示,并设计完整电路以及程序,仿真调试。
289C51单片机简介
AT89C51是一个低功耗,高性能CMOS
8位单片机,片内含4kBytes
ISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。
51单片机内包含以下几个部件:
1)8位微处理器(CPU)。
2)数据存储器(128BRAM)。
3)程序存储器(ROM/EPROM)。
4)4个8位可编程并行I/O口(P0口,P1口,P2口,P3口)。
5)1个全双工的异步串行口。
6)2个16定时器/计数器。
7)中断系统。
8)特殊功能寄存器(SFR)。
2.1ADC0808转换器简介
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
图2-1ADC0808引脚图
2.2引脚功能
ADC0808芯片有28条引脚,采用双列直插式封装。
各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路
2.3 A/D转换原理
基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。
逐次逼近法转换过程是:
初始化时将逐次逼近寄存器各位清零;
转换开始时,先将逐次逼近寄存器最高,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为Vo,与送入比较器的待转换的模拟量Vi进行比较,若Vo<
Vi,该位1被保留,否则被清除。
然后再置逐次逼近寄存器次高位为1,将寄存器中新的数字量送D/A转换器,输出的Vo再与Vi比较,若Vo<
重复此过程,直至逼近寄存器最低位。
转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,得到数字量的输出。
逐次逼近的操作过程是在一个控制电路的控制下进行的。
3时钟电路
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路如下图3-1所示:
图3-1时钟电路
3.1复位电路
由电容串联电阻构成,由图并结合"
电容电压不能突变"
的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍.复位电路如下所示。
图3-2复位电路
3.2LED显示电路
本项目所用显示屏为4位LED显示屏。
本LED显示器为8段(DP为小数点段),每一段为一个发光二极管。
发光二极管有共阳极和共阴极两种。
本显示器的发光二极管为共阴极数码管。
发光二极管的阳极连接在一起,通常在此共阴极接地,当某个发光二极管的阳极接低高平时,发光二极管被点亮,相应的段被显示。
通过给LED显示器提供不同的代码,是这些不同的LED显示器相应的段发光显示不同的字型,这些代码称为段码。
本项目所用段码值如下(表1)所示:
表1LED共阴数码管段码
数字
1
2
3
4
5
6
7
8
9
段码
0x03
0x9f
0x25
0x0d
0x99
0x49
0x41
0x1f
0x01
0x09
4仿真设计图
如下4-1图所示
图4-1数据采集系统仿真图
5仿真心得
这次通过自己再一次熟悉仿真软件,学到了在连线过程使用总线和网络标号,使得整体布局显得非常的美观,比以前密密麻麻的连线效果好多了。
从效率上来说也节省了时间。
对于别人来看,也方便多了,很容易看懂。
加深了对仿真软件的认识。
6程序
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
#defineData_ADC0809P1
sbitST=P3^2;
sbitEOC=P3^3;
sbitOE=P3^1;
sbitDIAN=P0^5;
//小数点
unsignedchardis[3];
//显示数值
unsignedintsum=0;
unsignedinttemp=0;
unsignedintdat=0;
/*******************************共阴LED段码表*******************************/
Unsignedcharcodetab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x5e/*字母U*/};
//gc.debfa
/****************************************************************************
ucharADC0809()
{
uchartemp_=0x00;
OE=0;
ST=0;
ST=1;
while(EOC==0)
OE=1;
temp_=Data_ADC0809;
returntemp_;
}
voiddelay(unsignedintx)//延时函数
unsignedinti,j;
for(i=0;
i<
x;
i++)
for(j=0;
j<
121;
j++);
函数功能:
将0-255级换算成0.00-5.00的电压数值
入口参数:
i
出口参数:
****************************************************************************/
voidconvdata(unsignedchardat1)
unsignedintVo;
Vo=dat1*1.96;
dis[0]=Vo/100;
//十位
dis[1]=Vo%100/10;
//个位
dis[2]=Vo%100%10;
//小数点后第1位
数码管显示子程序
voiddisplay(void)
{
P0=~tab[dis[0]];
P2=0xfe;
//11011111
delay
(1);
P2=0xff;
DIAN=0;
P0=~tab[dis[1]];
P2=0xfb;
//10111111
P0=~tab[dis[2]];
P2=0xef;
//01111111
P0=~tab[0];
P2=0xbf;
主程序
voidmain(void)
unsignedcharp=0;
while
(1)//主循环
{
for(p=0;
p<
20;
p++)
{
sum=sum+ADC0809();
display();
}
//dat=((sum/20)+dat)/2;
dat=sum/20;
convdata(dat);
//数据转换
sum=0;
display();
6.1程序调试
在程序调试过程中也收获不少,在编译完程序,连接好线路,把程序加进去,开始运行。
但始终数码管不亮,通过虚拟示波器对线路的测试,波形是合适的。
最终想到问题出在数码管的段码上,井进行了仔细的查看,发现在单片机的输出口与数码管直接的连线没有按照字母顺序链接,修改之后,数码管正常显示了。
然后并没有就此罢休,又思考能不能只改段马码不改连线呢?
最后在进一步研究之后,成功的改写了断码。
此设计就是自己任意连线,然后自己推到出来的代码。
通过一个这样小小的问题,进一步熟悉了数码管驱动显示原理,做事不能照步就搬,要深刻理解它的原理,才能更加灵活的运用。
参考文献
[1]魏立峰.单片机原理及应用技术[M].北京:
北京大学出版社,2006.
[2]陈光绒.单片机技术应用教程[M].北京:
:
北京大学出版社,2005.
[3]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,2007.
致谢
在本次的课程设计中,我得到了雷老师的精心指导,不管是从开始定方向还是在查资料准备的过程中,一直都耐心地给予我指导和意见,使我在总结学业及撰写论文方面都有了较大提高;
同时也显示了老师高度的敬业精神和责任感。
在此,表示诚挚的感谢以及真心的祝福。
四年大学生活即将结束,回顾几年的历程,老师们给了我们很多指导和帮助。
他们严谨的治学,优良的作风和敬业的态度,为我们树立了为人师表的典范。
在此,我对所有的学院的老师表示感谢,祝你们身体健康,工作顺利!