以及利用个人计算机(PC)以程序语言产生信号再以 8255 界面卡输出。
信号产生器由于输出的信号为固定频率、振幅,因此弹性不大只适合运用在一般的检测方面;8051 与
68HC11 等单芯片制作成的单板计算机由于功能强、弹性大且价格低廉,因此常用于工业实务控制方面;至于
利用 PC 以程序语言产生信号再以 8255 界面至驱动电路的方式,由于程序撰写容易且除错方便、修改容易,
因此多为系统开发实验阶段所采用。
以程控而言,一般的做法是依照电机动作需求事先将程序撰写好,利用微电脑系统产生脉波信号,其中程序
内容包含有步进电机的起动、加速、减速、停止、归零、以及紧急情况处置等函式(Function)。我们利用以下的虚
拟程序来解释如何规划 8255 界面卡并产生脉波信号,同时利用 8255 界面卡的 A 埠(port)作为输出。由于此
程序中并未包含电机加速之功能,同时输出电流均为固定值,因此若以此程控电机运转,其运转情形就如同
以低速档驾车不但转速慢且电机容易发热。
#define Port_A 0x200 定义 8255A 端口之地址(ADDRESS)为 200
#define Port_B 0x201 定义 8255B 端口之地址为 201
#define Port_C 0x202 定义 8255C 端口之地址为 202
#define Control_Port 0x203 定义 8255 控制端口之地址为 203
#define TRUE 1
#include<dos.h>
#include<conio.h>
#include<process.h>
main()
{
int n, j, k;
int i[4]={0x01,0x02,0x04,0x08}; 正转脉波信号
int r[4]={0x08,0x04,0x02,0x01}; 逆转脉波信号
outportb(Control_Port,0x80); 规划 8255A.B.C 埠均为输出埠
while(j) 电机正转循环
{
for (n=0;n<4;n++)
{
outportb(Port_A,i[n]); 将脉波信号由 A 端口输出,电机正转一个步进角
if(kbhit())
{
j=0;
outportb(Port_A,0x00); 将脉波信号归零,电机停止
exit(0);
}
}
}
while(k) 电机反转循环
{
for (n=0;n<4;n++)
{
outportb(Port_A,r[n]); 将脉波信号由 A 端口输出,电机反转一个步进角
if(kbhit())