基于AT89C51的数据采集系统设计新方法

发布者:PositiveEnergy最新更新时间:2007-10-09 来源: 电子元器件应用关键字:调试  闪烁  编程  地址 手机看文章 扫描二维码
随时随地手机看文章

0 引言

近年来,随着制造技术的发展,单片机的价格越来越低,性能却不断提升,因而其应用范围也越来越广。然而在开发基于单片机的应用系统时,传统方法一般都需要大量的硬件设备,这些设备极易损坏而且携带不方便。为此,本文基于AT89C51数据采集系统详细说明了如何利用Pro-teus和两款串口仿真软件来进行单片机程序及外围电路的仿真设计。采用该方法可以大大简化硬件电路测试和系统调试过程,对单片机系统开发具有指导意义。本文介绍的基于AT89C5l单片机的数据采集系统能实现16路信号输入,每一路都是0~10 mV的信号,每秒钟采集一遍,从而将数据传给上位PC计算机。

1 硬件设计

1.1 主控芯片

AT89C51是一种带有4 KB闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,可为很多嵌入式控制系统提供灵活且价廉的方案。所以,本设计采用ATMEL公司的AT89C51作为程序的主控芯片。

AT89C51数据总线是由P0口提供的,P0口本身能以多种方式提供数据总线和地址总线。当ALE输出信号为高电平时,P0将输出的数据锁入总线驱动器中作为地址的低8位,然后和P2送出来的高8位地址一起组成一个完整的16位地址,以寻址到外部的64KB的地址空间。AT89C51的地址总线比较简单(只有3个:RD、WR、PSEN),其中RD是用来读取外部数据内存的控制线,WR是用来写数据到外部数据内存的控制线,PSEN是用来存取外部程序内存的读取控制线。

由于P0口是数据和地址分时复用口,故要进行地址锁存,本设计使用74HC573作为锁存器。

1.2 系统硬件电路

本系统的硬件电路原理如图1所示。因为ADC0809的地址选择端A、B、C都接地,所以ADC0809的数据采集通道只有IN0被选通。16路模拟信号连接到多路选择模拟开关HCC4067后,即可通过地址选择端A、B、C、D进行选择,每一次选通一路,选通的通道经IO COM X和ADC0809的IN0相连,以进行A/D转换。P2.7(地址总线最高位A 15)可作为A/D转换的启动开关,P2.7为低电平有效。在启动A/D转换时,可由写信号WR和P2.7控制ADC0809的地址锁存和转换启动。而在读取转换结果时,则由读信号RD和P2.7控制ADC0809的OE信号。若令P2.7为0,74HC573的A、B、C、D即可给出被选择的模拟通道的地址,此时若ABCD=0000,则16路信号的100被选通,并将其数据送到ADC0809的IN0中,地址是7FF0H;若ABCD:1111,地址为7FFFH,则指向IO15。所以,16路信号依次对应的地址为7FFOH~7FFFH。转换完成后,数据将保存到一数组中,直到当上位PC机通过串行口发信号时,AT89C51通过检测地址是否和本机地址相符来作出动作。如果地址相符,则发送A/D转换结果,如不相符,则继续等待。

1.3 信号选通与调理

本系统要求有16路模拟信号输入,而且必须将这些信号互相隔离,然后才能对这些信号逐一选通后进入A/D转换。为此,本系统选用了16选1多路模拟开关HCC4067。

一般传感器的输出信号都比较微弱,要将该微弱信号转换成有用的信号以便于后期使用,就要加入信号调理电路,其作用是进行信号放大和去除干扰等。本设计中的信号输入每路都是0~10mV.但ADC0809的输入要求是0~5 V,因此选用运算放大器OP07来进行信号放大。OP07是一种精密运算放大器,它使用双极性电源供电,精度较高,放大倍数为500,可把0~10 mV信号放大到0~5 V。使用OP07的信号调理电路如图2所示。

1.4 A/D采样电路

ADC0809是美国NS公司生产的CMOS组件,是一种8路输入单片模数转换器件,采用逐位逼近式A/D转换原理,它的输出输人接口全部为TTL电平,数据输出口线为三态,可以直接接到微机系统总线上,而无需另加I/O接口芯片。

