《基于单片机8位数据采集设计大学学生毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机8位数据采集设计大学学生毕业论文.doc(21页珍藏版)》请在三一办公上搜索。
1、甘肃联合大学学生毕业论文 题 目:基于单片机8位数据采集设计 作 者: 指导老师: 电子信息工程 学院 电子信息工程技术系 电子信息工程技术 专业 11 级 三 年制 一 班2013年10月14日 基于单片机的8位数据采集设计The Design Of Multi-channel Data Acquisition System Based On SCM摘要本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有非常重要的作用。本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。数据采集与通信控制采用了模块化的设计,数据采集与通
2、信控制采用了单片机AT89S52来实现,硬件部分是以单片机为核心,还包括A/D模数转换模块,显示模块,和串行接口部分。该系统从机负责数据采集并应答主机的命令。8路被测电压通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并将转换后的数据通过串行口MAX232传输到上位机,由上位机负责数据的接受、处理和显示,并用LED数码显示器来显示所采集的结果。软件部分应用VC+编写控制软件,对数据采集系统、模数转换系统、数据显示、数据通信等程序进行了设计。关键词:数据采集 AT89S52单片机 ADC0809 MAX232AbstractThis article desc
3、ribes 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 introductive point of this text is a data to collect the system. The hard
4、ware 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 is AT89S52, is also includes A/D conversion module, display module
5、, 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 on the conversion that imitates to measure the numeral to measure
6、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+. The software can realize the function of monitoring and controll
7、ing the whole system. It designs much program like data-acquisition treatment,data-display and data-communication ect.Keyword: data acquisition AT89S52 ADC0809 MAX232目录第一章 绪论3第二章 数据采集系统简介3第三章 硬件部分83.1主机部分83.1.1 主机部分原理图设计83.2 从机部分133.2.1 从机的电路原理图设计13第四章 软件部分224.1 主机程序设计264.2 从机部分程序设计30第五章 调试结果33致谢36参
8、考文献37附录140第 一 章 绪 论传统的基于单片机的数据采集系统由于没有上位机的支持,不管采用什么样的数据存储器,它的存储容量都是有限的,所以不得不对存储的历史数据进行覆盖刷新,这样不利于用户对数据进行整体分析,因而也不能对生产过程的状况进行准确的把握。本系统采用下位机负责模拟数据的采集,从单片机负责采集八路数据,并应答主机发送的命令,上位机即主机是负责处理接受过来的数字量的处理及显示,主机和从机之间用RS-232C进行通信。这样用户可以在上位机上编写各种程序对文件中的数据进行有效查询和分析,有利于工业过程的长期正常运行和检查。该系统采用的是AT89S52单片机,此芯片功能比较强大,能够满
9、足设计要求。第二章 数据采集系统简介数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。在该系统中需要将模拟量转换为数据量,而 A/D是将模拟量转换为数字量的器件,他需要考虑的指标有:分辨率、转换时间、转换误差等等。而单片机是该系统的基本的微处理系统,它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。在该系统中采用的是8051系列的单片机。双机通信的串行口可以采用RS-232-C标准接口,由芯片MAX232实现双机的通信。而数据的显示则采用的是LED数码管,该器件比较简单,在生活中接触也较多。数据采集系统一般由信号调理电路
10、,多路切换电路,采样保持电路,A/D,单片机等组成。所需要的系统框图如图2.1所示:A/D转换器单片机单片机LED显示器键盘MAX232采集信号图2.1 系统框图第三章 硬件部分3.1主机部分该系统是一个主从式多路数据采集系统,主机和从机均用单片机实现,它的主机部分负责数据处理和显示,主机和从机之间用RS-232进行通信。它由AT89S52、MAX232、LED数码显示器组成。3.1.1 主机部分原理图设计由于主机要对从机有一个命令,所以用到按键,将按键接到单片机AT89S52的P3.4的端口上,按键的一端接地,当P3.4这条I/O线是一个低电平时,则表示按键按下。主机还要负责对采集到的数据进
11、行处理和LED显示,用两个74HC573,一个与单片机AT89S52的P2.7口相连用于位选,一个与单片机AT89S52的P2.6口相连用于段选。单片机的P0口的8位数据线与用于段选的74HC573的D0D7相连,用于数码管上具体的数字的显示。单片机P0口的八位数据线与用于位选的74HC573的D0D7相连,用于在哪个数码管上显示。主机跟从机的连接,又涉及到一个串行口双机通信的问题,根据单片机双机通信距离、抗干扰性等要求,选择RS-232-C串行接口方法,选择串行口MAX232来连接主机和从机,将MAX232的11、12脚分别与单片机AT89S52的P3.1,P3.2脚相连,再将MAX232上
12、的13、14脚分别与db-9的3、6脚相连。单片机AT89S52的18、19脚与它的晶振电路相连,第9脚与它的复位电路相连。其原理图如图3.1所示图3.1主机部分电路原理图3.2 从机部分 该系统的从机负责A/D模数转换,并应答主机的命令,需要用到ADC0809、AT89S52,又由于它们两个的时钟频率不一样,所以又要用到一个74LS74。3.2.1 从机的电路原理图设计该部分需要对模拟量进行一次模数转换,则要用到一个ADC0809,又因为它们之间的时钟频率不一样又需要用到一个74LS74对其进行一个二分频的工作,这个只需要将74LS74的第3根引脚与单片机AT89S52的第30根引脚相连,将
13、74LS74 的第9根引脚与ADC0809的时钟信号引脚相连。单片机AT89S52的P0口与ADC0809的D0D7相连,而ADC0809的ADDA、ADDB、ADDC分别与P0口的低三位相连。其用到的MAX232与主机部分的电路连接方法一样。其电路图如3.5所示 图3.5 从机部分电路设计图第四章 软件部分4.1 主机程序设计本软件系统有一个主程序,五个子程序,五个子程序分别为向串口发送数据子程序putc_to_serialport()、键盘扫描子程序Keys_Scan()、LED数据显示子程序Display_Result(int d)、延时子程序Delay()、主机串口接受中断子程序Ser
14、ial_INT() interrupt 4。(1)主程序主程序对系统进行初始化,主要是进行定时/计数的初始化,然后调用键盘扫描程序Keys_Scan(),再根据按下的键来调用向串口发送数据子程序putc_to_serialport()将相应的数据发送给串行口。当没有键按下时,则送一个数F给LED显示器。其流程图见图4.1(2)向串口发送数据子程序putc_to_serialport() 该程序首先将数据发送到串行口,当T1=0时,表明传送结束。其流程图如4.2所示(3)键盘扫描子程序Keys_Scan() 该程序是先将行选好,然后再选定列就可以确定到具体的哪一个按键。其流程图如图4.3所示(4
15、)LED显示程序Display_Result(int d)该子程序用的数码管动态显示方式。先将单片机的P2.7口选通进行位选,然后将位选的值发送给单片机P1口。接着将单片机的P2.6口选通进行段选,然后将要显示的数字的值发送给P0口。然后调用延时,接着将P2.7、P2.6口置0,下面是重复上面的过程,直到要显示的数字全部显示在数码上。其流程图如4.4所示。(5)主机串口接受中断子程序Serial_INT() interrupt 4。当RI =1时,接受串口过来的数据,并对该数据进行X*05H/0FFH的处理,接下来用处理过的数据调用LED显示程序Display_Result(int d)。如图
16、4.4所示开始初始化启动定时器1开中断再根据扫描到的键盘号,发送相应的数据给串口,调用一个Display()在LED上显示F判断是否有按键按下YN图4.1主程序数据发送到串行口当T1=0时,则传送结束TI=0图4.2 向串口发送数据子程序putc_to_serialport() 开始先将低4位置1选定4行然后判断该按键发生在哪一列是否有按键按下YN将列数赋给KeyNoKeyNo=16将高4位置1选定4列再判断发生在那一行03行分别附加起始值0,4,8,12返回图4.3键盘扫描子程序Keys_Scan()开始显示个位显示十分位显示百分位显示小数点结束图4.4 LED显示程序Display_Res
17、ult(int d)开始接受数据对数据进行相关处理调用Display_Result(m)图4.5 主机串口接受中断子程序Serial_INT() interrupt 44.2 从机部分程序设计该部分的程序包括一个主程序、三个子程序,三个子程序分别为从机串口接受中断函数Serial_INT() interrupt 4、向串口发送数据子程序putc_to_SerialPort(uchar c)和模数转换子程序ADCON。(1)主程序主程序是进行系统的初始化,由于主从两个单片机要进行通信,所以两个单片机的初始化应该是相同的,并调用A/D转换。其流程图如图4.6所示(2)从机串口接受中断函数Seria
18、l_INT() interrupt 4因为发送完成和接受到新字节都会触发串口中断,因此串口中断程序里用if(RI)来表示接受中断,然后将RI清0。再判断接受到的数据第4位是否为1,如果为1,则按照主机发送过来的通道进行采集,如果为0,则调用循环采集程序。如图4.7所示(3)模数转换子程序ADCON先要选通ADC0809,又因为ADC0809具有8个通道,利用For循环进行8次采集,接下来选择转换通道,F8HFFH用以选择输入模拟信号的通道IN0IN7的选择,首先从第一个通道开始,然后执行一条读取转换结果的指令,再将转换得到的结果送给串行口,再依次循环,将通道号自增1,直到8个通道全部转换完。其
19、流程图如图4.8所示(4)向串口发送数据子程序putc_to_SerialPort(uchar c)程序首先将数据发送到串行口,当T1=0时,表明传送结束。如图4.2所示开始初始化启动定时器1开中断调用Adcon()结束图4.6 主程序开始接收串口数据判断接受到的数据第4位是否为1YN按选定的通道号采集选定循环采集方式结束图4.7 从机串口接受中断函数Serial_INT() interrupt 4开始选定通道号开始转换转换结束将得到的数据发送给串口结束图4.8模数转换子程序ADCON第五章 调试结果 这个系统是一个主从式的数据采集系统。系统调试以程序为主,硬件调试应先检测电路的焊接是否正确,
20、然后用外用表检测或通电检测其是否有短路或断路。软件调试包括调试程序和对硬件准确性的调试。在整个系统中,主机用到了9个按键,按键0按下后,发送一个00H的数据给从机,而从机接收到这个信号就开始调用一个循环采集方式,然后从机采集完数据后再将转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;按键1-8用于选择采集方式,分别送相应的采集线路的通道号给从机,然后再将从机转换好的数据和采集线路的通道号发送给主机并用LED数据。致谢大学三年学习时光已经接近尾声,在此我想对我的母校,我的父母、亲人们,我的老师和同学们表达我由衷的谢意。感谢我的家人对我大学三年学习的默默支持;感谢我的母校兰州
21、文理学院给了我在大学三年深造的机会,让我能继续学习和提高;感谢兰州文理学院的老师和同学们三年来的关心和鼓励。老师们课堂上的激情洋溢,课堂下的谆谆教诲;同学们在学习中的认真热情,生活上的热心主动,所有这些都让我的三年充满了感动。 这次毕业论文设计我得到了很多老师和同学的帮助,其中我的论文指导老师苑老师对我的关心和支持尤为重要。每次遇到难题,我最先做的就是向苑老师寻求帮助,而苑老师每次不管忙或闲,总会抽空来找我面谈,然后一起商量解决的办法。苑老师平日里工作繁多,但我做毕业论文的每个阶段,从选题到查阅资料,论文提纲的确定,中期论文的修改,后期论文格式调整等各个环节中都给予了我悉心的指导。这几个月以来
22、,苑老师不仅在学业上给我以精心指导,同时还在思想给我以无微不至的关怀,在此谨向苑老师致以诚挚的谢意和崇高的敬意。感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,在此,我再一次真诚地向帮助过我的老师和同学表示感谢! 参考文献1 严洁.单片机原理及其接口技术.机械工业出版社,2010,65-1052 范红刚.51单片机自学笔记.北京航空航天大学出版社,20093 高云.基于MSP430的温室多路数据采集系统.农机化研究,2009,No.84 常铁原,王欣,陈文军. 多路数据采集系统的设计.电子技术应用,2008,No.115 叶红海,李丽敏.基于单片机的多路数据采集
23、系统的设计与实现.2008,No.46 彭伟.单片机C语言程序设计实训100例.电子工业出版社,2009,46-48,104-1107 杨居义,杨晓琴,王益斌等.单片机课程设计指导.清华大学出版社,2009,135-1418 刘刚,秦永左,朱杰斌.单片机原理及应用.北京大学出版社,2006,76-98,134-1559 林祝亮,武林,杨金华.基于双单片机的多路数据采集系统设计.仪器仪表学报,2006,No.610 元增民,张文希.单片机原理与应用基础.国防科技大学出版社,2006,205-26611 王琳,商周,王学伟.数据采集的发展及应用.电测与仪表,2004,No.46412 V. Sch
24、midt, Control, data acquisition, and remote participation for fusion research, Fusion Eng. Des. 81 (2006) 17021712. 13 A.Neto,H.Fernandes,A.Duarte, Firesignal-Data acquisition and control system software.FusionEngineering and Design 82(2007)1359-1364.附录1主机部分程序#include#define uchar unsigned char#defi
25、ne uint unsigned intsbit k1=P34;sbit smgd=P26;sbit smgk=P27; uchar Pre_KeyNo=16,KeyNo=16;uchar code LEDData=0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07, 0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79, 0X71/*延时子程序*/void Delay(uint x) uchar i; while(x-)for(i=0;i4; /该表达式将高4位移到低四位 swith(Tmp) /判断按键发生在哪列 case 1:KeyNo=0;b
26、reak; case 2:KeyNo=1;break; case 4:KeyNo=2;break; case 8:KeyNo=3;break; default: KeyNo=16; /无键按下P3=0X0F; /高4位置0,放入4列Delay(1);Tmp=P30xF0; / 按键后00001111将变成0000XXXX,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1 switch(Tmp) /03行分别附加起始值0,4,8,12 case 1:KeyNo+=0;break; case 2:KeyNo+=4;break; case 4:KeyNo+=8;break; c
27、ase 8:KeyNo+=12;break;/*向串口发送数据子程序*/void putc_to_serialport(uchar C) SBUF=C; while(T1=0);TI=0;Display() smgK=1; P1=0X01; Smgd=1; P0=OXOF; /*主程序*/ void main() P0=0x00; SCON=0x50; /串口工作于方式1 TMOD=0x20; /T1工作于模式2 PCON=0x00; /波特率不加倍 TH1=0xFD; /波特率为9600 TL1=0xFD; TI=RI=0; TR1=1; /启动定时器1 IE=0x90; /允许串口中断 w
28、hile(1) Delay(100); if(P3!=0X0F) Keys_Scan(); swith(KeyNo) case 0:putc_to_serialport(0X00); 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_to_serialport(0XFB); break; case 5:putc_to_serialport(0XFC); break; c
29、ase 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 if(RI) int i,j,m; long int n; uchar c; c=SBUF; i=c*0x05; j=i*0x10; n=j*0x10; m=n/0xFF; Display_Result(m); 从机部分程序# includ
30、e #define uchar unsigned char#define uint unsigned intsbit ST=P32;sbit EOC=P36;sbit OE=P37;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; for(j=0,P0=m;j+;j8) ST=0;ST=1;ST=0;
31、 while(EOC=0); OE=1; n=P1; putc_to_SerialPort(n); m+;/*主程序*/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) Delay(100); Adcon();/*从机串口接受中断函数*/void serial_INT() interrupt 4if(RI) RI=0; int i,c; uchar val; c=SBUF; i=c&0X08; /判断接收到的第四位是否为1,如果为1,则按选定的通道采集,否则就是循环采集 switch(i) case 0: Adcon();break; case 8: P0=c; ST=0;ST=1;ST=0; while(EOC=0); OE=1; val=P0; putc_to_SerialPort(val); break;