课程设计(论文)基于单片机的八路数据采集系统_第1页
课程设计(论文)基于单片机的八路数据采集系统_第2页
课程设计(论文)基于单片机的八路数据采集系统_第3页
课程设计(论文)基于单片机的八路数据采集系统_第4页
课程设计(论文)基于单片机的八路数据采集系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 基于单片机的八路数据采集系统基于单片机的八路数据采集系统(一)摘要:单片机数据采集系统是计算机在工业控制中最为普遍的应用系统它的任务是采集生产过程中的各种工况参数经过处理后送入内存储器,cpu再对这些参数数据进行分析,运算和处理。本系统设计一个单片机系统,负责数据的采集和显示,设计一个多路数据输入输出系统,实现8路输入和输出。采用89c51系列单片机、adc0809、led数码管等芯片实现硬件仿真,采用汇编语言。最后硬件电路在proteaus下仿真实现。关键词:数据采集;8路输入输出;led显示。0.前言随着科学技术的进步,人们越来越多地用计算机来实现控制系统,因此,充分理解计算机控制系统是

2、十分重要的。计算机控制系统的工作原理可归纳为以下三个步骤:1.实时数据采集:对来自测量变送装置已的被控量的瞬时值进行检测和输入。 2.实时控制决策:对采集到的被控量进行分析和处理,并按已定的控制规律,决定将要采取的控制行为。3.实时控制输出:根据控制决策,适时地对执行机构发出控制信号,完成控制任务。工业控制机包括硬件和软件两部分:硬件包括主机板、内部总线和外部总线、人-机接口、系统支持板、磁盘系统、通信接口、输入输出通道。软件包括系统软件、支持软件和应用软件。本系统设计一个单片机系统,负责数据的采集和显示,设计一个多路数据输入输出系统,实现8路输入和输出。采用89c51系列单片机、adc080

3、9、led数码管等芯片实现硬件仿真,采用汇编语言。最后硬件电路在proteaus下仿真实现。1.基单片机的八路数据采集的基本理论基于单片机的八路数据采集电路的主要原理是:通过电位计控制输入信号(电压值)的幅值,经单片机对八路信号进行实时同步采样,并用键盘选择通道控制led显示八路数据采集结果。 本课题只要掌握单片机与adc0809,led数码管的接口方式,adc0809的工作原理,led数码管的驱动原理,就能实现proteus仿真。2.方案设计数据采集电路的原理框图1所示。现场信号1数据采集器1主控系统数据存储现场信号2数据采集器2现场信号8数据采集器8数据显示图1 数据采集电路的原理框图根据

4、设计要求,采用的方案如下:硬件部分实现对8路数据采集和显示的功能,包括mcs-51单片机、adc0809、led数码管;软件部分实现单片机对8路输入数据的采集以及对led的显示操作。主要设计思想:单片机p1口与adc0809相连,p3.0、p3.1口与74ls164连接,四个74ls164连接分别与四个led数码管连接。模拟信号通过in0in7输入到adc0809中转换为数字信号,p1获得此值后,经过处理得到每位的数据后,通过四个74ls164送到led显示屏上。3.系统硬件的工作原理3.1 mcs51单片机mcs-51单片机的内部资源主要有并行i/o接口、定时器/计数器、串行接口以及中断系统

5、。其外部引脚如图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有三种工作方式。通过编程可设定工作于某种方

6、式。4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式来处理。 3.1.3 串行接口mcs-51单片机具有一个全双工的串行异步通信接口,可以同时发送、接收数据。发送、接收数据可通过查询或中断的方式来处理。它有四种工作方式: 0.方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展i/o接口。 1.方式1,称为8位的异步通信方式,通常用于双机通信。 2.方式2和方式3,称为9位的异步通信方式,通常用于多机通信。 3.1.4 中断系统mcs-51单片机提供5个(52子系列提供6个)硬件中断源:两个外部中断源int0(p3.2)和int1(p3.3

7、),两个定时/计数器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转换器、逐次逼近寄存器、逻辑控制和定时电路组成

