单片机设计的多路数据采集_第1页
单片机设计的多路数据采集_第2页
单片机设计的多路数据采集_第3页
单片机设计的多路数据采集_第4页
单片机设计的多路数据采集_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . 2009 届本科毕业设计 基于单片机设计的多路数据采集系统 姓 名:系 别: 物理与信息工程系 专 业:电子信息工程 学号:指导教师:2009年 03 月 日基于单片机设计的多路数据采集系统摘要:本文介绍一种基于AT89S52单片机设计的多路数据采集系统,本设计采用上位机软件显示单片机采集的多路数据,并可直接通过上位机软件按钮对单片机硬件系统进行控制,软硬件构成与用户之间的信息交换界面。正文着重给出了硬件系统的各部分电路,介绍了AD检测器件的控制原理、AT89S52的功能与应用、串口通信的电路原理应用、24C存储器实际应用等部分容。该电路设计实用性强、应用领域广、可扩展性强。关

2、键词:MAX232,AT89S52,24C02,ADC0832,MC34063Abstract :This paper presents a design based on single-chip AT89S52 Multiplex data acquisition system, the circuit PC software display of single-chip multi-channel data acquisition, and directly through the PC software, hardware button on the single-chip system

3、 control, hardware and software constitute the exchange of information between the user interface. Body focused on the hardware systems give the various parts of the circuit, introducing AD control theory Detected devices, AT89S52 the function and application of the principle of serial communication

4、 circuit applications, 24C memory part of the contents of the actual applications. The circuit design of practical applications Canton, scalability strong.Key Words : MAX232,AT89S52,24C02,ADC0832,MC34063一、 前言多路数据采集系统(Multi-channel Data Acquisition System)下文中简称Mcdas,它是采用数字监测技术,把用户需要检测的信息(模拟量)转换成数字形式并

5、加以显示的硬件系统,硬件系统所采集的数据通过自编特定的PC软件来进行显示与数据交换,并可进行对硬件的实时控制。本系统在工控领域应用宽广,在制造业上亦可用到多路数据监测系统中,方便用户的生产与管理。下文中将详细解说本系统的各部分设计要点。二、 系统基本框图与设计原理1、系统基本方框图如图1.1所示,Mcdas的原理框图,总体规划了整个系统的各部分电路所需要实现的功能,以与扩展部分的功能。两路AD采集单片机AT89S52模拟量1单片机模拟量2示温度采集24C02数据存储RS232串口通信上位机软件PC机 LED1、2、3指示灯受控设备1两路继电器控制扩展接口,可扩展液晶显示器、按键和其它电路MC3

6、4063 5V升12V备用电源受控设备2系统+5V供电接口ISP程序升级接口图1.1系统基本方框图2、硬件设计原理.下面将结合元器件的应用来详细说明系统各部分硬件的控制原理。(1)、单片机AT89S52的简介。对单片机的要求:能够方便地扩展AD检测、数据存储、串行通信以与输出控制IO等外设即可。常见的单片机有8051系列的单片机、8096系列的单片机、SPCE061A的凌阳单片机。8位的8051单片机比较普遍用于电子制作方面,且初学者均能快速掌握指令并能够熟练使用,故本Mcdas选择8051系列的AT89S52为主芯片, 该芯片具有低功耗、高性能的特点,是采用CMOS工艺的8位单片机.如下图2

7、.1为AT89S52单片机的引脚说明图。图2.1.1 AT89S52引脚说明 AT89S52性能兼容同系列的AT89C52,而且具有在线下载代码的功能,简称为ISP下载功能,芯片不用拨离所连接的电路即可通过规定的几只引脚进行代码的烧录,在产品的调试以与生产时使用此方法烧写代码极为方便。ISP下载电路需使用上位机软件通过PC的并口(25针打印机接口)进行控制才能向芯片烧录代码。如图2.2为ISP与单片机的连接电路图。图2.1.2 ISP下载电路与单片机的连接ISP下载电路使用了一片74HC373锁存器芯片,PC上的软件控制并口输出的信号通过锁存器进行锁存,再由单片机读取,而单片机发出的控制请求信

8、号同样由74HC373锁存后再传送到PC,由此形成一个双向通信电路,用特定的命令完成对芯片的烧录。(2)、LED指示灯电路LED指示灯电路是许多电子产品上不可缺少的一部分,因为这是智能化产品与人之间的信息交互的重要途径之一,LED指示灯电路比较简单,只要单片机的IO给予LED一个高或低电平就能使它亮或灭,在设计中用户可以选择不同颜色光以与不同规格大小的LED,如下图2.2.1给出这部分电路与单片机之间的连接方法。 图2.2.1 LED指示电路连接图LED指示灯在实际应用中应该串联一只100欧-1K欧的电阻进行分流,以防止单片机IO口的灌电流过大将LED损坏。本系统的LED指示灯可通过PC上位机

