当前位置:文档之家› 单片机课程设计数据采集系统

单片机课程设计数据采集系统

一、摘要
此系统主要以ADC0808和80C51为核心,进行实时数据采集,数据处理和显示,终端接收及存储。

具体包括控制、显示、A/D转化器等。

设计中用AD0808进行8路数据的采样,利用51单片机的串行口进行发送和接收数据。

利用8个LCD 数码管进行显示数据处理。

采用PROTEUS和Keil uvision3为开发工具,软件设计采用模块化编程
关键字:数据采集、ADC0808、双机通讯、IIC
二、前言
随着计算机技术的飞速发展,数据采集系统应用在多个领域中。

数据采集时供、农业控制系统中十分重要的环节,在医药、化工、食品等领域中,往往需要随时检测各生产环节的温度、流量、压力等参数。

同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一段时间内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,以提高产品的合格率,产生良好的经济效益。

不仅如此,数据采集系统在我国高科技领域中也扮演着十分重要的地位。

雷达的实时数据采集,航天飞机成功升空,通讯卫星的实时通报数据,这些高科技给国家人民的生活带来了便利。

因此数据采集是一项十分重要的技术。

从严格意义上来讲,数据采集系统是用计算机控制的多路自动检测或巡回检测,并且能够对采集到的数据进行存储、计算、分析,以及从数据中提取可用的信息,供显示,记录、打印或描绘的系统。

数据采集系统通常由数据输入通道、数据处理、数据存储、数据显示、数据输出五个部分组成。

输入通道实现对数据的检测并读取;数据转化是将采集到的数据进行适当的转化;以便输出人们易懂的数据;数据存储是对采集过来的数据进行存储;以防下次用到可以方便提取;数据显示便是将处理后的数据进行显示,让操作者可以方便读取采集到的信息,以便进行控制;数据输出就是将数据输送到打印机打印。

由于RS-485在微机远程通信接口中广泛采用,技术已经相当成熟,故采用标准RS-485标准,实现PC与单片机之间的数据传送(由于本次设计在PROTEUS系统中仿真,因此,略去接口RS-485)。

本设计中对多路采集系统做了基本的研究。

此次试验主要解决的是怎样进行多路数据采集并如何通过串行口发送数据实现双机通讯的。

三、正文
3.1、设计要求
3.11.使用PROTEUS作为开发工具,利用ADC0808八路数据采集,信号源为5V直流电压用电阻网络分压。

采样间隔在(1-255秒)之间有外部拨码开关可调,分析数据采集精度。

3.12.将采集到的数据,使用串口传输传到远程单片机,设计传输距离为5KM。

3.13.远程单片机接收数据,按通道和输注(十进制)显示,并将信息存入24C01。

掌握
I2C存储器的程序设计方法,动态显示的设计方法。

3.2、系统的组成及工作原理
此系统主要以ADC0808与80C51为中心,通过ADC对电阻网络采集数据,并将采集到的数据通过单片机串口传到另外一篇单片机中,在24C01芯片中存储,同时读取24C01里的数据,并将其显示在数码管中。

由于电阻网络是由滑动变阻器构成,因此,当改变滑动变阻器阻值后,ADC采集到的数据也会变化。

而采集速度也是由人通过拨码开关来控制的。

在采集速度方面,由于采集速度是可控的,因此,需要利用定时器来控制数据的发送。

3.3、方案比较
3.31.采样器方案比较:
由于采样的最重要指标是:转化时间、转换精度。

已知ADC转换芯片有8位,10位,12位,14位,最高的达到16位。

位数不一样,导致处理速度,精度都不一样。

通常,8位逐次逼近ADC的转换时间为100US左右,为本系统的控制时间允许。

ADC的转换精度为1/28=0.39%,输入0~5V时分辨率为5/(28-1)=0.0196V。

因此选择ADC0808芯片是最佳的选择方案。

用此芯片可以直接将8个单端模拟信号输入,分时进行数据采集,转换。

3.32.单片机控制ADC方案比较:
用单片机控制ADC通常有两种方式。

一种是查询法,另外一种是中断控制法。

查询法是单片机不断地对EOC状态进行读取。

当发现EOC变化时,则单片机便对转化好的数据进行读取。

