基于单片机的多路数据采集系统设计论学士学位论文.doc

上传人:可**** 文档编号:93229136 上传时间:2023-07-01 格式:DOC 页数:20 大小:392KB
返回 下载 相关 举报
基于单片机的多路数据采集系统设计论学士学位论文.doc_第1页
第1页 / 共20页
基于单片机的多路数据采集系统设计论学士学位论文.doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《基于单片机的多路数据采集系统设计论学士学位论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的多路数据采集系统设计论学士学位论文.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于单片机的多路数据采集系统设计物理与电子信息学院 电子信息科学与技术专业 学号:指导教师:摘要:本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机AT89S52来实现,硬件部分是以单片机为核心,还包括A/D模数转换模块,显示模块,和串行接口部分。该系统从机负责数据采集并应答主机的命令。8路被测电压通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并

2、将转换后的数据通过串行口MAX232传输到上位机,由上位机负责数据的接受、处理和显示,并用LED数码显示器来显示所采集的结果。软件部分应用VC+编写控制软件,对数据采集系统、模数转换系统、数据显示、数据通信等程序进行了设计。关键词:数据采集;89C52单片机;ADC0809;MAX232The Design Of Multi-channel Data Acquisition System Based On SCM Li Zhe College of Physics and Electronic Information Electronic information science and tec

3、hnology No: 010414055Tutor: Zhai Yan-LeiAbstract: This article describes the hardware design and software design of the data on which based on signal-chip microcomputer .The data collection system is the link between the digital domain and analog domain. It has an very important function. The introd

4、uctive point of this text is a data to collect the system. The hardware of the system focuses on signal-chip microcomputer .Data collection and communication control use modular design. The data collected to control with correspondence to adopt a machine 8051 to carry out. The part of hardwares core

5、 is AT89S52, is also includes A/D conversion module, display module, and the serial interface. Slave machine is responsible for data acquisition and answering the host machine.8 roads were measured the electric voltage to pass the in general use mold-few conversion of ADC0809,the realization carries

6、 on the conversion that imitates to measure the numeral to measure towards the data that collect .Then send the data to the host machine through MAX232.the host machine is responsible for data and display, LED digital display is responsible display the data. The software is partly programmed with VC

7、+. The software can realize the function of monitoring and controlling the whole system. It designs much program like data-acquisition treatment,data-display and data-communication ect.Key words: AT89C52; ADC0809; MAX232 目 录摘要1目 录31 引言61.1 研究背景及其目的意义61.2 国内外研究现状61.3 该课题研究的主要内容内容62 数据采集72.1 数据采集系统72.

8、2 方案器件选择82.2.1 A/D模数转换的选择.82.2.2单片机的选择.82.2.3 串行口的选择82.2.4 显示部分82.2.5 按键83 硬件电路83.1 主机电路83.1.1 主机电路原理图设计83.1.2 单片机83.1.3 LED数码显示器的应用原理93.2 从机电路93.2.1 从机电路原理图设计93.2.2 单片机之间的通信93.2.3 模数转换器ADC0809104 软件部分104.1 简介KeilUvision2104.2 主机程序设计114.3 从机程序设计145 调试结果166 总结16参考文献16附录116附录21731 引言1.1 研究背景及其目的意义近年来,

9、数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统,目标是测试中不依靠相关的测试文。20世纪70年代后期,数据采集系统发展过程中逐渐分为两类,一类是实验室数据采集系统,一类是工业现场数据采集系统1。20世纪80年代随着计算机的普及应用,数据采集系统得到了很大的发展,开始出现了通用的数据采集与自动测试系统。该阶段的数据采集系统主要有两类,一类以仪表仪器和采集器、通用接口总线和计算机组成。第二类以数据采集卡、标准总线和计算机构成。20世纪90年代至今,该阶段的数据采集

10、系统采用模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速组成一个新的系统。1.2 国内外研究现状数据采集系统是通过采集传感器输出的模拟信号并转换成数字信号,并进行分析、处理、传输、显示、存储和显示。它起始于20世纪中期,在过去的几十年里,随着信息领域各种技术的发展,在数据采集方面的技术也取得了长足的进步,采集数据的信息化是目前社会的发展主流方向。1.3 该课题研究的主要内容内容数据采集技术是信息科学的重要分支之一, 它研究信息数据的采集、存储、处理以及控制等问题。本系统采用下位机负责模拟数据的采集,从单片机负责采集八路数据,并应答主机发送的命令

