摘 要
基于单片机8路数据采集系统是硬件设计和软件设计¸本系统是采用ATC51单片机设计了一款8路数据采集系统,负责数据的采集和显示,设计一个多路数据输入输出系统,实现8路输入和输出,是采集生产过程中的各种工况数据经过处理后送到内存储器,CPU再对这些数据进行分析,运算和处理,系统可以用于各种工业领域。采用ATC51单片机、ADC0809、LCD1602等芯片实现硬件仿真,采用C语言编程,最后硬件电路在Proteus下仿真实现。
关键词:数据采集;单片机;ATC51;ADC0809
Abstract
Based on the single-chip microcomputer data acquisition system is ¸ hardware design and software design of this system uses ATC51 designed a 8 road data acquisition system, responsible for data acquisition and display, design a multichannel data input/output system, realize 8-way input and output, collect data under various working conditions in the production process is processed to the internal memory, CPU and analyze the data, computing and processing, the system can be used in various industrial fields.Series of ATC51 single chip microcomputer, ADC0809, LCD1602 chip to realize the hardware simulation, using C language programming, the hardware circuit in the Proteus simulation implementation.
Keyword: Data collection;MCS;ATC51;ADC0809
摘 要 2
Abstract 3
前 言 5
1 数据采集系统原理 6
1.1数据采集系统的概述 6
1.2数据采集系统的组成 6
1.3数据采集原理 6
2硬件设计 8
2.1 单片机的概述 8
2.2 数据模拟信号源 8
2.3 ATC51 9
2.3.1 I/O接口 9
2.3.2 定时/计数器 11
2.4 A/D转换芯片ADC0809 11
2.5 LCD1602 13
2.6硬件电路 15
3软件设计 16
3.1 Proteus 仿真软件及KeilUvision2 16
3.1.1 简介KeilUvision2 16
3.2 程序及相关的流程图 16
3.2.1 主程序流程图 16
3.2.2 A/D转换子程序流程图 17
3.2.3 LCD1602显示子程序流程图 18
4仿真调试与结果分析 20
4.1仿真描述 20
4.2仿真结果及分析 20
结束语 22
致 谢 23
参考文献 24
前 言
如今,数据采集技术及其应用已经受到了人们广泛的关注,数据采集系统也逐渐应用于各种领域。随着科技发展,数据采集系统在计算机的发展下技术水平得到了全面的提高。尤其在年代后期,在单片机的迅速发展下,对数据采集系统有了很大影响,一方面,越来越多的集成电路设计制作采取了与单片机进行组合,用软件控制操作管理,这样所设计出来的系统功能强大,对应用中所采集到的参数信息的处理和分析能力有显著提高。另一方面,生活生产中,对一些参数的采集记录都要依赖于数据的采集系统,从而使这种基于单片机而设计的数据采集系统得到了很大发展,再加上其具有高质量、低成本的优势,应用中必然能成为首选。对于单片机在过程控制、智能仪器、机电一体化产品、家器以及网络及通信等方面有着广泛应用,这就使得基于单片机的数据采集系统在许多领域也得到了广泛的应用。传统的单通道数据采集系统有一定的局限性,只能对一路的数据信息采集,在此基础上所设计的8路数据采集系统,可以轮流的对多路数据进行采集,比单路数据采集系统有着更广的实用范围。本设计是一个基于单片机的系统,用于数据的采集及显示,在单路的基础之上设计一个多路数据输入输出系统,实现对数据的8路输入和输出,采用ATC51单片机、ADC0809(Proteus软件中采用ADC0808)、LCD1602等芯片来实现硬件仿真,利用KeilC51软件C语言编程,最后设计的硬件电路在Proteus软件下仿真实现。
1 数据采集系统原理
1.1数据采集系统的概述
数据采集,又叫数据获取,也就是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口,数据采集是将电压、温度、压力、流量、位移、光照强度等模拟量经过采集转换成数字信号,再由计算机进行分析、处理、传输、存储和显示。数据采集的形成的部分有数据输入通道、数据存储、数据管理,数据处理、数据输出、数据显示等。数据采集系统的主要任务,就是对传感器输出的模拟信号进行采集再转换为计算机能够识别的数字信号,经过处理得出所要的数据信息。
1.2数据采集系统的组成
数据采集系统主要由硬件和软件两部分组成,依据这个设计的要求,设计了如下的方案:硬件部分主要是用来实现对8路数据的采集和显示功能,包括ATC51单片机、ADC0809(Proteus软件中采用ADC0808)、LCD1602等芯片;软件部分主要是通过C语言来编写单片机对8路数据的采集及传送LCD液晶显示屏显示的相关操作程序,最终生成.hex文件,在Proteus软件下实现仿真。
1.3数据采集原理
数据采集主要依据A/D转换原理、单片机 I/O 口的输入输出功能及LCD显示原理来设计的8路数据采集系统。首先是将ADC0809的使能控制端连接在单片机P3口,其功能有C语言程序来实现。8路模拟信号通过IN0—IN7端输入到ADC0809中经A/D转换后变为数字信号,在A/D转换结束后由输入到ATC51的P2口,再由ATC51将P2口输入的A/D转换后的数字信号赋予P0口,最后通过由连接在P0口的LCD1602液晶显示屏显示出来。本数据采集系统设计中有8路模拟信号模拟信号,设计要求所要实现的功能是8路模拟信号经转换后的8路数据能够在LCD显示屏上轮流显示出来,8路数据的测试值通过与8路信号源的理论值进行比较分析。本数据采集系统体现了简单直观、方便实用的特点。下图1-1为数据采集系统的原理框图。
图1-1 数据采集系统的原理框图
2硬件设计
2.1 单片机的概述
设计中所采用的单片机是ATC51单片机,主要是由CPU、存储器、I/O接口电路、定时/计数器、中断系统和串行接口电路组成。目前,在实际应用中,8位单片机也在不断地采用新技术,不断与集成电路的组合,而且8位增强型单片机在速度和功能上并不逊色于16位单片机,从长远来看,8位单片机将仍是单片机的优先机型,单片机技术发展有以下几方面的特点:
微型单片化、功能更强;
低电压、低功耗;
价格更低;
主流与多品种共存。
2.2 数据模拟信号源
作为数据模拟信号源可以有很多种形式,例如温度、压力、湿度、光照强度、流量等等,但这些都需要借助相应的传感器之类的器件,为了简单便捷,本设计选择了电压最为信号源,用8个可调节变阻器来调节电压,产生8路电压模拟数据信号,另外采用8个电压表来显示8路的电压值即理论值,用来验证最后LCD上显示的数据的准确性以及对采集到的数据测量值与理论值进行比较分析,测试设计系统的精度。下图2-1为8路数据模拟信号源图。
图2-1 8路模拟信号源
2.3 ATC51
本次设计所采用的单片机是一款由ATMEL公司推出的系统可编程(ISP)ATC51单片机。利用ISP软件,使用者可以方便地对单片机中所存储的代码进行修改。其技术参数如下:
●128字节的内部数据存储器;
●32个可编程I/O引脚;
●2个16位计数/定时器;
●1个全双工的串行通信;
●最高工作频率为33MHz;
●工作电压为4.0~5.5V;
2.3.1 I/O接口
在单片机中,I/O接口的数据传送方式主要是并行和串行两种,在并行接口中所传送的相关数据是并行的,也就是说数据可以在数据总线上是一起传输出去;串行接口数据串行传送的,就是8路数据在一条总线上分时段的传送,一次只传送一位二进制信息。
ATC51单片机具有4个8位并行的I/O端口:P0、P1、P2、P3口。对于P0~P3口,8位数据可以在其中并行输入输出,P3也可以作为特殊端口使用,所以每一个端口都能当输入输出接口用。ATC51外部引脚如图2-2所示:
图2-2 ATC51外部引脚图
P0口:本设计中使用P0传送8路数据到LCD显示屏上,特点是:漏极开路,双向输入输出。P0口也能当外部程序的数据存储器。P1口、P2口、P3口:都是8位端口,都是准双向端口,具有内部上拉电阻。P3口也可作为ATC51的一些特殊功能口。设计中使用P3口来进行对于LCD读写指令与数据的控制。
RST:复位输入。
XTAL1:两个输入端口,一个是反向振荡放大器的输入端口,一个是内部时钟工作电路的输入端口。
XTAL2:来自反向振荡器输出。
图2-3 P0口外部电路时钟
外部时钟电路如图2-3所示,外部时钟的晶振频率为12MHZ,则通过该电路提供给单片机的时钟也为12MHZ.时钟电路用于控制着计算机的工作节奏。
2.3.2 定时/计数器
ATC51单片机有两个定时计数器,T1和T0,特点是16位,可编程。对于它们的工作模式都可以是定时器模式和计数器模式,TMOD是定时/计数器的工作方式寄存器,有4种工作方式,分别是工作方式0~3。在定时/计数器中起控制定时器的启动、停止、标识定时器的溢出情况及中断情况的是控制寄存器TCON,利用TCON对工作模式和方式进行选择。
2.4 A/D转换芯片ADC0809
本设计所采用的AD转换芯片ADC0809是一个8位逐次逼近式A/D转换器,有8个模拟量输入通道,转换时间约为100us,可以直接与单片机相接,片内含有8路模拟开关,可以允许8路模拟数据信号的输入。虽然它的转换精度和转换时间都不是很高,但其在性价比方面有着明显的优势,在目前的市场上AD转换芯片应用是比较广泛的,在本系统中用于对8路模拟数据的转换。
输入通道的8路模拟开关分时选通8个模拟通道,由地址锁存译码器的三个输入A、B、C来确定选通哪一个通道,通道选择如下表1所示。
8路模拟数据输入通道共用一个A/D转换器进行转换,但同一时刻仅对采集的8路模拟数据中的其中一路通道进行转换。
转换后的8位数字量锁存到三态输出锁存器中,在输出允许的情况下,可以从数据线D7~D0上读出。
ADC0809(Proteus仿真中用ADC0808),其引脚分布如图2-4所示:
图2-4 ADC0808引脚图
1 IN7~IN0:8个模拟量输入通道,同一时刻只能有一路模拟数据信号输入。
2-1~2-8(OUT1~OUT8):8位数字量输出端.。
2 ADDA、ADDB、ADDC:为3个地址线。ADDA为低位地址,ADDC为高位地址。ADDA、ADDB和ADDC分别对应表1-1所示的选择通道表的A、B和C。
表1-1 选择通道表
3 ALE:是A、B、C地址状态在进入地址锁存器选择通道时允许信号。
4 START:转换的启动信号。当START=1时,所有内部寄存器清零;当START=0时,开始进行A/D转换;在A/D转换期间,START=0。
5 OE:输出允许信号,当OE=0时,输出数据线呈高电阻;当OE=1时,输出转换得到的数据。
6 CLK:时钟信号输入端,用来接外时钟信号。一般时钟频率为500Hz。
7 EOC:转换结束状态信号。
2.5 LCD1602
本设计所采用的LCD1602液晶显示屏,作为字符型液晶显示模块的LCD,能够显示丰富的内容,可以显示两行,每行可显示16个字符、字母和数字等,比较实用,对于本设计来说是很好的选择。
设计LCD的相关程序操作时,使能信号E的下降沿有效,对于命令和数据的读写,主要是由RS、R/W来控制,设置数据时先对RS和RW进行设置,随着使能信号E产生脉冲复位RS和RW的状态。设置读写操作时,设置RS和RW,E=1,开始读取数据,E=0,复位RS和RW状态。
1602LCD的16个引脚分布及其功能如图2-5所示:
图2-5 LCD1602引脚图
1 VSS:地电源
2 VDD:液晶显示偏压信号
3 VEE:0为输入指令,1为输入数据
4 RS:0写入指令或数据,1读信息
5 R/W:1读取信息,1→0写指令或数据
6 OE:使能信号
7 D0~D7:Data I/O
8 BLA:背源光正极
9 BLK:背源光负极
图2-6设计电路原理图
电路设计分析:首先利用单片机ATC51组成的单片机最小系统,P0口语LCD1602连接,P2口接受经过AD转换输出的数字信号。ADC0809进行AD转换,IN0~IN7口接入来自外路8个可调变阻器所产生的8路数据模拟信号,转换后信号有OUT0~OUT7口输出传送到P2口,P3口用来对一些使能端的控制,采用 LCD1602,为两行每行 16 字液晶显示屏,D0-D8 接 P0 口,所以要接上拉电阻,工作电压为5V。RS,RW,E 接 P3.5,P3.6,P3.7起控制作用,对于8路通道的选择,采用了将ADDA、ADDB、ADDC口与P1口相连,便于统一控制通道的选择,整体设计就是这样了,本系统采用LCD液晶显示屏来显示所采集到的8路数据信息,8路信息将轮流在屏幕上显示出来。
2.6硬件电路
8路数据信号采集系统硬件设计图如下图2-7所示:
图2-7 系统硬件设计图
3软件设计
3.1 Proteus 仿真软件及KeilUvision2
Proteus软件与KeilC51相结合来实现单片机的仿真,为基于单片机而设计的电子设计在硬件电路制作的时候提高了成功的准确性,也相应的节约的许多成本。
Proteus仿真软件的特点:
Proteus软件是能实现对原理图的设计、仿真实验和PCB设计的一种具有功能强大的电子设计自动化软件。
(2)Proteus 软件的主要作用是对单片机系统的仿真,用户可以在Proteus软件中直接对代码进行编辑、编译、调试,并且能够直观地看到仿真现象。
(3)Proteus 软件在硬件仿真系统中可以对各个变量和寄存器的当前状态的观察;也支持第三方的软件编译和调试环境,如KeilC51Vision2等,是一个目前唯一能仿真微处理器的电子设计软件。
3.1.1 简介KeilUvision2
本次设计所采用的KeilC51编程软件,对相关所需要的程序进行编译和修改,这是一款跟单片机紧密结合的编程软件,对于单片机设计的仿真有重要的作用,采用此软件进行编程能够及时验证程序的准确性。
数据采集系统的设计采用C语言来编写程序,首先要编写出主程序,其次是相关的子程序,AD转换程序,LCD显示程序,与所设计的电路图相结合,从而能够实现完美的仿真,得到想要的结果。
3.2 程序及相关的流程图
3.2.1 主程序流程图
对主程序的编写,首先是对一些初始化的设置,如对于定时器的设置,定时器0,模式1下,TMOD=0x01;当TR0=1时,启动定时器;当ET0=1时,开启定时器中断;当EA=1时,开总中断;对头文件的定义,主程序主要功能是能够实现对子程序的调用。主程序一般就是对转换程序、显示程序等相关子程序进行调用,从而实现仿真功能。
图3-1 主程序流程图
3.2.2 A/D转换子程序流程图
A/D转换程序中定义 START 为P3.4,由START赋值0->1->0变化:用来启动AD转换;定义EOC 为P3.3,用来控制转换完毕,由0->1;定义输出口为 P2,定义数据输出传送到P2口;#define abc P1, unsigned char abc,m,m通道数 for(m=0;m<8;m++),abc=0x00,P1=abc,送入第一路转换地址; 启动AD转换 , START=1, START=0;等待转换结束,while(EOC==0);输出转换结果,Result=OUTPORT;通道数加1, abc++;return Result;接着就是循环转换,直到将8路数据转换完。
图3-2 A/D转换子程序流程图
3.2.3 LCD1602显示子程序流程图
LCD子程序初始化设置一般的步骤:
①清除显示;
②设置工作方式;
③设定输入方式;
④设置显示状态。
当E=1时,把LCD的状态改为写入命令状态,RS=0,RW=0;其次是输出命令,LCDPORT=Command,最后执行命令,E=0;然后E=1时,把LCD的状态改为写入数据状态,RS=1,RW=0;其次是输出数据,LCDPORT=Data,最后显示数据,E=0。
图3-3 LCD1602显示子程序流程图
4仿真调试与结果分析
4.1仿真描述
经过对设计电路所需元器件的选择,设计好电路图,在keilC51编程软件中编写好程序,反复修改后经过编译,能够生成.hex文件,利用Proteus仿真软件对照自己所设计的电路图连接好仿真设计电路图,通过添加之前编译生成的.hex文件,运行观察仿真结果。仿真遇到的问题,刚开始的时候没有现象,只有LCD显示屏在亮,我先开始对电路进行了检查,然后对所编写的C语言程序进行检查,检查到程序中一点小错误,但我认为这不足以影响仿真的正常运行。对相应部分进行了修改以后,重新仿真系统,结果不出所料,没有变化。我开始查阅一些仿真成功的实例,认为是跟相关的元器件的值有关,调试的几个仍然没什么变化,最后发现是AD0809的外部时钟信号频率的问题,一般外部的时钟频率为500KHz,但在仿真调试中只需要600Hz就能够运行仿真了。这个设计的8路数据模拟信号是来自于外部所接的8个可调电阻的电压值,通过通道选择和A/D转换,8路电压值的数据在LCD液晶显示屏上轮流显示出来。通过调节滑动变阻器的值来观察电压值的变化,通过与实际电压值进行比较,从而来判断此8路数据采集系统对数据采集的精准度。
4.2仿真结果及分析
(1)对于所设计的8路数据采集系统在提供0~5V范围内的电压模拟信号数据,通过仿真测试能够采集到的数据下限是0.00V,能够采集到数据上限是5.00V。如图 4-1、图4-2所示是对第6通道进行测试的仿真结果,说明系统的基本性能达到要求。
图4-1 下限仿真结果
图4-2 上限仿真结果
对于所设计的数据采集系统精度的测试,经过做了3组数据采集系统所采集到的测量值与其理论值进行比较分析,3组仿真结果各组各路数据理论与测量值及所产生的误差如表4-2所示:
表4-2 理论数据与测量值误差表
第一组 第二组 第三组
测量值 理论值 误差 测量值 理论值 误差 测量值 理论值 误差
1通道 0.5 0.5 0.00 0.74 0.75 0.01 0. 0.65 0.01
2通道 1.00 1.00 0.00 1.25 1.25 0.00 1.15 1.15 0.00
3通道 1.50 1.50 0.00 1.74 1.75 0.01 1.84 1.85 0.01
4通道 2.00 2.00 0.00 2.25 2.25 0.00 2.35 2.35 0.00
5通道 2.49 2.50 0.01 2.74 2.75 0.01 2. 2.65 0.01
6通道 3.00 3.00 0.00 3.25 3.25 0.00 3.35 3.35 0.00
7通道 3.49 3.50 0.01 3.74 3.75 0.01 3.70 3.70 0.00
8通道 4.00 4.00 0.00 4.25 4.25 0.00 4.15 4.15 0.00
(3)由表4-2分析所得出数据采集系统所采集到的3组测量值与理论值所产生的误差与所设定的精确度0.05V相比,可以说误差还是非常小的,所测电压值数据基本与其理论值相吻合,这说明了数据采集系统的各个相应模块(硬件加软件)都能正常工作,可以说这个设计系统基本达到要求。经过多次调节可调变阻器的阻值来改变电压,通过反复比较分析,来进一步确定本数据采集系统的精确性。如果在软件程序上对数据采集的精度加以细化,相信系统所采集到的数据将会更加精确。
结束语
基于单片机的数据采集系统,是在单片机系统的基础上设计的能够实现数据采集功能的系统,能够对许多生产过程中的各种参数进行采集,经过一系列的分析处理最终将数据显示出来,得到所想要的信息。
总得来说,根据系统仿真的结果,设计的任务基本完成,设计要求基本达到。理论到实验,实验到实践,仿真只能算是实验部分,与真正的硬件实践还是有区别的。该数据采集系统的设计在这方面还是有很多有待完善的地方,比如在对于作为模拟信号源的形式比较单一,虽然做到了对8路数据采集,但在信号源的形式上跟单路数据采集是差不多的,所以如果能够对8路不同的模拟信号进行采集那将会又上升一个等级,数据采集系统的实用性将大大提升。刚开始自己也想尝试着去采集8路不同的数据,例如另外七路可以通过相应的传感器对温度、光照强度、湿度、流量、速度等模拟信号进行采集,但由于本人能力有限,要求完成设计时间也比较紧张,所以没能实现。另外,熟练的掌握c语言编程,将仿真的硬件电路做成真实的硬件电路,运用到生产生活中,对实际应用中的的数据进行采集和控制,利用实际应用中更加精密的仪器器件,这样能够对数据采集系统有进一步的提升和改善。
单片机数据采集系统在工业、电子行业等领域有着较好的优越性,现在越来越多的仪器都是在以单片机为基础,设计成电路配上完善的程序可以实现各种各样的功能,再加上单片机的通用性较好,小体积及组装容易的特点,我相信将会有越来越多的实用的单片机设计给我们生活带来更多方便。对于本设计使用单片机设计的8路数据采集系统,在现实生活方面的实用性更加的广泛。
参考文献
[1] 王静霞.单片机应用技术[M](C语言版).北京:电子工业出版社,2009:22-47
[2] 张道德.单片机接口技术[M](C51版). 北京:中国水利水电出版社,2007:60-90
[3] 周润景.徐宏伟等.单片机电路设计、分析与制作[M]. 北京:机械工业出版社,2010:79-40
[4] 韩克等.单片机应用技术[M](基于Proteus的项目设计与仿真).北京:电子工业出版社,2013:20-88
[5] 马明建.数据采集与处理技术[M].西安:西安交通大学出版社,2005:20-68
[6] 李铁.基于单片机的数据采集系统的设计论文[M].电子信息.2011:47-73
[7] .单片机原理及其接口技术[M].北京:科学出版社,2012:22-140
[8]戴娟、倪瑛.单片机技术与应用[M].北京:高等教育出版社,2012:10-30
[9]赵保京.中国集成电路大全[M].北京:国防工业出版社,1993:69-73
[10]张毅刚、彭喜源.单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,2003:225-229
[11]万福君.单片微机原理系统设计与开发应用[M].北京:中国科技技术大学出版社,2002:128-135
[12]梅丽凤、王艳秋、张军.单片机原理及接口技术[M].北京:清华大学出版社,1991:80-90
[13]阎石.数字电子技术基础[M].北京:高等教育出版社,1997:9-32
[14]龙志文.电力电子技术[M].北京:机械工业出版社,2000:36-下载本文