中断控制法则是当ADC变换结束后向单片机发送中断请求,然后进入中断服务进行想干操作。

查询法是用在对转换时间不高的工程中,而中断方法则应用在转换时间高的工程当中,在此次设计中,选择中断方式控制ADC。

3.33.显示方案比较:
(1)端口接线及数码管数选择:
由于本次实验显示的数据是从24C01中读取的,因此是在另外一片单片机上进行显示的。

由于该单片机的闲置端口足够提供控制显示器端口,因此不需要外加其它高级芯片。

如果端口数量不够,可以采样扩展端口,此类芯片有比较熟悉的8155芯片或者8255等等。

由于精度要求达到0.1%,因此,这里用8只数码管,3只用来显示通道数,4只用来显示数值。

(2)显示方法:
显示方法有动态显示与静态显示两种方法。

动态显示需要对CPU时刻对显示器进行数据刷新,显示数据会有闪烁感,占用的CPU时间多。

静态显示数据稳定,但是接线复杂。

这两种方法各有利弊,故当显示装置中有多个多段LED式,通常采用动态扫描驱动电路在该单片机系统中,使用7段LED显示器构成8位显示器,段选线控制显示的字符,位选线控制显示位的亮或暗。

3.3
4.双机通信接口方案比较:
由于此次设计是在PROTEUS上仿真的,因此不需要外加双机端口之间的诸如电平转换器、串行通信RS-232、RS-485.直接利用单片机串行接口相互连接发送便可。

3.35.外部拨码开关的方案比较:
由于通常都用switch开关来控制单片机,以便达到我们人所需要的条件。

但在此次设计中,由于在PROTEUS软件中8个switch不仅占用空间,而且还不好控制,故选择dipsw拨
号开关,这个开关switch功能一样,但体积小,而且可以同时全部开,全部关,故选择dipsw 开关。

3.4、电路设计(图示)
3.5、模块分析
此系统中共用到的模块如下:ADC数据采集模块、发送机发送模块、接收机接收模块、24C01存储模块、LED数码管显示模块、采集速率处理模块。

(1)ADC数据采集模块:在此模块中,主要是ADC采集数据是的时序处理,主要处理的拐角为0E(输出允许),START(开始转换),而EOC拐角则用来充当中断信号源
(2)发送机发送模块:在此模块中,主要是一个中断控制处理,即当ADC转换完后,产生了一个下降沿触发信号时,发送模块进入中断,对数据进行发送,否则不发送数据,在此模块中当TI=1,进入中断以后,要用软件清零。

(3)接收机接收模块:与发射机对应,波特率要设置成与发射机波特率相同,而且也是在收到信号后进入中断处理。

将收到的数据存到24C01芯片中。

否则,一直调用显示功能。

在此模块中,当RI=1,进入中断以后,要用软件清零
(4)24C01模块:在此模块中,主要是处理SCK与SDA的时序问题,由于它是串行读取数据的,因此,时序出错,便不能得出数据来。

在24C01的读写过程中,地址很重要,在写过程中,要先写地址,再写数据。

在读过程也是先写入地址,在读数据。

(5)LED数码管显示模块:在此模块中,主要是考虑将采集到的数据正确地显示处理,给操作者一个非常直观的界面。

在这个模块中要处理的一个难题是:如何不让数码管跳动显示。

软件实现过程主要控制好段选与位选,以及延时时间上的处理。

(6)采集速率处理模块:在此模块中,主要处理时间问题,即如何通过定时器到达用户的要求,实现人机信息交换。

在软件实现过程中,需要注意定时寄存器的重新赋值。

3.42.小结:经简单理论分析,本系统数据采集核心采用ADC0808,单片机系统选用80C51构成的最小系统,用LED动态显示采集到的数据,数据通过80C51串行端口传输,实现单片机与单片机之间的通信。

3.6、实验流程图
3.7、程序主体
//****************************************************************************** (1)ADC采集、发送机数据处理、数据发送的程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit ST=P3^5;
sbit OE=P3^7;
uchar getdata,picknum,t=0,Total=0;
void delay(uint t) //单位延时1ms,总延时1ms*t.(120为实验测试值) {
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<121;j++);
}
void delay1()
{;;}
void Send(uchar dat)。

相关主题