基于单片机的多路数据采集系统设计论文毕设论文.docx

上传人:b****6 文档编号:8768868 上传时间:2023-02-01 格式:DOCX 页数:20 大小:327.18KB
下载 相关 举报
基于单片机的多路数据采集系统设计论文毕设论文.docx_第1页
第1页 / 共20页
基于单片机的多路数据采集系统设计论文毕设论文.docx_第2页
第2页 / 共20页
基于单片机的多路数据采集系统设计论文毕设论文.docx_第3页
第3页 / 共20页
基于单片机的多路数据采集系统设计论文毕设论文.docx_第4页
第4页 / 共20页
基于单片机的多路数据采集系统设计论文毕设论文.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于单片机的多路数据采集系统设计论文毕设论文.docx

《基于单片机的多路数据采集系统设计论文毕设论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的多路数据采集系统设计论文毕设论文.docx(20页珍藏版)》请在冰豆网上搜索。

基于单片机的多路数据采集系统设计论文毕设论文.docx

基于单片机的多路数据采集系统设计论文毕设论文

 

基于单片机的多路数据采集系统设计

 

物理与电子信息学院电子信息科学与技术专业学号:

指导教师:

摘要:

本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。

本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。

数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机AT89S52来实现,硬件部分是以单片机为核心,还包括A/D模数转换模块,显示模块,和串行接口部分。

该系统从机负责数据采集并应答主机的命令。

8路被测电压通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并将转换后的数据通过串行口MAX232传输到上位机,由上位机负责数据的接受、处理和显示,并用LED数码显示器来显示所采集的结果。

软件部分应用VC++编写控制软件,对数据采集系统、模数转换系统、数据显示、数据通信等程序进行了设计。

关键词:

数据采集;89C52单片机;ADC0809;MAX232

TheDesignOfMulti-channelDataAcquisitionSystemBasedOnSCM

LiZhe

CollegeofPhysicsandElectronicInformationElectronicinformationscienceandtechnologyNo:

010414055

Tutor:

ZhaiYan-Lei

Abstract:

Thisarticledescribesthehardwaredesignandsoftwaredesignofthedataonwhichbasedonsignal-chipmicrocomputer.Thedatacollectionsystemisthelinkbetweenthedigitaldomainandanalogdomain.Ithasanveryimportantfunction.Theintroductivepointofthistextisadatatocollectthesystem.Thehardwareofthesystemfocusesonsignal-chipmicrocomputer.Datacollectionandcommunicationcontrolusemodulardesign.Thedatacollectedtocontrolwithcorrespondencetoadoptamachine8051tocarryout.Thepartofhardware’scoreisAT89S52,isalsoincludesA/Dconversionmodule,displaymodule,andtheserialinterface.Slavemachineisresponsiblefordataacquisitionandansweringthehostmachine.8roadsweremeasuredtheelectricvoltagetopasstheingeneralusemold-fewconversionofADC0809,therealizationcarriesontheconversionthatimitatestomeasurethenumeraltomeasuretowardsthedatathatcollect.ThensendthedatatothehostmachinethroughMAX232.thehostmachineisresponsiblefordataanddisplay,LEDdigitaldisplayisresponsibledisplaythedata.ThesoftwareispartlyprogrammedwithVC++.Thesoftwarecanrealizethefunctionofmonitoringandcontrollingthewholesystem.Itdesignsmuchprogramlikedata-acquisitiontreatment,data-displayanddata-communicationect.

Keywords:

AT89C52;ADC0809;MAX232

 

目录

摘要1

目录3

1引言6

1.1研究背景及其目的意义6

1.2国内外研究现状6

1.3该课题研究的主要内容内容6

2数据采集7

2.1数据采集系统7

2.2方案器件选择8

2.2.1A/D模数转换的选择.8

2.2.2单片机的选择.8

2.2.3串行口的选择8

2.2.4显示部分8

2.2.5按键8

3硬件电路8

3.1主机电路8

3.1.1主机电路原理图设计8

3.1.2单片机8

3.1.3LED数码显示器的应用原理9