由于本设计中使用16选1模拟开关来进行信号的选择,因此,ADC0809的信号选择功能就不使用了,设计时把ADC0809的地址选择端A、B、C都接地,即ABC=000,这样,选通通道始终是IN0。将EOC通过非门连接到AT89C51的INT0脚,可通过查询方式来检测转换是否完成。

由于ADC0809的典型工作频率640 kHz不太容易得到,所以通常使用相近频率且容易获得的信号进行替代。本设计中,单片机的晶振频率12MHz,ALE信号输出为晶振频率的六分之一(即2MHz、),可将该2 MHz经过74HC74四分频后得到500 kHz信号来给ADC0809使用。

1.5 串行口控制

AT89C51内部有一个可编程的全双工串行通信接口,该口能同时进行串行发送和接收,以便通过RXD引脚(串行数据接收端)和TXD引脚(串行数据发送端)与外界进行通信。AT89C51串行口有四种工作方式,本设计中,AT89C51串行口工作于方式3。串口方式3的波特率是可变的,它可由定时器T1的溢出率来控制。通过计算可以得到T1的装载初值为0xfd,波特率为9600bps。

RS232是用正负电压来表示逻辑状态的,它与TTL以高低电平来表示逻辑状态的规定不同。因此,为了能够同计算机接口或与终端的TTL器件连接,必须在RS232与TTL电路之间进行电平和逻辑关系的变换。目前广泛使用的集成电路转换器件是MAX232芯片,它可完成TTL到EIA的双向电平转换。MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器,可在单5V电源供电时提供EIA/TIA-232-E电平。每个接收器均可将EIA/TIA-232-E电平转换为5 V TTL/CMOS电平。这些接收器具有1.3 V的门限值及0.5V的典型迟滞,而且可以接收±30 V的输入。利用MAX232芯片连接单片机和PC的具体电路如图3所示。

由以上器件分析可知该系统所用到的电源电压总共有两种,其中运放OP07使用±12 V,其它芯片使用+5 V电压。

2 实验仿真

2.1 Keil C51软件的使用

Keil C51软件是众多单片机应用开发的优秀软件之一。本设计就是在Keil C51环境中编译数据采集程序的。本采集系统的程序主要分成三部分:主程序、A/D转换程序和串行通信程序。图4所示是其软件流程图。其中主程序是总的控制程序,主要实现各单元初始化、控制采样和中断等:A/D转换程序主要完成采样启动、数据保存等功能;串行通信程序则用来在有上位PC通过串行口发送数据到单片机时引发中断响应,也可通过PC机通信地址和本单片机地址是否相符来判断PC机是否和本单片机通信,如果地址相符,则发送A/D采样的结果给上位机,如果不相符,则跳出中断。串行中断和A/D转换部分的程序代码如下:





程序编写完成后,为了便于和proteus联合仿真,还应当在工程目录下生成一个.hex文件。

2.2 proteus仿真

一般情况下,个人配备单片机实验开发系统的成本较高,很多人无法承受。而且一般单片机的实验箱都是成品,学习者很难参与到其中的细节设计中去,动手能力也难以得到训练与提高。Proteus的出现恰好解决了这个矛盾。利用proteus可以随时搭建一个单片机应用系统,并对其进行仿真。proteus仿真软件包含两个应用程序,其中proteus_isis主要用于电路原理图的仿真,另外一个就是proteus_ares,用于直接将proteus_isis的仿真原理图生成pcb。本任务只涉及仿真,所以只用到proteus_isis。操作时,首先应建立一个新的工程文件,然后按照硬件原理图绘制仿真电路。Proteus的仿真电路设计如图7所示。

2.3 串口通信仿真

本设计仿真可在一个PC机上完成,但要用到串口仿真软件。虚拟串口工具VSPD XP就是一个虚拟串口软件,可模拟物理串口,而且使用比较简单。通信时,只要COM3发送数据,COM4就会收到,而COM4发送数据,COM3也会收到。

串口调试软件有很多种,还有串口调试助手等。本设计选用ComMonitor V2.0作为串口调试软件。