11、,上位机即主机是负责处理接受过来的数字量的处理及显示,主机和从机之间用RS-232进行通信。2 数据采集2.1 数据采集系统数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。在该系统中需要将模拟量转换为数据量,而 A/D是将模拟量转换为数字量的器件。在该系统中采用的是8051系列的单片机。它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。双机通信的串行口可以采用RS232C标准接口,由芯片MAX232实现双机的通信。而数据的显示则采用的是LED数码管,在生活中接触也较多2。完成毕业设计所需要的系统框图如图2.1所示:A/

12、D转换器单片机单片机LED显示器键盘MAX232采集信号图1 系统框图2.2 方案器件选择2.2.1 A/D模数转换的选择:在本设计选用的是逐渐逼近式A/D转换器ADC0809.2.2.2单片机的选择:而本设计选用的是AT89C52.2.2.3 串行口的选择:该串行口我选用了标准RS-232C接口,常用的芯片是MAX232。2.2.4 显示部分:本设计选用的是八段发光二极管数码显示器。采用动态扫描显示法。2.2.5 按键键盘是一种常见的输入设备,用户可以向计算机输入数据或命令。非编码键盘有两种方法:一种是独立按键接口;另一种是矩阵式按键接口。该系统曹勇矩阵式按键。3 硬件电路3.1 主机电路

13、该系统是一个主从式多路数据采集系统,它的主机包括按键和显示两部分。3.1.1 主机电路原理图设计图2 主机电路原理图3.1.2 单片机P0口用来显示显示数据,由于P0口输出两路数据,所以需要连接74HC573,进行数据的锁存和传输,并由P2.6和p2.7控制。P1口接按键进行采集通道的选择。3.1.3 LED数码显示器的应用原理简单的讲,LED数码显示器就是由发光二极管组成的LED数码显示器有两种连接方式:共阴极接法;共阳极接法。该系统上采用共阴极接法3。 3.2 从机电路 3.2.1 从机电路原理图设计从机单片机P1.0-P1.2口接ADC0809的A、B、C端,进行地址的选择。P2口接AD

14、C0809的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 模数转换器ADC08091、ADC0809时序图 图5 ADC0809的时序图4 软件部分4.1 简介KeilUvision2Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些组合在一起。其使用的过程

15、为:新建工程、新建程序文件、把程序文件添加到工程文件开始调试4。4.2 主机程序设计本软件系统有一个主程序,五个子程序,五个子程序分别为向串口发送数据子程序putc_to_serialport()键盘扫描子程序Keys_Scan()、LED显示子程序Display_Result(int d)、延时子程序Delay()主机串口接收中断子程序Serial_INT() interrupt 4 5。开始初始化启动定时器1开中断再根据扫描到的键盘号,发送相应的数据给串口。调用一个Display()在LED上显示F判断是否有按键按下YN图6主程序数据发送到串行口当T1=0时,则传送结束TI=0图7 向串口

16、发送数据子程序putc_to_serialport() 开始显示个位显示十分位显示百分位显示小数点结束图8 LED显示程序Display_Result(int d)开始先将低4位置1选定4行然后判断该按键发生在哪一列是否有按键按下将列数赋给KeyNoKeyNo=16将高4位置1选定4列再判断发生在那一行03行分别附加起始值0,4,8,12返回NY图9键盘扫描子程序Keys_Scan()开始接受数据对数据进行相关处理调用Display_Result(m)图10 主机串口接受中断子程序Serial_INT() interrupt 44.3 从机程序设计该部分的程序包括一个主程序、三个子程序,三个子

17、程序分别为从机串口接收中断函数Serial_INT() interrupt 4、向串口发送数据子程序putc_to_SerialPort(uchar c)和模数转换子程序ADCON。串口发送数据子程序如图7。开始初始化启动定时器1开中断调用Adcon()结束图11 主程序开始选定通道号开始转换转换结束将得到的数据发送给串口结束图12 模数转换子程序ADCON开始接收串口数据判断接受到的数据第4位是否为1YN按选定的通道号采集选定循环采集方式结束图13 从机串口接收中断函数Serial_INT() interrupt 45 调试结果在整个系统中,主机用到了9个按键,按键0按下后,发送一个00H的

