当前位置:文档之家› 基于单片机的八路数据采集系统

基于单片机的八路数据采集系统

基于单片机的八路数据采集系统(一)摘要:单片机数据采集系统是计算机在工业控制中最为普遍的应用系统¸它的任务是采集生产过程中的各种工况参数经过处理后送入内存储器,CPU再对这些参数数据进行分析,运算和处理。

本系统设计一个单片机系统,负责数据的采集和显示,设计一个多路数据输入输出系统,实现8路输入和输出。

采用89C51系列单片机、ADC0809、LED数码管等芯片实现硬件仿真,采用汇编语言。

最后硬件电路在Proteaus下仿真实现。

关键词:数据采集;8路输入输出;LED显示。

0.前言随着科学技术的进步,人们越来越多地用计算机来实现控制系统,因此,充分理解计算机控制系统是十分重要的。

计算机控制系统的工作原理可归纳为以下三个步骤:1.实时数据采集:对来自测量变送装置已的被控量的瞬时值进行检测和输入。

2.实时控制决策:对采集到的被控量进行分析和处理,并按已定的控制规律,决定将要采取的控制行为。

3.实时控制输出:根据控制决策,适时地对执行机构发出控制信号,完成控制任务。

工业控制机包括硬件和软件两部分:硬件包括主机板、内部总线和外部总线、人-机接口、系统支持板、磁盘系统、通信接口、输入输出通道。

软件包括系统软件、支持软件和应用软件。

本系统设计一个单片机系统,负责数据的采集和显示,设计一个多路数据输入输出系统,实现8路输入和输出。

采用89C51系列单片机、ADC0809、LED数码管等芯片实现硬件仿真,采用汇编语言。

最后硬件电路在Proteaus下仿真实现。

1.基单片机的八路数据采集的基本理论基于单片机的八路数据采集电路的主要原理是:通过电位计控制输入信号(电压值)的幅值,经单片机对八路信号进行实时同步采样,并用键盘选择通道控制LED显示八路数据采集结果。

本课题只要掌握单片机与ADC0809,LED数码管的接口方式,ADC0809的工作原理,LED数码管的驱动原理,就能实现Proteus仿真。

2.方案设计数据采集电路的原理框图1所示。

图1 数据采集电路的原理框图根据设计要求,采用的方案如下:硬件部分实现对8路数据采集和显示的功能,包括MCS-51单片机、ADC0809、LED 数码管;软件部分实现单片机对8路输入数据的采集以及对LED 的显示操作。

主要设计思想:单片机P1口与ADC0809相连,P3.0、P3.1口与74LS164连接,四个74LS164连接分别与四个LED 数码管连接。

模拟信号通过IN0—IN7输入到ADC0809中转换为数字信号,P1获得此值后,经过处理得到每位的数据后,通过四个74LS164送到LED 显示屏上。

3.系统硬件的工作原理3.1 MCS51单片机MCS-51单片机的内部资源主要有并行I/O接口、定时器/计数器、串行接口以及中断系统。

其外部引脚如图2所示。

图2 MCS-51单片机3.1.1 I/O接口51系列单片机有4个8位并行的I/O端口:P0、P1、P2、P3口。

这4个口既可以并行输入或输出8位数据,又可以按位方式使用,即每一位均能独立作为输入或输出接口用。

3.1.2 定时器/计数器电路1.MCS-51单片机有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1。

2.每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,这些功能都是通过编程设定来实现的。

3.每个定时/计数器有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。

通过编程可设定工作于某种方式。

4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式来处理。

3.1.3 串行接口MCS-51单片机具有一个全双工的串行异步通信接口,可以同时发送、接收数据。

发送、接收数据可通过查询或中断的方式来处理。

它有四种工作方式:0.方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。

1.方式1,称为8位的异步通信方式,通常用于双机通信。

2.方式2和方式3,称为9位的异步通信方式,通常用于多机通信。

256-T1波特率的初值SMODfosc*/(32)**12^23.1.4 中断系统MCS-51单片机提供5个(52子系列提供6个)硬件中断源:两个外部中断源INT0(P3.2)和INT1(P3.3),两个定时/计数器T0和T1的溢出中断TF0和TF1;1个串行口发送T1和接收R1中断。

以下为本系统用到的串口中断部分指令:EA:中断允许总控位。

EA=0,屏蔽所有的中断请求;EA=1,开放中断。

EA的作用是使中断允许形成两级控制。

ES:串行口中断允许位。

ES=1允许串行口中断。

REN为允许接收控制位。

REN=1,则允许接收。

TI位发送中断标志位。

RI为接收中断标志位。

3.2 数据采集转换模块这一模块主要有ADC0809转化器完成。

ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。

其外部引脚如图3所示。

图3 ADC08093.2.1 输入输出端1. IN0~IN7:8路模拟量输入端。

2. 2-1~2-8:8位数字量输出端。

3.2.2 传输通道选择端ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。