虚拟串口工具VSPD XP中COM3和COM4是一对虚拟串口,可以互相通信。本设计把proteus设置为COM3,把ComMonitor设置为COM4,然后在两者之间进行数据传输。对ComMonitor设置的方法如下:

(1)在左上角设置串口号和波特率,并打开串口;

(2)接收数据控制区设置的是十六进制显示,自动清空;

(3)发送区有三个,都选择为十六进制显示,分别写入"50", "1 2"和"45",其中"50"是本设计中单片机系统的地址,"12"和"45"是随意的两个数据(做测试用)。

2.4仿真结果分析

在proteus中点击界面左下角的仿真运行按钮使系统开始工作,然后在ComMonitor中依次发送三个发送区的预设数值,之后便可以看到运行结果:

(1)发送"50"时,由于和单片机地址相符合,根据程序设定,把A/D采样结果通过串行口发送给了主机,即COM4端。

(2')发送"12"和"45"时,单片机接收也同上面一样,并分别显示。

(3)三次发送数据,COM分别收到不同的数据。

实际上,在发送"12"和"45"时,单片机应该不送回数据,但为了仿真结果清晰,本程序中设置了收到除"50"以外的 数据回送功能,以便把收到的数据再发回去,这样,COM4就会依次收到"12"和"45"。

3 结束语

本文从工程角度出发,详细介绍了基于AT89C51单片机的数据采集系统所需的硬件电路配置以及相关的程序设计。同时用基于Proteus和Keil接口的单片机外围硬件电路构成了一个实用的数据采集系统。所得出的仿真结果完整地展示了一个单片机系统新的开发思路。

关键字:调试  闪烁  编程  地址 引用地址:基于AT89C51的数据采集系统设计新方法

上一篇:TMS320VC5402的HPI与51单片机的接口设计
下一篇:基于AT89C51的数据采集系统设计新方法

推荐阅读最新更新时间:2024-12-17 15:08

80C51学习 闪烁
//引入头文件 #include reg52.h typedef unsigned char u8; typedef unsigned int u16; //位定义 sbit LED=P2^0; /* 延时函数 可以传参来调节延时时间 由于函数调用与参数传递需要耗费时钟周期,所以这种延时是不准确的 最终的耗时与时钟频率和参数有关 */ void delay(u16 i){ //什么都不做 只耗时间 来达到延时的效果 while(i--); } void main() { while(1) { LED=0; //不能超过65535 因为unsigned int最大值为65535 delay(65534);
[单片机]
100MHz可编程数字信号发生器
    摘 要: 介绍一种基于ISA总线的可编程数字信号发生器,其特点是:工作时钟100MHz,用可编程逻辑器件EPLD作为核心元件,信号输出多达16路,用LabWindjows/CVI软件设计的PC机虚拟仪器面板,界面友好,操作方便。并给出了硬件原理框图。     关键词: ISA总线 可编程 数字信号发生器 虚拟仪器     在通讯、电子、自动控制中,经常需要非周期的、能精确定时的数字信号,用以产生测试信号或模拟控制的时序。国内现有的可程控信号发生器输出信号频率较低(几kHz~几MHz)、输出路数较少(一般为两、三路)且结构复杂、操作不方便,难以满足现代电子技术发展的需要。     为此,我们开发了
[应用]
数码显示管显示按键总个数 89c51单片机编程实例
;AT89C51单片机P1口接8个按键(switch),P2口接1个共阴极数码显示管,数码显示管显示按键按下的个数 ;注:连接电路图时,将实例2.1中的八个button按键换成switch按键 org 00h sjmp start org 30h start: mov p2,#3fh mov dptr,#table cc: mov r3,#0 next: mov a,p1 cpl a clr c mov r4,#8 bb: rlc a jnc aa inc r3 aa: djnz r4, bb mov a,r3 movc a,@
[单片机]
Impinj欲推65纳米NVM,将内存整合到CMOS工艺中
非易失性内存(NVM)知识产权与射频识别电路供应商Impinj公司表示,它的多次可编程内存(multitime programmable memory)已由台积电(TSMC)利用65纳米工艺生产出来。 美国Impinj公司的知识产权(IP)产品总经理Larry Morrell表示,已接到台积电返回的65纳米测试电路,预计将能在10月向客户提供用于硬内存模块的IP。 Morrell把这种内存归入他称之为“logic-NVM”的产品类别,因为这种内存能够整合到CMOS逻辑工艺之中,不需要额外的工艺步骤。Morrell表示,许多内存技术在该领域进行竞争,但提供多次可编程性的内存并不多见。 今年稍早的时候,Impinj公司加盟台积电
[新品]
CMOS Sensor的调试经验
  目前,包括移动设备在内的很多多媒体设备上都使用了摄像头,而且还在以很快的速度更新换代。目前使用的摄像头分为两种:CCD(Charge Couple Device电荷偶合器件)和 CMOS(Complementary Metal Oxide Semiconductor互补金属氧化物半导体)。这两种各有优劣:目前CCD主要使用高质量的DC、DV和高档手机上,其图像质量较好,但是整个驱动模组相对比较复杂,而且目前只有曰本一些企业掌握其生产技术,对于选用的厂商来说成本会比较高昂,而且一些设备对与图像质量没有很苛刻的要求,对体积要求会高一些;而CMOS正好满足这样的要求,CMOS模组则比较简单,目前很多厂商已经把驱动和信号处理的ISP(
[测试测量]
AT89C51\52的编程原理
AT89C51和AT89C52的编程原理完全相同,内部都有一个可重复编程的Flash ROM,AT89C51的ROM容量为4KB,而AT89C52的容量为8KB. 我们以AT89C52为例来说明其编程原理: A:由其ROM的容量可知其地址线需要13条,硬件连接如图1所示,整个P1口和P2口的低5位为编程地址输入线, P0口为数据输入端,P2.6、P2.7、P3.6、P3.7为编程模式.其电平组合见表1. B:以下是编程过程: 1.将RST接高电平,PSEN接低电平. 2.擦除芯片,每次重新编程前都要首先把原来ROM里面的程序擦除掉,将编程模式组合为擦除模式,送ALE端一个10ms宽度的低电平脉冲即可. 3.在地址线上输
[单片机]
一种基于混合编程的小波去噪方法
0 引言 信号降噪是信号处理领域的经典问题之一。传统的降噪方法主要包括线性滤波方法和非线性滤波方法,滤波器在工作时对信号进行筛选,只让特定频段的信号通过。当信号中的有用成分和噪声成分各占不同频带,可以将噪声成分有效除去。但如果信号和噪声的频谱重叠,则经典滤波器将不起作用。这些滤波器按滤波的频段可分为高通、低通及带通滤波器,根据设计滤波器的思想可以把滤波器分为巴特沃斯滤波器、贝塞尔滤波器、椭圆滤波器及切比雪夫滤波器等。 此外,传统的滤波器降噪方法的不足在于使信号变换后熵增加,无法刻画信号的非平稳性并且无法得到信号的相关性。为了克服上述缺点,采用小波变换来解决信号降噪的方法应用越来越广泛。但是,由于小波变换数学理论较深,对于初
[测试测量]
一种基于混合<font color='red'>编程</font>的小波去噪方法
PLC梯形图编程方法和编程语言的特点
  梯形图编程是一个广泛应用于PLC编程的编程语言,它有一个与电子电路图非常相似的框架,但是它的目标是编写和执行自动化过程控制程序。   梯形图编程是基于逻辑组件(与门、或门、非门)以及控制元件(计数器、定时器、比较器等)来构建过程控制程序的方法。在PLC中,梯形图通常是在集成开发环境(IDE)中编写的,其中PLC程序员使用图形化编辑器创建逻辑和控制元件的连接。   梯形图编程的优点是其图形化表示,使得程序员更容易理解程序的逻辑和控制流程。这也允许程序员更容易地对程序进行调试和修改。   虽然梯形图编程具有明显的优点,但它也有一些缺点。例如,在处理复杂的程序时,梯形图可能会变得混乱和难以理解。此外,程序员也需要对PLC
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved