基于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转换结果,如不相符,则继续等待。