![]() |
---|
Imax=Vref/8Rs
AT89C52具有8KB Flash,256B内部RAM,32个I/O口线,3个16位定时/记数器,一个6向量两级中断系统,一个全双工串行通信接口,同时片内还有振荡器和时钟电路。使用很方便。在这个系统中,单片机主要用来产生控制脉冲并与上位机进行串行通信。
通信电路
在简单的RS-232直接传送通信系统中,只要发送和接受双方同时准备好,仅用信号发送端(TXD)、信号接收端(RXD)和信号地(GND)3 根信号线就可以进行通信;若以应答方式进行数据通信,可使用请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)4 个信号进行硬件握手。在AT89C52单片机系统中,分别从P3.0和P3.1引出串口线RXD和TXD,通过专用的电平转换芯片转换成RS-232接口标准的电平,这样,二者之间就可以通过RS-232接口进行数字信号的传送。单片机可以通过直接传送或应答握手的方式与主机进行数据通信,但由于握手方式占用其它端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式。通信电路如图2所示。
![]() |
---|
软件设计
软件部分的设计主要包括下位机按MCU的接收程序、脉冲控制程序以及上位机的串口发送程序。上位机与下位机之间进行数据通信。上位机的程序主要通过Windows可视化编程VC++实现。
下位机程序主要负责接受PC发来的数据,按照要求产生控制脉冲,具体流程为:首先对要使用的串口进行初始化,然后P2输出口清零,接着进入住程序的死循环,等待中断触发。接收一个字节的数据,RI=1,接着将RI清零。当单片机接收完数据后,标志位置1。将缓存中的数据存入控制的变量中,以便控制时使用(具体操作时先法数据帧再发启动帧)。软件控制流程如图3所示。
![]() |
---|
结语
结合以上介绍的基于A3967SLB的步进电机控制系统,在VC++环境下,利用MSComm控件实现了PC与单片机之间的串行通信。实验结果表明,用这种方式实现上位机对基于A3967SLB的步进电机的控制系统进行的驱动可行有效。
本系统中,利用PC的丰富软硬件资源和强大的系统功能,可进行一些数据处理、显示等工作;而从控制器AT89C52则用于实时控制。另外,该系统为开放式结构,便于系统升级。
[1]. A3967SLB datasheet https://www.dzsc.com/datasheet/A3967SLB_114220.html.
[2]. MS1 datasheet https://www.dzsc.com/datasheet/MS1_2431167.html.
[3]. MS2 datasheet https://www.dzsc.com/datasheet/MS2_2431237.html.
[4]. RC2 datasheet https://www.dzsc.com/datasheet/RC2_1191068.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。