8、。其外部引脚如图3所示。图3 adc08093.2.1 输入输出端 1. in0in7:8路模拟量输入端。 2. 2-12-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:数据输出允许信号,输入

9、,高电平有效。当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:电源

10、正极。 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(

11、uchar com)/写命令 lcd写命令操作 void write_data(uchar date)/写数据 lcd写数据操作 void start() /开始ad转换 开启ad转换 void xianshi() /ad转化结果显示 显示ad转化的结果 中断程序功能:void timer0() interrupt 1 a2=0时,lcd第一屏显示前四位数据。 a2=1时,lcd第二屏显示后四位数据。程序流程图:基于开关量的数据采集系统的程序流程图如图5所示。开始 键盘扫描电压数据采集 数据处理 led显示 结束 图5 程序流程图5. 系统调试和结果分析根据方案设计结果,进行了硬件电路在pro

12、teaus下的仿真。当通过电位器调节ad转换器输入端的电压时,模拟电压值经过ad转换后,经由单片机将转换后的电压值发送至p0口,供lcd进行显示。仿真过程描述:通过keil软件对所编程序进行编译,生成.hex文件,在proteaus软件中,用mcs51单片机调用.hex,即可进行硬件的仿真。该仿真包括两部分:1. 对8路电压进行采集,经由ad转换器进行转化,转化后的16进制数存于单片机的内部存储器中。2. 对转换后的电压进行显示。将内部存储器中存储的转化后的电压对应的16进制数付给p0口,由lcd进行显示。调节电位器lcd的显示数据也会发生变化。调试中遇到的问题:将程序下载至开发板上的单片机进

13、行硬件调试时主要遇到以下两个问题。1. lcd不显示数据,led出现乱闪。解决方法:将led的段选和位选端关闭后再进行硬件调试,问题得到解决。2. 调节电位器后,ad转换的数据不变化只显示5v。解决方法:ad转换程序出现错误,更改程序后问题得到解决。6. 结论及进一步设想本系统设计一个单片机系统,实现8路数据的采集和显示,它的任务是采集生产过程中的各种工况参数经过处理后送入内存储器,cpu再对这些参数数据进行分析,运算和处理。采用89c51系列单片机、ad转换器、lcd1602等器件,并采用c语言编程,在proteaus下实现了硬件仿真,得到了一个8路数据输入输出系统。根据实验结果,本设计已经

14、完成了设计任务,达到要求。但是由于仿真与实际应用是有很大差别的,该单片机的8路数据采集系统还存在着实际的应用方面的缺陷,可以通过把c语言编程、单片机、真实的硬件电路等更精密的器件综合到一起,控制在工厂生产过程中需要采集和控制的数据,从而进一步改善该系统,使其能够应用到实际的生产过程中。参考文献1 谢维成,杨加国.单片机原理与应用及c51程序设计. 北京:清华大学出版社,20092 于海生等.微型计算机控制技术.北京;清华大学出版社,20083 刘复华. 单片机及其应用系统. 北京:清华大学出版社,19924 李斌,董慧颖. 可重组机器人研究和发展现状. 沈阳工业学院学报,2000,19(4):

15、5 于海生等. 微型计算机控制技术. 北京:清华大学出版社,19996 单片机原理与应用及c51程序设计. 北京:清华大学出版社,2009课设体会做了两周的课程设计,对于单片机的实际应用方面让我感受颇深。对于本专业的学生,我深知不进行自主的实践,永远也学不到真东西。在课设刚开始拿到题目觉得挺简单,书上也有类似的程序,有点散漫。但当我真正的去思考开始着手做程序时才发现自己还有好多要去学习。proteus仿真软件对我来说还是比较陌生的,有很多硬件都找不到,查阅了proteus相关的入门书籍后才能自如的运用软件。之后便是程序的编写,根据课设任务的要求,写出了程序的一个大概流程,按着程序流程图一步一步