3.2从机电路9

3.2.1从机电路原理图设计9

3.2.2单片机之间的通信9

3.2.3模数转换器ADC080910

4软件部分10

4.1简介KeilUvision210

4.2主机程序设计11

4.3从机程序设计14

5调试结果16

6总结16

参考文献16

附录116

附录217

1引言

1.1研究背景及其目的意义

近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。

数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统,目标是测试中不依靠相关的测试文。

20世纪70年代后期,数据采集系统发展过程中逐渐分为两类,一类是实验室数据采集系统,一类是工业现场数据采集系统[1]。

20世纪80年代随着计算机的普及应用,数据采集系统得到了很大的发展,开始出现了通用的数据采集与自动测试系统。

该阶段的数据采集系统主要有两类,一类以仪表仪器和采集器、通用接口总线和计算机组成。

第二类以数据采集卡、标准总线和计算机构成。

20世纪90年代至今,该阶段的数据采集系统采用模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速组成一个新的系统。

1.2国内外研究现状

数据采集系统是通过采集传感器输出的模拟信号并转换成数字信号,并进行分析、处理、传输、显示、存储和显示。

它起始于20世纪中期,在过去的几十年里,随着信息领域各种技术的发展,在数据采集方面的技术也取得了长足的进步,采集数据的信息化是目前社会的发展主流方向。

1.3该课题研究的主要内容内容

数据采集技术是信息科学的重要分支之一,它研究信息数据的采集、存储、处理以及控制等问题。

 

本系统采用下位机负责模拟数据的采集,从单片机负责采集八路数据,并应答主机发送的命令,上位机即主机是负责处理接受过来的数字量的处理及显示,主机和从机之间用RS-232进行通信。

2数据采集

2.1数据采集系统

数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。

数据采集技术广泛引用在各个领域。

在该系统中需要将模拟量转换为数据量,而A/D是将模拟量转换为数字量的器件。

在该系统中采用的是8051系列的单片机。

它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。

双机通信的串行口可以采用RS232C标准接口,由芯片MAX232实现双机的通信。

而数据的显示则采用的是LED数码管,在生活中接触也较多[2]。

完成毕业设计所需要的系统框图如图2.1所示:

图1系统框图

2.2方案器件选择

2.2.1A/D模数转换的选择:

在本设计选用的是逐渐逼近式A/D转换器——ADC0809.

2.2.2单片机的选择:

而本设计选用的是AT89C52.

2.2.3串行口的选择:

该串行口我选用了标准RS-232C接口,常用的芯片是MAX232。

2.2.4显示部分:

本设计选用的是八段发光二极管数码显示器。

采用动态扫描显示法。

2.2.5按键

键盘是一种常见的输入设备,用户可以向计算机输入数据或命令。

非编码键盘有两种方法:

一种是独立按键接口;另一种是矩阵式按键接口。

该系统曹勇矩阵式按键。

3硬件电路

3.1主机电路

该系统是一个主从式多路数据采集系统,它的主机包括按键和显示两部分。

3.1.1主机电路原理图设计

图2主机电路原理图

3.1.2单片机

P0口用来显示显示数据,由于P0口输出两路数据,所以需要连接74HC573,进行数据的锁存和传输,并由P2.6和p2.7控制。

P1口接按键进行采集通道的选择。

3.1.3LED数码显示器的应用原理

简单的讲,LED数码显示器就是由发光二极管组成的LED数码显示器有两种连接方式:

共阴极接法;共阳极接法。

该系统上采用共阴极接法[3]。

3.2从机电路

3.2.1从机电路原理图设计

从机单片机P1.0-P1.2口接ADC0809的A、B、C端,进行地址的选择。

P2口接ADC0809的OUT1-OUT8。

单片机ALE接四分频,四分频输出接ADC0809的CLK端。

P1.4接OE,P1.5接EOC,P1.6接ADC0809的START和ALE端。

图3从机电路设计图

3.2.2单片机之间的通信

单片机与MAX232的连接如图3.6所示

图4单片机与MAX232的连接图