9、控制亮与灭,下文中将述串行通信部分容。(3)、继电器控制电路。继电器的参数特点在此处不再作多余的述。本Mcdas中的两路继电器可用于控制外部设备线路的电源或信号的通断,以达到自动化效果(通过PC软件定时输出控制)。实际电路中因多种继电器的工作参数不同而对驱动的电流需求也不同,在保证继电器工作稳定之下需采用三极管作扩流驱动,下图2.3.1中采用了两只PNP三极管,由AT89S52单片机的IO电平拉低控制三极管以驱动继电器工作。图2.3.1 继电器驱动电路连接图(4)、铁电存储器24C02的应用。 在电子仪器设备上我们常见到的数据设置与数据采集,这些数据可以直接用液晶屏或LED数码管显示出来,便于

10、用户了解仪器设备的工作状态,但用户需要在下一次开机时得到上一次运行的数据状态,那么这里面就涉与到数据的存储功能了。本Mcdas采用了最常见的低成本串行铁电存储器24C02(128Bye),它具有128位存储地址0X00-0X7F,可以通过串行控制信号把数据写入指定的存储地址,在下一次开机时再将指定地址的数据读出赋值给软件的一些变量,后面的函数体将说明对存储器的控制步骤。24C02与单片机的连接如下图2.4.1 。图2.4.1 24C02与单片机的连接图(5)、ADC检测器件ADC0832的应用电路。本系统硬件设定了两路AD检测输入,通过单片机处理采集到的数据后再发送到上位机软件显示出来,同时也

11、通过软件对被采集的模拟量进行监测。在要求精度不高的场合可以采集国家半导体设计的串行接口8位精度ADC检测器件:ADC0832,它可以同时从两个通道输入0-5V电压,并通过片选信号决定采集哪一通道的电压数据,在数据锁存后以串行的方式传输给单片机处理,它的参考电压以VCC为基准,无负压检测功能,故在模拟量输入时需要注意电压极性。下图为ADC0832与AT89S52的连接图。图2.5.1 ADC0832与AT89S52的连接图(6)、RS232串行通信硬件电路。AT89S52单片机部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送

12、数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。AT89S52的串行口有4种工作方式,1种同步方式,3种异步方式。本方式选方式1,一帧数据有10位,包括起始位0、8位数据位和1位停止位1。串行口电路在发送时能自动加入起始位和停止位。在接收时,停止位进入SCON中的RB8位。方式1的波特率是可变的,由定时器1的溢出率决定。由定时器1最好工作在方式2上(自动重装载模式),这样只需对TH1设置一次即

13、可。数据通过TXD输出,在8个位输出完毕后,SCON寄存器的TI位被设为1,CPU只要判断TI是1,接着发送下一个字节。波特率的设定:定时器T1工作在方式2的初值为:(1.1)为了减小误差,时钟振荡频率采用11.0592MHz,选用定时器T1工作在方式2作波特率发生器,波特率为4800,设SMOD为0,依公式(1.1)得初值为:FAH所以TH1 = TL1 = FAH TMOD =0x20; TIME1工作在方式2上SCON =0x50; URAT工作在方式1上 TH1 =0xFa; 设置波特率为4800 TL1 =0XFa; 串行信号的电平转换主要由MAX232A电路完成,如下图2.6.1。

14、 ( 注:可将MAX232芯片资料写详细,比如:产生正负电压,电平转换的方式,硬件中电容的取值与传输速率的关系等。)图2.6.1 串口电平转换芯片MAX232A与AT89S52的连接图 (7)、系统电源电路 1)、硬件采用USB供电插口,可直接在PC机的USB插座取电,也可使用外部+5VDC适配器连接供电给系统。适配器的电源次级以最常见的三端稳压模块LM7805构成一个+5V的电源,它的输入与输出端分别并接一个0.1uF的瓷片电容,防止电源中的高频进入到单片机电路中造成干扰,同时ADC检测器件以VCC的5V为基准源,为了AD采集数据的准确性,其它外挂大电流设备不可直接由此电源提供,需要另设电源

15、。 电路如下图2.7.1。 图2.7.1 适配器的+5V电源电路2)、硬件上设计了12VDC备用电源,由系统的VCC+5V电源升压所得,电流限制在100Ma以下,可供给AD检测的前端输入比较器电路使用,或作其它用途,升压器件使用低功耗(空载耗电流为3Ma)的MC34063,电路如下图2.7.2。图2.7.2 MC34063升压电路(8)、系统整体电路本电路图由电路仿真软件Proteus 6绘制完成。图2.8.1 系统整体电路3、系统软件的设计 软件代码使用KEIL编译器进行编写,程序由数个电路的控制函数组成,下面逐个函数作详细分析,先给出主程序的流程框图,如图3.0。程序开始初始化端口进入循环