16、的得到了能实现数据输入输出的程序,期间经过了多次调试,修改。最终得到完整的程序,心里还是小有成就感的。问题随之又来,当我将写好的程序进行实物仿真时,和我想的结果完全不同,写入程序的开发板并没有像软件仿真时那样得出期望的结果,最后经过查阅资料将程序、proteus仿真、硬件的端口一一对应,才得出了争确的结果。最后,感谢学校和老师给我们安排了这次课程设计,让我真正感受到的是合作的重要,许多时候老师的指导中的一句半句启发了我,就出现的让人欣喜的结果;理论知识同样很重要,有些问题都是由于基础知识掌握不好才出现的。总之,要想做好一个硬件,理论知识基础,动手能力也必须过关,二者缺一不可,我会继续努力学习这

17、方面的知识,通过类似课设这种方式锻炼自己,达到学以致用。附录1 电路原理图附录2 程序清单 #include#include#define uchar unsigned char#define uint unsigned intsbit adoe=p37; /oe接3.7sbit eoc=p33; /eoc接3.1sbit adstart=p36;/start接3.2sbit a0=p30; /a 3.3sbit a1=p31; /b 3.4sbit a2=p32; /c 3.5sbit lcdrs=p35; /lcd rs 3.6sbit lcden=p34; /lcd en 3.7sbit

18、 dula=p26;sbit wela=p27;long int temp,b1,b2,b3,b4,b5;uchar tt;uchar code table=0123456789.v; /显示电压void delay(uint z) /延时 uint x,y; for(x=z;x0;x-) for(y=100;y0;y-);void write_command(uchar com)/写命令 dula=0; wela=0; lcdrs=0; /输入指令p1=com;delay(5);lcden=1; /读数据delay(5);lcden=0; /写指令或者数据void write_data(uc

19、har date)/写数据 lcdrs=1; /输入数据p1=date; /显示delay(5);lcden=1; /读数据delay(5);lcden=0;/写指令或数据void init()/初始化lcden=0;write_command(0x38);/不可变,显示模式设置:16*2显示,5*7点阵,8位数据接口write_command(0x0c);/屏幕开启和光标闪烁write_command(0x06);/显示开关及光标设置write_command(0x01);/清屏void start() /开始ad转换adoe=0; adstart=0; _nop_();adstart=1;

20、adstart=0; void xianshi() /ad转化结果显示 write_data(tableb1); /最高位delay(1); write_data(table10); /小数点delay(1); write_data(tableb2); /第二位delay(1); write_data(tableb3); /第三位delay(1); write_data(table11); /电压vdelay(1); void first_mark() /0-4路通道的标号write_command(0x01);write_command(0x80);write_data(a);delay(1

21、);write_command(0x80+0x01);write_data(=);delay(1);write_command(0x80+0x09);write_data(b);delay(1);write_command(0x80+0x0a);write_data(=);delay(1);write_command(0x80+0x40);write_data(c);delay(1);write_command(0x80+0x41);write_data(=);delay(1);delay(1);write_command(0x80+0x49);write_data(d);delay(1);w

22、rite_command(0x80+0x4a);write_data(=);delay(1);void second_mark() /5-7路通道的标号write_command(0x01);write_command(0x80);write_data(e);delay(1);write_command(0x80+0x01);write_data(=);delay(1);write_command(0x80+0x09);write_data(f);delay(1);write_command(0x80+0x0a);write_data(=);delay(1);write_command(0x8

23、0+0x40);write_data(g);delay(1);write_command(0x80+0x41);write_data(=);delay(1);delay(1);write_command(0x80+0x49);write_data(h);delay(1);write_command(0x80+0x4a);write_data(=);delay(1);void main()a2=0;init();/调用lcd初始化子程序tmod=0x01;ea=1;/开总中断th0=(65535-1000)/256;tl0=(65535-1000)%256; et0=1;/开定时器0中断tr0=1;/定时器0置位first_mark();while(1) a0=0; /0路或4路通道的ad转化a1=0;start();while(!eoc); adoe=1; temp=p0;delay(3);adoe=0; b1=(temp*500/255)/100; /最高位b2=(temp*500/255)%100/10; /第二位b3=(temp*500/255)%10; /第三位write_comman

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论