3.2.3模数转换器ADC0809

1、ADC0809时序图

图5ADC0809的时序图

4软件部分

4.1简介KeilUvision2

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些组合在一起。

其使用的过程为:

新建工程、新建程序文件、把程序文件添加到工程文件开始调试[4]。

4.2主机程序设计

本软件系统有一个主程序,五个子程序,五个子程序分别为向串口发送数据子程序putc_to_serialport()键盘扫描子程序Keys_Scan()、LED显示子程序Display_Result(intd)、延时子程序Delay()主机串口接收中断子程序Serial_INT()interrupt4[5]。

图6主程序

图7向串口发送数据子程序putc_to_serialport()

图8LED显示程序Display_Result(intd)

图9键盘扫描子程序Keys_Scan()

图10主机串口接受中断子程序Serial_INT()interrupt4

4.3从机程序设计

该部分的程序包括一个主程序、三个子程序,三个子程序分别为从机串口接收中断函数Serial_INT()interrupt4、向串口发送数据子程序putc_to_SerialPort(ucharc)和模数转换子程序ADCON。

串口发送数据子程序如图7

图11主程序

图12模数转换子程序ADCON

图13从机串口接收中断函数Serial_INT()interrupt4

5调试结果

在整个系统中,主机用到了9个按键,按键0按下后,发送一个00H的数据给从机,而从机接收到这个信号就开始调用一个循环采集方式,按键1-8用于选择采集方式,分别送相应的采集线路的通道号给从机,然后再将从机转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;当主机没有按键按下时,则发送一个数F给LED[6]。

6总结

在翟老师充分了解每个学生对知识掌握程度的基础上,通过对论文知识体系以及框架结构的精心筛选,最终确定了我的论文设计内容。

在具体的设计过程中,翟老师不厌其烦的给与设计上的指导方案,实践、修正,再实践、再修正,反反复复最后设计完成。

这些给了我极大地帮助和动力。

这些总能让我在困惑的时候看到光明。

在此感谢翟老师的悉心指导,使我的毕业设计一步步走向完善,取得今天的成功。

参考文献

[1]严洁.单片机原理及其接口技术[M].机械工业出版社,2010:

65-105.

[2]范红刚.51单片机自学笔记[M].北京航空航天大学出版社,2009:

116-130.

[3]高云.基于MSP430的温室多路数据采集系统[M].西安电子科技大学出版社,2009:

No.8.

[4]常铁原,王欣,陈文军.多路数据采集系统的设计[M].电子工业出版社,2008:

No.11.

[5]李丽敏.基于单片机的多路数据采集系统的设计[M].电子科技大学出版社,2008:

No.4.

[6]彭伟.单片机C语言程序设计实训100例[M].电子工业出版社,2009:

104-110.

附录1

系统硬件电路仿真图:

附录2

主机电路程序

#include

#defineucharunsignedchar

#defineuintunsignedint

uintKeyNo;

sbitsmgd=P2^6;

sbitsmgk=P2^7;

ucharcodeLEDData[]={0X3F,0X06,0X5B,0X4F,0X66,

0X6D,0X7D,0X07,0X7F,

0X6F,0X77,

0X7C,0X39,0X5E,0X79,0X71};

voidDelay(uintt)//定义延时函数

{

registeruintbt;

for(;t;t--)

for(bt=0;bt<124;bt++);

}

/**************LED显示子程序***************/

voidDisplay_Result(intd)

{

smgk=1;

P0=0X7E;

smgk=0;

smgd=1;

P0=LEDData[d/100];

smgd=0;//显示百位

Delay(5);

smgk=1;

P0=0X7D;

smgk=0;

smgd=1;

P0=LEDData[(d%100)/10];//显示十位

smgd=0;

Delay(5);

smgk=1;

P0=0x7B;

smgk=0;

smgd=1;

P0=LEDData[d%100%10];//显示个位

smgd=0;

Delay(5);

smgk=1;

P0=0X77;

smgk=0;

smgd=1;

P0=0x80;

smgd=0;//显示小数点

Delay(5);

}