16、体AD采集温度采集中断接收初始化定时器Intbufer=1/2,LED1亮/灭Intbufer=5/6,LED3亮/灭Intbufer=3/4,LED2亮/灭Intbufer=7/8,JK1通/断Intbufer=9/10,JK2通/断Intbufer=11,发送电压和温度数据Intbufer=12,写24C数据Intbufer=13,读24C数据图3.0 系统主程序流程框图 (1)、头文件的定义。 本系统程序采用了模块化设计,首先将主程序调用到的容定义在一个特定的文件里,然后在主程序运行之前声明这部分定义的容,那么程序就能遵循从上到下去执行用户赋予的命令了。先了解下面这段特定的头文件dyio

17、.h。#include "reg52.h" /调用C51库文件#include <intrins.h> /调用此文件主要是应用部的_nop_();函数#define uint unsigned int /声明变量类型转义符,文中用uint代替int#define uchar unsigned char/同上#define delayNOP(); _nop_();_nop_();_nop_();_nop_();/声明延时函数/一些控制IO定义/sbit sda= P24; /24C02数据线5sbit scl= P23; /24C02时钟线6/LED控制IO定义/

18、sbit LED1= P20; /状态指示灯1sbit LED2= P21; /状态指示灯2sbit LED3= P22; /状态指示灯3/继电器控制IO定义/sbit j1 =P36;sbit j2 =P37;/ADC0832控制IO定义/sbit ADCS =P35; /ADC0832 chip seclect片选sbit ADDI =P34; /ADC0832 k in 数据输入sbit ADDO =P34; /ADC0832 k out 数据输出sbit ADCLK =P33; /ADC0832 clock signal 时钟/一些变量定义/uchar x=0;uint vol,vol

19、1,vol2,temp;/电压变量uchar buffer8; /发送数据组uint inbuffer10; /接收数据组/调用一些驱动模块/#include "24C02.h" /调用24C02读写模块#include "ADC0832.h" /调用ADC0832转换模块(2)、上面头文件除了IO的定义和一些全局变量定义之外,还有调用到外部驱动模块,下面列出被调用的两个模块部函数容,并以简单的注释说明各函数的作用。 1)、24C02读写模块 24C02.H,部综合了单片机与24C02器件串行通信的所需步骤,比如检测24C02器件忙状态、向24C02写入

20、一个字节数据、从24C02读取一个字节数据,具体如下程序语句。 将24C02.H容拷入此位置 2)、ADC0832转换模块ADC0832.H,主程序通过调用此模块部的电压转换函数来控制ADC检测器件,转换函数中包含控制ADC检测器件的时钟信号、串行数据读取以与转换后的数据锁存等操作,详细如下程序段:将ADC0832.H容拷入此位置(3)、由于C程序使用了模块化设计,所以主程序代码比较简练,只须负责声明一下头文件和几个刷新数据的操作,如VB232.C。#include <dyio.h>/调用头文件/*/void UART_init() /被始化串行通信所须寄存器 TMOD =0x20

21、;SCON =0x50; TH1 =0xFa; TL1 =0XFa; TR1 =1; ET1 =0; ES=1; PS=1; EA =1; /*/void FW() /发送数据刷新函数buffer0=vol/128; /电压1数据高位buffer1=vol%128; /电压1数据低位buffer2=vol1/128; /电压2数据高位buffer3=vol1%128; /电压2数据低位buffer4=vol2/128; /温度数据高位buffer5=vol2%128; /温度数据低位 /*/void send() /向串口发送一串数据 uint i; for(i=0;i<=8;i+) /

22、循环i次发送数组,8位<=128数据 SBUF=bufferi;/发送数据 while(TI=0); /等待发送完毕 TI=0; /标志清0 /*/ void uart_isr() interrupt 4 /中断接收 uint i,ll,pp; for(i=0;i<=9;i+) /循环接收数组 while(!RI); /等待接收结束,未结束继续接收下一位数据 RI=0; /标志清0 inbufferi=SBUF;/接收数据 FW(); /刷新将要发送的变量数值 if(inbuffer0=1)LED1=0; /LED1 if(inbuffer0=2)LED1=1; if(inbuff

23、er1=3)LED2=0; /LED2 if(inbuffer1=4)LED2=1; if(inbuffer2=5)LED3=0; /LED3 if(inbuffer2=6)LED3=1; if(inbuffer3=7)j1=0; /j1 if(inbuffer3=8)j1=1; if(inbuffer4=9)j2=0; /j2 if(inbuffer4=10)j2=1; if(inbuffer5=11)send(); /向串口发送电压和温度数据 pp= inbuffer8*127+inbuffer9;/计算接收到的24C地址 if(inbuffer6=12)write(inbuffer7,pp); /将接收到的数

温馨提示

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

评论

0/150

提交评论