3.2.3 使能端1.ALE:地址锁存允许信号,输入,高电平有效。

2.START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

3.EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

4.OE:数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

5.CLK:时钟脉冲输入端。

要求时钟频率不高于640KHZ。

6.REF(+)、REF(-):基准电压。

7.Vcc:电源,单一+5V。

8.GND:地。

3.3 显示模块显示模块选用 LED数码管。

1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。

1602型LCD可以显示2行16个字符,有8位数据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。

其外部引脚如图3所示。

图4 LED数码管3.3.1 各引脚功能1.VSS:电源地。

2.VDD:电源正极。

3.VEE:液晶显示偏压信号。

4.RS:数据/命令选择端。

5.R/W:读写选择端。

6.E:使能信号。

7.D0-D7:数据输入/输出口。

4.软件编程设计思想:ADC0809的使能控制端连接在单片机P3口,操作时由程序控制。

当A/D 转换结束后由单片机将P1口A/D转换后的数据附给P0口,进而由连接在P0口的LCD显示。

主程序功能:void main()//主函数实现8路数据的采集与控制输出数据。

子程序功能:void init()//初始化函数对LCD进行初始化设置。

void delay(uint z)//延时函数当z=1时,延时约为1ms。

Void write_command(uchar com)//写命令LCD写命令操作void write_data(uchar date)//写数据LCD写数据操作void start() //开始AD转换开启AD转换void xianshi() //AD转化结果显示显示AD转化的结果中断程序功能:void timer0() interrupt 1a2==0时,LCD第一屏显示前四位数据。

a2==1时,LCD第二屏显示后四位数据。

程序流程图:基于开关量的数据采集系统的程序流程图如图5所示。

图5 程序流程图5. 系统调试和结果分析根据方案设计结果,进行了硬件电路在Proteaus下的仿真。

当通过电位器调节AD转换器输入端的电压时,模拟电压值经过AD转换后,经由单片机将转换后的电压值发送至P0口,供LCD进行显示。

仿真过程描述:通过keil软件对所编程序进行编译,生成.hex文件,在proteaus 软件中,用MCS51单片机调用.hex,即可进行硬件的仿真。

该仿真包括两部分:1.对8路电压进行采集,经由AD转换器进行转化,转化后的16进制数存于单片机的内部存储器中。

2.对转换后的电压进行显示。

将内部存储器中存储的转化后的电压对应的16进制数付给P0口,由LCD进行显示。

调节电位器LCD的显示数据也会发生变化。

调试中遇到的问题:将程序下载至开发板上的单片机进行硬件调试时主要遇到以下两个问题。

1.LCD不显示数据,LED出现乱闪。

解决方法:将LED的段选和位选端关闭后再进行硬件调试,问题得到解决。

2.调节电位器后,AD转换的数据不变化只显示5V。

解决方法:AD转换程序出现错误,更改程序后问题得到解决。

6. 结论及进一步设想本系统设计一个单片机系统,实现8路数据的采集和显示,它的任务是采集生产过程中的各种工况参数经过处理后送入内存储器,CPU再对这些参数数据进行分析,运算和处理。

采用89C51系列单片机、AD转换器、LCD1602等器件,并采用C语言编程,在Proteaus 下实现了硬件仿真,得到了一个8路数据输入输出系统。

根据实验结果,本设计已经完成了设计任务,达到要求。

但是由于仿真与实际应用是有很大差别的,该单片机的8路数据采集系统还存在着实际的应用方面的缺陷,可以通过把C语言编程、单片机、真实的硬件电路等更精密的器件综合到一起,控制在工厂生产过程中需要采集和控制的数据,从而进一步改善该系统,使其能够应用到实际的生产过程中。

参考文献[1] 谢维成,杨加国.单片机原理与应用及C51程序设计. 北京:清华大学出版社,2009[2] 于海生等.微型计算机控制技术.北京;清华大学出版社,2008[3] 刘复华. 单片机及其应用系统. 北京:清华大学出版社,1992[4] 李斌,董慧颖. 可重组机器人研究和发展现状. 沈阳工业学院学报,2000,19(4):[5] 于海生等. 微型计算机控制技术. 北京:清华大学出版社,1999[6] 单片机原理与应用及C51程序设计. 北京:清华大学出版社,2009课设体会做了两周的课程设计,对于单片机的实际应用方面让我感受颇深。

对于本专业的学生,我深知不进行自主的实践,永远也学不到真东西。

在课设刚开始拿到题目觉得挺简单,书上也有类似的程序,有点散漫。

但当我真正的去思考开始着手做程序时才发现自己还有好多要去学习。

Proteus仿真软件对我来说还是比较陌生的,有很多硬件都找不到,查阅了Proteus相关的入门书籍后才能自如的运用软件。

之后便是程序的编写,根据课设任务的要求,写出了程序的一个大概流程,按着程序流程图一步一步的得到了能实现数据输入输出的程序,期间经过了多次调试,修改。

相关主题