18、数据给从机,而从机接收到这个信号就开始调用一个循环采集方式,按键1-8用于选择采集方式,分别送相应的采集线路的通道号给从机,然后再将从机转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;当主机没有按键按下时,则发送一个数F给LED 6。6 总结在翟老师充分了解每个学生对知识掌握程度的基础上,通过对论文知识体系以及框架结构的精心筛选,最终确定了我的论文设计内容。在具体的设计过程中,翟老师不厌其烦的给与设计上的指导方案,实践、修正,再实践、再修正,反反复复最后设计完成。这些给了我极大地帮助和动力。这些总能让我在困惑的时候看到光明。在此感谢翟老师的悉心指导,使我的毕业设计一步步走

19、向完善,取得今天的成功。参考文献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主机电路程序

20、19#include#define uchar unsigned char#define uint unsigned intuint KeyNo;sbit smgd=P26;sbit smgk=P27;uchar code LEDData=0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07, 0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79, 0X71; void Delay(uint t) /定义延时函数register uint bt;for(;t;t-)for(bt=0;bt4; /该表达式将高4位移到低四位 switch(Tmp) /判断

21、按键发生在哪列 case 1:KeyNo=0;break; case 2:KeyNo=1;break; case 4:KeyNo=2;break; case 8:KeyNo=3;break; default: KeyNo=16; /无键按下P1=0X0F; /高4位置0,放入4列Delay(1);Tmp=P10x0F; /改过处# / 按键后00001111将变成0000XXXX,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1 switch(Tmp) /0-3行分别附加起始值0,4,8,12 case 1:KeyNo+=0;break; case 2:KeyNo+=4;

22、break; case 4:KeyNo+=8;break; case 8:KeyNo+=12;break;/*向串口发送数据子程序*/void putc_to_serialport(uchar C) SBUF=C; while(TI=0); /改过处TI=0;Display() smgk=1; P0=0X07; smgk=0; smgd=1; P0=0X0F; smgd=0; /*主程序*/ void main() P0=0x00; SCON=0x50; /串口工作于方式1 TMOD=0x20; /T1工作于模式2 PCON=0x00; /波特率不加倍 TH1=0xFD; /波特率为9600

23、TL1=0xFD; TI=RI=0; TR1=1; /启动定时器1 IE=0x90; /允许串口中断 while(1) Delay(100); if(P1!=0X0F) Keys_Scan(); else switch(KeyNo) case 0:putc_to_serialport(0X00); /循环按键即4列1行 break; case 1:putc_to_serialport(0XF8); break; case 2:putc_to_serialport(0XF9); break; case 3:putc_to_serialport(0XFA); break; case 4:putc_

24、to_serialport(0XFB); break; case 5:putc_to_serialport(0XFC); break; case 6:putc_to_serialport(0XFD); break; case 7:putc_to_serialport(0XFE); break; case 8:putc_to_serialport(0XFF); break; case 16:Display(); /*主机串口接收中断函数*/void Serial_INT() interrupt 4 int i,j,m; long int n; uchar c;if(RI) RI=0; c=SBU

25、F; Display_Result(c); 从机电路程序# include #define uchar unsigned char#define uint unsigned intsbit OE=P14;sbit EOC=P15;sbit ST=P16;void Delay(uint x) uchar i;while(x-) for(i=0;i120;i+);/*向串口发送数据子程序*/void putc_to_SerialPort(uchar c) SBUF=c; while(TI=0);TI=0;/*A/D转换子程序*/void Adcon() int j,m=0XF8; uchar n;

26、 for(j=0;j8,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);/*主程序*/void main() TMOD=0X20; /T1工作于模式2 SCON=0X50; /串口工作于方式1 PCON=0X00; /波特率不加倍 TH1=0XFD; TL1=0XFD; TI=RI=0; IE=0X90; /允许串口中断 TR1=1; /启动定时器1 while(1) /*从机串口接收中断函数*/void serial_INT() interrupt 4 uint i,c; uchar val;if(RI) RI=0; c=SBUF; i=c&0X08; /判断接收到的第四位是否为1,如果为1,则按选定的通道采集,否则就是循环采集 switch(i) case 0: Adcon();break; case 8: P1=c; ST=0;ST=1;ST=0; while(EOC=0); OE=1; val=P2;OE=0; putc_to_SerialPort(val); break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