1.2 硬件设计与实现
1.2.1 数据采集
单片机初始化完毕后,通过片选信号选中A/D转换器,把RAM的控制权交给采集电路。AD976A进行数据采集时,置CS引脚固定为低电平,则转换时序由 R/C信号的下降沿控制,信号脉冲宽度至少为50 ns。当R/C变为低电平时,BUSY信号也变为低电平,标志转换结束,则移位府存器中的数据被更新的二进制补码替代。设计中,由于256 KB数据存储器仅需要15位地址A0~A14,则使用A15与RD,WR共同作为控制线,使A/D转换与数据存储交替工作。当A15低电平时,选通数据存储器IDT71256,此时CS为高电平,则AD976A停止工作;当A15为高电平时,通过与非逻辑电路使CS为低电平,选通AD976A,并通过WR 的变化提供R/C下降沿,这样可以通过软件延时精确控制采样率。
1.2.2 总线控制
在数控单元硬件结构中,采用P0口提供数据总线和地址总线,当ALE输出信号为高电平时,P0口,输出数据锁存入总线驱动器中地址的低8位,同时和P2口送出的高8位地址组成完整的16位地址,寻址到外部的256 KB地址空间,由A/D转换器把采集到的数据存入静态RAM中。由于P0口是数据与地址分时复用口,因此引进74HC573作为地址锁存器。同时,使用 RD作为读取外部数据内存的控制线;WR作为写入数据到外部内存的控制线;PSEN作为存取外部程序存储器的读取控制线。
1.2.3 电机控制电路
天线驱动控制部分通过上位机发送电机启动命令,单片机从串口接收到启动命令后,向电机驱动器AKS230发出节拍脉冲,以带动天线匀速转动;通过编程控制P1.0口输出节拍脉冲速率,即可控制天线转速。当上位机发出停止命令时,通过单片机程序提取天线状态,保证天线启停处于同一位置。考虑到单片机输出电流与电机驱动电流的匹配问题Ⅲ,这里使用总线驱动器74LS245与单片机相连,输出电流可达20 mA,满足电机驱动要求。
1.2.4 串口通信电路
串口通信部分通过
AT89C51内部的全双工串行通信接口RXD和TXD进行发送和接收。
AT89C51串行接口有四种工作模式,本设计中,串口工作于方式1,波特率可变,通过定时器T1进行溢出率控制,令T1工作于方式2,由于波特率为(2SMOD/32)·(fOSC/12)·[1/(28- TH1)],则通过计算可得T1装载值为0xFA,波特率为9 600 b/s。这里选用MAX232完成TTL到EIA的电平转换。
2 软件设计
单片机软件部分采用了模块化的设计方法,按照功能分为数据采集及存储、电机运行控制及状态提取、串口发送与接收几部分,各个模块之间通过中断或子程序调用等进行连接,有机地成为一体,整个系统已经使用Medwin 3.O调试并能够成功运行。
数据采集部分包括初始化、信号采集及存储,采集速率通过编程进行控制,实现每10 ms采样一个电压值,并存人0100H~01C8H的地址空间中,采集100个数据后调用中断通过串口传给上位机进行后续处理。每次系统上电时,采集部分复位并从头运行,数据采集部分程序流程图如图3所示。