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

发布者:TP9111最新更新时间:2012-11-02 来源: 21ic 关键字:AT89C51  数据采集系统  单片机 手机看文章 扫描二维码
随时随地手机看文章

引言

近年来,随着制造技术的发展,单片机的价格越来越低,性能却不断提升,因而其应用范围也越来越广。然而在开发基于单片机的应用系统时,传统方法一般都需要大量的硬件设备,这些设备极易损坏而且携带不方便。为此,本文基于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的信号调理电路。

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的具体电路。

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

2 实验仿真

2.1 Keil C51软件的使用

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

 

 

 

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

[page]

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  数据采集系统  单片机 引用地址:基于AT89C51单片机的数据采集系统设计新方法

上一篇:Watchdog在Philips 8XC552系列单片机系统中的应用
下一篇:基于51单片机为核心的智能压力传感器设计

推荐阅读最新更新时间:2024-03-16 13:12

单片机与MMC卡的接口
  多媒体卡MMC(MultiMedia Card)是由美国SanDisk公司和德国Simens公司于1997年共同开发推出的一种多功能存储卡。内置控制电路,可以使用在手机、数码相机、MP3、PDA等多种数字设备上,可反复记录30万次。现在市场上的主流容量有128 MB~2 GB。       文中首先介绍单片机对SPI协议下的MMC卡的底层读写操作,然后分析MMC卡文件系统的结构,最后详细说明MMC卡文件的创建、读写、删除等操作。该方法可应用到与Windows有交互的嵌入式系统中,便于文件的统一管理。   1 单片机与MMC卡的接口   1.1 单片机与MMC卡的接口电路      接口电路采用的是Philips公司的增
[嵌入式]
51单片机-LED部分(2)
8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include #include #define uchar unsigned char uchar x, temp; sbit buzzer = P2 ^ 3; void delayms(uchar z); void main() { temp = 0xfe; while(1) {
[单片机]
沁恒股份USB单片机CH554概述
概 述 CH554是一款兼容MCS51的增强型E8051内核单片机,79%的指令是单字节单周期指令,内置24MHz时钟源,内置1K+256B RAM,16KB iFlash-ROM。CH554提供丰富的接口资源,包括ADC模数转换、3组定时器和信号捕捉及PWM、双异步串口、SPI等。 CH554提供6通道电容检测模块,互电容方式支持最多15个触摸按键。 CH554内嵌全速USB控制器,支持USB HOST主机模式和USB DEVICE设备模式。 系统框图 特 点 》 增强型E8051内核CPU,速度比标准MCS51快8-15倍,特有XRAM数据快速复制指令; 》 内置14KB Code Flash、2KB BootLoad
[单片机]
沁恒股份USB<font color='red'>单片机</font>CH554概述
采用MSP430单片机的开关稳压电源设计
1 引 言 MSP430系列 单片机 是美国 TI 公司生产的新一代16位单片机,是一种超低功耗的混合信号处理器(MixedSignal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC-DC主回路采用Boost升压斩波电路。 2 系统结构和总设计方案 本开关稳压电源是以MSP430F449为主控制器件,它是 TI
[单片机]
采用MSP430<font color='red'>单片机</font>的开关稳压电源设计
JTAG/SWD/ISP/SWIM详解单片机的四种烧写方式
  单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前,要先清楚单片机程序是如何烧写到单片机内部的,在烧写的过程中需要用到什么工具?因为不通用的烧写工具可能价格较贵,比如说Micorchip单片机使用的ICD系列编程器,单台价格在600-1000元人民币之间。今天和大学来认识一下单片机最常用的四种烧写方式和所使用到的工具。   1.使用JTAG接口实现   JTAG接口是一种标准的测试协议,可以实现编程时在线调试,利用单步追踪可以很方便的查找代码的Bug,大多
[单片机]
JTAG/SWD/ISP/SWIM详解<font color='red'>单片机</font>的四种烧写方式
采用单片机SPWM的控制应急电源逆变电路设计
  逆变器是应急 电源 的重要组成部分。为了实现应急电源中逆变器输出交流电压的适时调节,减小输出电压谐波达到逆变电路数字化控制目的,三相逆变电路采用了正弦脉宽调制(SPWM)控制方法,以C8051F020单片机和SA4828为核心,完成对SPWM波的产生及系统的控制。利用单片机特有的端口连接完成外围控制功能,这样就减少了应急电源对波形产生的处理时间,保证波形具有较高精度,而且电路硬件连接简单。   引言   随着社会发展,越是信息化、现代化,就越依赖于电力,突然断电会给人们正常的生活秩序和学习带来影响,尤其对于生产、生活中特别重要的负荷,一旦中断供电,将会造成重大的经济损失。应急电源产品已成为很多重要场所必不可少的重要设备
[电源管理]
采用<font color='red'>单片机</font>SPWM的控制应急电源逆变电路设计
纯软件实现单片机远程通信
GMS972051是韩国LG公司生产的MW内部带2K E2PROM的与MCS-51兼容的单片机。GMS97C2051省去了MCS-51的P0和P3口,但是多了一个内部硬件比较器。由于单片机的通信信号为TTL电平,如果不采取其它的措施,其在通信速率为9600bps时通信距离不超过5米。一般为了延长单片机的通信距离,采用RS-232/RS-485转换器、 RS-232/RS-422转换器或光隔远程收发器。本文介绍的方法可将GMS97C2051单片机之间通信距离延长到1200米以上,而且不需要添加任何硬件措施,完全用软件来实现。 要用纯软件方法实现GMS97C2051单片机之间的远程通信,首先必须将单片机的TTL电平的软件
[工业控制]
8位微控制器在RF读卡控制中的应用
摘要: 基于射频 ID reader 基站 IC,通过读取射频感应卡中的 ID 码并对其校验,根据校验结果正误来决定是否实现对各种控制过程的触发,本文给出了采用 8 位 微控制器 设计的 RF 读卡控制的应用方案。 随着国内射频读卡控制市场的不断发展,非接触式射频读卡系统被应用于越来越多的领域,智能门禁系统、汽车智能防盗报警装置等都成为 RF读卡控制的重要应用领域,而摩托车引擎点火等传统控制领域也开始采用RF读卡控制系统。射频读卡控制的便捷和安全性实现了科技对传统控制领域的发展的促进,同时工业控制中的各种电磁干扰也对射频读卡微控制器提出了更加严格的抗干扰要求性能。为了迎合控制领域的这种需求,很多半导体厂商发展了众多新技术极大改
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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