/************键盘扫描子程序**************/

voidKeys_Scan()

{ucharTmp,An;

P1=0XF0;//低四位置1,放入4行

Delay

(1);

An=P1^0XF0;//按键后11110000将变成XXXX0000,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1

Tmp=An>>4;//该表达式将高4位移到低四位

switch(Tmp)//判断按键发生在哪列

{

case1:

KeyNo=0;break;

case2:

KeyNo=1;break;

case4:

KeyNo=2;break;

case8:

KeyNo=3;break;

default:

KeyNo=16;//无键按下

}

P1=0X0F;//高4位置0,放入4列

Delay

(1);

Tmp=P1^0x0F;//改过处##//按键后00001111将变成0000XXXX,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1

switch(Tmp)//0-3行分别附加起始值0,4,8,12

{case1:

KeyNo+=0;break;

case2:

KeyNo+=4;break;

case4:

KeyNo+=8;break;

case8:

KeyNo+=12;break;

}

}

/********向串口发送数据子程序*********/

voidputc_to_serialport(ucharC)

{SBUF=C;

while(TI==0);//改过处

TI=0;

}

Display()

{smgk=1;

P0=0X07;

smgk=0;

smgd=1;

P0=0X0F;

smgd=0;

}

/*******主程序*******/

voidmain()

{P0=0x00;

SCON=0x50;//串口工作于方式1

TMOD=0x20;//T1工作于模式2

PCON=0x00;//波特率不加倍

TH1=0xFD;//波特率为9600

TL1=0xFD;

TI=RI=0;

TR1=1;//启动定时器1

IE=0x90;//允许串口中断

while

(1)

{Delay(100);

if(P1!

=0X0F)

Keys_Scan();

else

{switch(KeyNo)

{

case0:

putc_to_serialport(0X00);//循环按键即4列1行

break;

case1:

putc_to_serialport(0XF8);

break;

case2:

putc_to_serialport(0XF9);

break;

case3:

putc_to_serialport(0XFA);

break;

case4:

putc_to_serialport(0XFB);

break;

case5:

putc_to_serialport(0XFC);

break;

case6:

putc_to_serialport(0XFD);

break;

case7:

putc_to_serialport(0XFE);

break;

case8:

putc_to_serialport(0XFF);

break;

case16:

Display();

}

}

}

}

/*******主机串口接收中断函数*********/

voidSerial_INT()interrupt4

{inti,j,m;

longintn;

ucharc;

if(RI)

{RI=0;

c=SBUF;

Display_Result(c);

}}

从机电路程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitOE=P1^4;

sbitEOC=P1^5;

sbitST=P1^6;

voidDelay(uintx)

{

uchari;

while(x--)for(i=0;i<120;i++);

}

/********向串口发送数据子程序********/

voidputc_to_SerialPort(ucharc)

{SBUF=c;

while(TI==0);TI=0;

}

/*********A/D转换子程序*********/

voidAdcon()

{intj,m=0XF8;

ucharn;

for(j=0;j<8,P1=m;j++)

{ST=0;ST=1;ST=0;

while(EOC==0);

OE=1;

n=P2;

OE=0;

putc_to_SerialPort(n);

m++;

Delay(255);

}

}

/*******主程序*******/

voidmain()

{

TMOD=0X20;//T1工作于模式2

SCON=0X50;//串口工作于方式1

PCON=0X00;//波特率不加倍

TH1=0XFD;

TL1=0XFD;

TI=RI=0;

IE=0X90;//允许串口中断

TR1=1;//启动定时器1

while

(1)

{

}

}

/********从机串口接收中断函数********/

voidserial_INT()interrupt4

{uinti,c;

ucharval;

if(RI)

{

RI=0;

c=SBUF;

i=c&0X08;//判断接收到的第四位是否为1,如果为1,则按选定的通道采集,否则就是循环采集

switch(i)

{

case0:

Adcon();break;

case8:

P1=c;

ST=0;ST=1;ST=0;

while(EOC==0);

OE=1;

val=P2;

OE=0;

putc_to_SerialPort(val);

break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1