基于单片机的多路数据采集系统设计论文毕设论文.docx
- 文档编号:8768868
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:327.18KB
基于单片机的多路数据采集系统设计论文毕设论文.docx
《基于单片机的多路数据采集系统设计论文毕设论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的多路数据采集系统设计论文毕设论文.docx(20页珍藏版)》请在冰豆网上搜索。
基于单片机的多路数据采集系统设计论文毕设论文
基于单片机的多路数据采集系统设计
物理与电子信息学院电子信息科学与技术专业学号:
指导教师:
摘要:
本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。
本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。
数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机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;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 路数 采集 系统 设计 论文