步进电机的控制电路和程序

合集下载

大学毕业设计 C51程序控制步进电机

大学毕业设计 C51程序控制步进电机

题目:简易步进电机控制步进电机控制摘要:本设计采用ATMEL公司DIP-40封装的AT89S52单片机实现对四相步进电机的手动和按键控制。

由单片机产生的脉冲信号经过分配后分解出对应的四相脉冲,分解出的四相脉冲经驱动电路功率放大后驱动步进电机的转动。

转速的调节和状态的改变由按键进行选择,此过程由程序直接进行控制。

通过键盘扫描把选择的信息反馈给单片机,单片机根据反馈信息做出相应的判断并改变输出脉冲的频率或转动状态信号。

电机转动的不同状态由液晶LCD1602显示出来。

而设计的扩展部分可以通过红外信号的发射由另一块单片机和红外线LED完成,用红外万能接收头接收红外信号,可以实现对电机的控制进行红外遥控。

关键字:四相步进电机单片机功率放大 LCD1602步进电机控制 (1)摘要 (1)关键字 (1)前言 (3)1系统总体方案设计及硬件设计 (4)1.1步进电机 (4)1.1.1 步进电机的种类 (4)1.1.2 步进电机的特点 (4)1.1.3 步进电机的原理 (5)1.2 控制系统电路设计 (7)1.3 液晶显示LCD1602 (7)1.4 AT89S52核心部件及系统SCH原理图 (9)1.5 LN2003A驱动 (10)2软件设计及调试 (13)2.1程序流程 (13)2.2软件设计及调试 (14)3 扩展功能说明 (15)4设计总结 (16)5 设计源程序 (16)6 附录 (21)参考文献 (22)附2:系统原理图及实物图 (23)步进电机广泛应用于对精度要求比较高的运动控制系统中,如机器人、打印机、软盘驱动器、绘图仪、机械阀门控制器等。

目前,对步进电机的控制主要有由分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。

分散器件组成的环形脉冲分配器体积比较大,同时由于分散器件的延时,其可靠性大大降低;软件环形分配器要占用主机的运行时间,降低了速度;专用集成芯片环形脉冲分配器集成度高、可靠性好,但其适应性受到限制,同时开发周期长、需求费用较高。

步进电机的控制程序

步进电机的控制程序

mega16的,16和32管脚兼容,只不过flash大小不一样,不过中断向量号也不一样,你看下自己改改。

时钟频率:内部RC 1M 芯片:ULN2003 键值:0 小角度快正转。

1 小角度快倒。

2 大角度快转。

3 大角度快倒。

4 小角度正慢转。

5 小角度倒慢转。

6 大角度正慢转。

7 大角度倒慢转。

********************************************************************/#include<iom16v.h>#include <macros.h>#define uchar unsigned char#define uint unsigned intuchar a=0,b=0;uchar KEY_num=0xe1;unsigned int m=9000;const uchar f1[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03}; //正转时序3.75度const uchar f2[]={0x04,0x06,0x02,0x03,0x01,0x09,0x08,0x0c}; //倒转时序3.75度const uchar f3[]={0x01,0x02,0x04,0x08}; //正转时序7.5度const uchar f4[]={0x01,0x08,0x04,0x02}; //倒转时序7.5度void delay(int k) //延时{ int i; for(i=0;i<k;i++); }void delay_10ms(uint data){ uint m=2; while(data) { data--; m=2; while(m)m--; } }void zhengzhuan1(void) //正转3.75度{ unsigned char j; for (j=0;j<8;j++) { PORTC=f1[j]; delay(m); } }void daozhuan1(void) //倒转3.75度{ unsigned char j; for (j=0;j<8;j++) { PORTC=f2[j]; delay(m); } }void zhengzhuan2(void) //正转7.5度{ unsigned char j; for (j=0;j<4;j++) { PORTC=f3[j]; delay(m); } }void daozhuan2(void) //倒转7.5度{ unsigned char j; for (j=0;j<4;j++) { PORTC=f4[j]; delay(m); } }void port_int() //初始化端口{ PORTB = 0xf0; DDRB = 0x0F; DDRC=0xff; PORTC=0x01; }void init_devices(void){ CLI(); //禁止所有中断MCUCR = 0x00; MCUCSR = 0x80;//禁止JTAG GICR = 0x00; port_int();SEI();//开全局中断}//按键键值读取程序//返回按键键值,如果没有按键则返回0.void KYY_read(){ //定义按键值存放内存PORTB=0xf0; //行全部送高电平PORTB=0xf0;if((PINB&0xf0)!=0xf0) //有按键{ delay_10ms(1);//延时消抖if((PINB&0xf0)!=0xf0) //确定有按键按下{ PORTB=0xfe; //扫描第一行PORTB=0xfe;if((PINB&0xf0)!=0xf0){ KEY_num=(PINB&0xf0)+1; a=9; }PORTB=0xfd; //扫描第二行PORTB=0xfd;if((PINB&0xf0)!=0xf0){ KEY_num=(PINB&0xf0)+2; } PORTB=0xfb; //扫描第三行PORTB=0xfb;if((PINB&0xf0)!=0xf0){ KEY_num=(PINB&0xf0)+4; } PORTB=0xf7; //扫描第四行PORTB=0xf7;if((PINB&0xf0)!=0xf0){ KEY_num=(PINB&0xf0)+8; } } } //没有按键返回0 }//按键执行程序//送如参数:按键键值KEY_do(uchar data){ uchar KEY_number=data;switch(KEY_number){ case 0xe1:a=0;b=0;daozhuan1();m=5000;break;case 0xd1:a=0;b=1;daozhuan1();m=6000;break;case 0xb1:a=0;b=2;daozhuan1();m=7000;break;case 0x71:a=0;b=3;daozhuan1();m=8000;break;case 0xe2:a=0;b=4;daozhuan2();m=5000;break;case 0xd2:a=0;b=5;daozhuan2();m=6000;break;case 0xb2:a=0;b=6;daozhuan2();m=7000;break;case 0x72:a=0;b=7;daozhuan2();m=8000;break;case 0xe4:a=0;b=8;zhengzhuan1();m=5000;break;case 0xd4:a=0;b=9;zhengzhuan1();m=6000;break;case 0xb4:a=1;b=0;zhengzhuan1();m=7000;break;case 0x74:a=1;b=1;zhengzhuan1();m=8000;break;case 0xe8:a=1;b=2;zhengzhuan2();m=5000;break;case 0xd8:a=1;b=3;zhengzhuan2();m=6000;break;case 0xb8:a=1;b=4;zhengzhuan2();m=7000;break;case 0x78:a=1;b=5;zhengzhuan2();m=8000;break; default:b=0;break;}}void main (void)//主程序{ init_devices();while(1){ KYY_read(); KEY_do(KEY_num); }}#include <reg51.h> //51芯片管脚定义头文件#include <intrins.h> //内部包含延时函数_nop_();#define uchar unsigned char#define uint unsigned intuchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};sbit K1 = P3^4; //正转sbit K2 = P3^5; //反转sbit K3 = P3^6; //停止sbit K4 = P3^7;sbit BEEP = P0^6; //蜂鸣器/********************************************************//*/* 延时t毫秒/* 11.0592MHz时钟,延时约1ms/*/********************************************************/void delay(uint t){uint k;while(t--){for(k=0; k<125; k++){ }}}/**********************************************************/void delayB(uchar x) //x*0.14MS{uchar i;while(x--)for (i=0; i<13; i++){ }}}/**********************************************************/ void beep(){uchar i;for (i=0;i<180;i++){delayB(5);BEEP=!BEEP; //BEEP取反}BEEP=1; //关闭蜂鸣器}/********************************************************/ /*/*步进电机正转/*/********************************************************/ void motor_ffw(){uchar i;uint j;for (j=0; j<12; j++) //转1*n圈{if(K4==0){break;} //退出此循环程序for (i=0; i<8; i++) //一个周期转30度{P0 = FFW[i]; //取数据delay(15); //调节转速}}}/********************************************************/ /*/*步进电机反转/********************************************************/ void motor_rev(){uchar i;uint j;for (j=0; j<12; j++) //转1×n圈{if(K4==0){break;} //退出此循环程序for (i=0; i<8; i++) //一个周期转30度{P0 = REV[i]; //取数据delay(15); //调节转速}}}/********************************************************** 主程序**********************************************************/main(){uchar r,N=5; //N 步进电机运转圈数P2=0xDF;while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ffw(); //电机正转if(K4==0){beep();break;} //退出此循环程序}}else if(K2==0){beep();for(r=0;r<N;r++){motor_rev(); //电机反转if(K4==0){beep();break;} //退出此循环程序}}elseP0 = 0xf0;}}/********************************************************/ULN2803是8路NPN达林顿连接晶体管系列,特别适用于低逻辑电平数字电路,如:TTL,COMS或PMOS/NMOS,和较高的电压/电流要求之间的接口,广泛应用与计算机、打印机、继电器、灯等类似负载中。

步进电机控制电路及应用程序

步进电机控制电路及应用程序

步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。

每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。

步进电机的角位移量与输入的脉冲个数严格成正比,而且在时间上与脉冲同步。

因而只要控制脉冲的数量、频率和电机绕组的相序,即可获得所需的转角、速度和方向。

步进电机主要是由定子、定子绕组和转子组成。

涉及的基本概念如下:1.相——步进电机有几个定子绕组(线圈)就是几相。

2.线——步进电机引出有几根连接的导线。

3.极性——分为单极性和双极性。

如果步进电机的线圈是可以双向导电的,那么这个步进电机就是双极性的,相反,如果步进电机的线圈是只允许单向导电的,那么这个步进电机就是单极性的。

4.极数——每个电机每相含有的磁极个数就是极数。

由于磁极是成对出现的,所以电机有2、4、6、8……极之分。

步进电机结构示意图步进电机分类——按结构分类反应式反应式步进电机定子上有绕组、转子由软磁材料组成。

结构简单、成本低、步距角小,可达1.2°、但动态性能差、效率低、发热大,可靠性难保证。

噪声振动大,多为三相。

永磁式永磁式步进电机永磁式步进电机的转子用永磁材料制成,转子的极数与定子的极数相同。

其特点是动态性能好、输出力矩大,但这种电机精度差,步矩角大(一般为7.5°或15°)。

混合式混合式步进电机其定子上有多相绕组、转子上采用永磁材料,转子和定子上均有多个小齿以提高步矩精度。

其特点是输出力矩大、动态性能好,步距角小,但结构复杂、成本相对较高。

二相和五相。

步进电机分类——按定子绕组步进电机按定子上绕组来分,共有二相、三相、四相和五相等系列。

最受欢迎的是两相混合式步进电机,约占97%以上的市场份额,其原因是性价比高,配上细分驱动器后效果良好。

该种电机的基本步距角为1.8°/步,配上半步驱动器后,步距角减少为0.9°,配上细分驱动器后其步距角可细分达256倍(0.007°/微步)。

步进电机工作原理及控制电路

步进电机工作原理及控制电路

//按键标志变量
flag1=0;
//步进数标志变量
init();
//液晶初始化子程序
while(1)
{
keyscan();
//键盘扫描子程序
if(flag==1)
{
zz();
//正转子程序
}
else if(flag==3) {
fz(); } writebjs(8,count); } }
//反转子程序
it 动机正转,其励磁顺序如图所示。若励磁信号反向传送,则步进电动机反转。励
磁顺序: A→AB→B→BC→C→CD→D→DA→A
A-B 表4.3 1-2 相励磁法
步进电动机的负载转矩与速度成反比,速度愈快负载转矩愈小,当速度快至 其极限时,步进电动机即不再运转。所以在每走一步后,程序必须延时一段时间。 下面介绍的是国产20BY-0型步进电机,它使用+5V直流电源,步距角为18度。电 机线圈由四相组成,即A、B、C、D四相,驱动方式为二相激磁方式,电机示意图 和各线圈通电顺序如图4.2和表4.1所示:
6
法增大起动电流,以提高步进电机转动力矩,即提高其工作频率。由于步进电机
是感性负载,所以进入绕组的电流脉冲是以指数形式上升,即这时电流脉冲i为:
i = IH (1 − e−1/Tj )
(4.4)
公式
其中:i是电流脉冲瞬时值;
IH 是在开关回路电压为u时的电流稳态值;
Tj 是开关回路的时间常数,Tj = L / ( RL + RC )
θ s = 2Π / Nrk
公式(4.1) 或
θ s = 360o / Nrk
公式(4.2)
其中:k是步进电机工作拍数,Nr是转子的齿数。

步进电机控制系统原理

步进电机控制系统原理
• CH250环形脉冲分配器是三相步进电动机的理想脉冲分配器, 通过其控制端的不同接法可以组成三相双三拍和三相六拍的不 同工作方式,如图7、图8所示.
图7 CH250三相双三拍接法
图8 CH250三相六拍接法
CH250环形脉冲分配器的功能关系如表1所列
讨论:
• 单片机输出步进脉冲后,再由脉冲分配电路按事先确定的顺序控制各相的 通断.
二、由软件完成脉冲分配工作
• 用微型机代替了步进控制器把并行二进制码转换成 • 串行脉冲序列,并实现方向控制. • 只要负载是在步进电机允许的范围之内, • 每个脉冲将使电机转动一个固定的步距角度. • 根据步距角的大小及实际走的步数,只要知道初始 • 位置,便可知道步进电机的最终位置. • 特点:由软件完成脉冲分配工作,不仅使线路简化,成本下
LOOP2: MOV A,R3 ADD A,#07H MOV R3,A AJAMP LOOP1
DELAY:
;求反向控制模型的偏移量 ;延时程序
POINT
COUNT POINT
DB 01H,03H,02H,06H,04H,05H,00H ;正向控制模型 DB 01H,05H,04H.06H,02H,03H,00H ;反向控制模型 EQU 30H, EQU 0150H
01 100
3、步进电机与微型机的接口及程序设计
总之, 只要按一定的顺序
改变 P1.0~P1.2 三位通电的状况, 即可控制步进电机依选定的方向步进.
3、步进电机与微型机的接口及程序设计
由于步进电机运行时功率较大,可在微型机与驱动器 之间增加一级光电隔离器,以防强功率的干扰信号反 串为进什么主步控进系电统机.功如率图驱所动示电路. 采用光电隔离?
2、步进电机控制系统原理

第3章步进电动机的控制

第3章步进电动机的控制
ƒ
升速 恒速 减速 低速
起点
终点
(时间) t
图3-24
点、位控制中的加减速控制
15
变速控制的方法有:
改变控制方式的变速控制:最简单的变速控制可利用改变步进电 机的控制方式实现。例如:对于三相步进电机系统,启动或停止时 用三相六拍,大约0.1s以后,改用三相三拍,快到达终点时再采用 三相六拍,以达到减速控制的目的。 均匀地改变脉冲时间间隔的变速控制:步进电机的加速(或减速) 控制,可以用均匀地改变脉冲时间间隔来实现。 采用定时器的变速控制:单片机控制系统中,用单片机内部的定 时器来提供延时时间。方法是将定时器初始化后,每隔一定的时间, 由定时器向CPU申请一次中断,CPU响应中断后,便发出一次控制脉 冲。此时只要均匀地改变定时器时间常数,即可达到均匀加速(或 减速)的目的。这种方法可以提高控制系统的效率。
脉冲 方向控制
步进控制器
功率放大器
步进电机
负载
图3-19 步进电机控制系统的组成
2
随着电子技术的发展,除功率驱动电路之外,其它硬件电路均可由软 件实现。采用计算机控制系统,由软件代替步进控制器,不仅简化了 线路,降低了成本而且可靠性也大为提高,同时,根据系统的需要可 灵活改变步进电机的控制方案,使用起来很方便。典型的微型机控制 步进电机系统原理图如图3-20所示。 使用微型机对步进电机进行控制有串行和并行两种方式。 步 进 电 机
6
二、步进电动机的闭环控制

在开环步进电动机系统中,电动机的输出转矩在很大程度上取决于驱 动电源和控制方式。对于不同的步进电动机或同一种步进电动机而不 同负载,励磁电流和失调角发生改变,输出转矩都会随之发生改变, 很难找到通用的控速规律,因此,也很难提高步进电机的技术指标。 闭环系统是直接或间接地检测转子的位置和速度,然后通过反馈和适 当处理自动给出驱动脉冲串。因此采用闭环控制可以获得更精确的位 置控制和更高、更平稳的转速,从而提高步进电动机的性能指标。 步进电动机的输出转矩是励磁电流和失调角的函数。为了获得较高的 输出转矩,必须考虑到电流的变化和失调角的大小,这对于开环控制 来说是很难实现的。

PLC实训程序--步进电机的PLC控制

PLC实训程序--步进电机的PLC控制

步进电机的PLC控制一、实验目的1、掌握PLC控制的基本原理,掌握移位寄存器的使用。

2、掌握步进电机的工作原理,掌握环形分配器的使用方法。

3、掌握运用PLC驱动步进的方法。

二、实验器材1、PLC-2型可编程控制器实验台1台2、步进电机的PLC控制演示板1块3、PC机或手持编程器1台4、编程电缆1根5、自锁式连接导线若干图16.1三、实验原理与实验步骤1、步进电机的PLC控制演示板如图16.1所示。

2、实验原理本演示装置采用的四相步进电机,运用PLC设计一个步进电机的环形分配器的软件程序。

以此来实现步进电机的单步,连续运转。

四相步进电机的结构如下图所示。

演示板上四个LED发光管分别代表步进电机的四个相位。

3、设计要求:按照步进电机的工作方式,设四相线圈分别为A、B、C、D,公共端为E、F。

当电机正向转动时其工作时序如下:A→AB→B→BC→C→CD→D→DA当电机反向转动时其工作时序如下:A←AB←B←BC←C←CD←D←DA要求慢速度为I S—格,快速度为0.1S—格。

4、实验步骤:(1)打开PLC-2型实验台电源,编程器与PLC连接。

(2)根据具体情况编制输入程序,并检查是否正确。

(3)实验台与PLC-DOME008连接,检查连线是否正确。

(4)按下启动按钮,观察运行结果。

四、设计程序清单1、I/O地址分配清单:输入地址:正向启动X0 反向启动X1停止X2 速度控制X3 输出地址: A Y0 B Y1C Y2 C Y3E\F COM2、程序(1)指令表0 LD X0001 OR S02 ANI X0013 ANI X0024 OUT S06 LD X0017 OR S18 ANI X0009 ANI X00210 OUT S112 LD X00313 CJ P0 16 LDI T33 26 OUT Y01527 LDI X00328 CJ P131 P032 LDI T3333 OUT T32 K136 LD T3237 OUT T33 K140 OUT S242 OUT Y01543 P144 LD S245 PLS M1051 ANI M552 ANI M653 ANI M754 AND S155 LDI M256 ANI M357 ANI M458 ANI M559 ANI M660 ANI M761 ANI M862 AND S063 ORB68 AND S069 SFTR M0 M1 K8 K178 MPP79 AND S180 SFTL M0 M2 K8 K189 LD M190 OR M291 OR M892 OUT Y00093 LD M294 OR M395 OR M496 OUT Y00117 OUT T32 K520 LD T3221 OUT T33 K5 24 OUT S2101 LD M6102 OR M7 47 LDI M148 ANI M249 ANI M350 ANI M4103 OR M864 OUT M065 LD M800266 OR M1067 MPS104 OUT Y00397 LD M498 OR M599 OR M6100 OUT Y002105 END梯形图接线图※FX系列的输出继电器的公共端:FX2N-32MR为COM0~COM4;FX2N-48MR为COM0~COM5; FX1N-60MR为COM0~COM7五、思考题1、如果是三相步进电机,工作方式为三相六拍,程序该如何编制?2、如果是E、F公共端不接,作为二相时机使用,程序又该如何处理?。

步进电机控制实验实验报告及程序

步进电机控制实验实验报告及程序

实验九步进电机控制实验姓名专业通信工程学号成绩一、实验目的1.掌握keil C51软件与proteus软件联合仿真调试的方法;2.掌握步进电机的工作原理及控制方法;3.掌握步进电机控制的不同编程方法;二、实验仪器与设备1.微机1台2.keil C51集成开发环境3.Proteus仿真软件三、实验内容1.用Proteus设计一四相六线步进电机控制电路。

要求利用P1口作步进电机的控制端口,通过达林顿阵列ULN2003A驱动步进电机。

基本参考电路见后面附图。

2.编写程序,实现步进电机的正反转控制。

正反转时间分别持续10S时间,如此循环。

3.设计一可调速步进电机控制电路。

P3.2~P3.5分别接按键k1~k4,其中k1为正反转控制按键,k2为加速按键,k3为减速按键,k4为启动/停止按键,要求速度7档(1~7)可调,加减速各设3档,复位时位于4档,要求每档速度变化明显。

该步进电机控制电路在以上电路的基础上自行修改。

四、实验原理1.步进电机控制原理:1)步进电机是利用电磁铁的作用原理,步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

每来一个电脉冲,步进电机转动一定角度,带动机械移动一小段距离。

特点A.来一个脉冲,转一个步距角。

B.控制脉冲频率,可控制电机转速。

C.改变脉冲顺序,可改变转动方向。

2)以反应式步进电机为例说明步进电机的结构和工作原理。

三相反应式步进电动机的原理结构图如下,定子内圆周均匀分布着六个磁极,磁极上有励磁绕组,每两个相对的绕组组成一相。

转子有四个齿。

给A相绕组通电时,转子位置如图(a),转子齿偏离定子齿一个角度。

由于励磁磁通力图沿磁阻最小路径通过,因此对转子产生电磁吸力,迫使转子齿转动,当转子转到与定子齿对齐位置时(图b),因转子只受径向力而无切线力,故转矩为零,转子被锁定在这个位置上。

由此可见:错齿是助使步进电机旋转的根本原因。

3)三相反应式步进电动机的控制原理①三相单三拍:A 相→ B 相→ C 相→ A 相②三相六拍:A→AB →B →BC →C → CA→ A③三相双三拍:AB →BC →CA→AB4)步距角计算公式:θ—步距角 Z r—转子齿数 m —每个通电循环周期的拍数2、ULN2003A:七达林顿阵列ULN2003A是集成达林顿管反相驱动电路,内部还集成了一个消线圈反电动势的二极管,可用来驱动电机、继电器等功率器件。

8255端口控制步进电机控制框图和程序

8255端口控制步进电机控制框图和程序

9.4工程应用9.4.1项目1:用8255A端口控制步进电机1.项目要求与目的(1)项目要求:根据开关的状态,用8255端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正转、反转,加速,减速。

(2)项目目的:●了解步进电机控制的基本原理。

●掌握控制步进电机转动的编程方法。

●了解单片机控制外部设备的常用电路。

2.项目电路连接与说明(1)项目电路连接:8255的片选CS孔用导线接至译码处200H~207H插孔,8255的PA0-PA3用导线接至步进电机的A、B、C和D,PB0-PB3用导线接至开关K0、K1和K2。

(2)项目说明:步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。

切换是通过8255输出脉冲信号来实现的。

所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。

步进电机的转速应由慢到快逐步加速。

步进电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB)方式,也可以采用单四拍(A→B→C→D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA→A)方式。

实际控制时公共端是接在+5V上的,所以实际控制脉冲是低有效。

8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。

当开关K0=0时,步进电机驱动方式采用单/双八拍工作方式,当开关K1=0时,步进电机驱动方式采用双四拍工作方式,当开关K2=0时,步进电机驱动方式采用单四拍反转工作方式。

3.项目电路原理框图项目电路原理框图如图7-1所示。

电路由8255A芯片、驱动和步进电机等组成。

图7-1 用8255A端口控制步进电机电路框图4.项目程序设计(1)程序流程图用8255A端口控制步进电机程序流程图如图7-2所示。

图7-2 程序流程图(2)程序清单用8255A端口控制步进电机程序清单如下所示。

ASTEP EQU 01HBSTEP EQU 02HCSTEP EQU 04HDSTEP EQU 08HCODE SEGMENTASSUME CS:CODESTART :MOV DX, 203H ;8255控制口地址MOV AL, 82H ;PA口输出,B口输入OUT DX, AL ;写控制字K0:MOV DX, 200H ;PA口地址MOV AL,0 ;输出低电平OUT DX,AL ;电机停止转动MOV DX,201H ;PB口地址IN AL,DX ;读开关状态TEST AL,01H ;PB0位(K0=0吗?)JNZ K1 ;不是零转K1JMP STEP8 是零转单/双八拍工作方式K1: IN AL,DX ;读开关状态TEST AL,02H ;PB1位(K1=0吗?)JNZ K2 ;不是零转K2JMP STEP4 ;是零转双四拍工作方式K2:IN AL,DX ;读开关状态TEST AL,04H ;PB2位(K2=0吗?)JZ STEP41 ;是零转单四拍反转工作方式JMP K0 ;循环; 单/双八拍工作方式:A→AB→B→BC→C→CD→D→DA→A STEP8:MOV BX,9000H;设置初始延时时间MOV DX, 200H;PA口地址MOV AL,ASTEPOUT DX,ALCALL DELAYMOV AL,ASTEP+BSTEPOUT DX,ALCALL DELAYMOV AL,BSTEPOUT DX,ALCALL DELAYMOV AL,BSTEP+CSTEPOUT DX,ALCALL DELAYMOV AL,CSTEPOUT DX,ALCALL DELAYMOV AL,CSTEP+DSTEPOUT DX,ALCALL DELAYMOV AL,DSTEPOUT DX,ALCALL DELAYMOV AL,DSTEP+ASTEPOUT DX,ALCALL DELAYJMP K0; 双四拍工作方式:AB→BC→CD→DA→ABSTEP4:MOV BX,5000H;设置延时时间MOV DX, 200H;PA口地址MOV AL,ASTEP+BSTEP;PA0PA1(AB相)输出高电平 OUT DX,ALCALL DELAY ;调延时MOV AL,BSTEP+CSTEP ;BC输出高电平OUT DX,ALCALL DELAY ;调延时MOV AL,CSTEP+DSTEP;CD输出高电平OUT DX,ALCALL DELAY ;调延时MOV AL,DSTEP+ASTEP;DA输出高电平OUT DX,ALCALL DELAY ;调延时JMP K0; 单四拍反转工作方式: D→C→B→A→DSTEP41:MOV BX,1000H;设置延时时间MOV DX,200H;PA口地址MOV AL,DSTEP; D输出高电平OUT DX,ALCALL DELAY;调延时MOV AL,CSTEP; C输出高电平OUT DX,ALCALL DELAY;调延时MOV AL,BSTEP; B输出高电平OUT DX,ALCALL DELAY;调延时MOV AL,ASTEP; A输出高电平OUT DX,ALCALL DELAY;调延时JMP K0DELAY PROC NEAR ;延时子程序PUSH CXMOV CX,BXDD1:NOPLOOP DD1POP CXRETDELAY ENDP ; 延时子程序结束CODE ENDS ;代码段结束END START。

51单片机驱动步进电机电路及程序

51单片机驱动步进电机电路及程序

51单片机驱动步进电机电路及程序在这里介绍一下用51单片机驱动步进电机的方法。

这款步进电机的驱动电压12V,步进角为度 . 一圈 360 度 , 需要 48 个脉冲完成!!!该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。

采用51驱动ULN2003的方法进行驱动。

ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。

;********************************************************************************* ;****************************步进电机的驱动*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz;--------------------------------------------------------------------------------- ; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!; 本步进电机步进角为度 . 一圈 360 度 , 需要 48 个脉冲完成!!!;---------------------------------------------------------------------------------; A组线圈对应; B组线圈对应; C组线圈对应; D组线圈对应; 正转次序: AB组--BC组--CD组--DA组 (即一个脉冲,正转度);---------------------------------------------------------------------------------- ;----------------------------正转--------------------------ORG 0000HLJMP MAINORG 0100HMAIN:MOV R3,#144 正转 3 圈共 144 脉冲START:MOV R0,#00HMOV P2,#00HMOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ START 对 A 的判断,当 A = 0 时则转到 STARTMOV P2,ALCALL DELAYINC R0DJNZ R3,START1MOV P2,#00HLCALL DELAY1;-----------------------------反转------------------------MOV R3,#144 反转一圈共 144 个脉冲START2:MOV P2,#00HMOV R0,#05START3:MOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ START2CALL DELAYINC R0DJNZ R3,START3MOV P2,#00HLCALL DELAY1LJMP MAINDELAY: MOV R7,#40 步进电机的转速M3: MOV R6,#248DJNZ R6,$DJNZ R7,M3RETDELAY1: MOV R4,#20 2S 延时子程序DEL2: MOV R3,#200DEL3: MOV R2,#250DJNZ R2,$DJNZ R3,DEL3DJNZ R4,DEL2RETTABLE:DB 30H,60H,0C0H,90H 正转表DB 00 正转结束DB 30H,90H,0C0H,60H 反转表DB 00 反转结束END。

步进电机控制实验报告

步进电机控制实验报告

一、 实验要求利用P0输出脉冲序列,74LS244输入开关量,开关K2-K8控制步进电机转换(分6挡),K0、K1控制步进电机转向。

必须要K2-K8中一开关和K0、K1中一开关同时为‘1’时步进电机才启动,其他情况步进电机不工作。

进电机才启动,其他情况步进电机不工作。

步进电机驱动原理是通过对它每线圈中的电流的顺序切换来使电机作步进式旋转。

驱动电路又脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。

微电脑控制步进电机最合适。

机最合适。

二、 试验目的1、 了解步进电机控制的基本原理。

了解步进电机控制的基本原理。

2、 掌握控制步进电机转动编程方法。

掌握控制步进电机转动编程方法。

三、步进电机工作原理步进电机是将给定的电脉冲信号转变为角位移或线位移的开环控制元件。

步进电机是将给定的电脉冲信号转变为角位移或线位移的开环控制元件。

给定一个电脉冲信号,步进电机转子就转过相应的角度,这个角度就称作该步进电机的步距角。

目前常用步进电机的步距角大多为1.8度(俗称一步)或0.9度(俗称半步)。

以步距角为0.9度的进步电机来说,当我们给步进电机一个电脉冲信号,步进电机就转过0.9度;给两个脉冲信号,步进电机就转过1.8度。

以此类推,连续给定脉冲信号,步进电机就可以连续运转。

由于电脉冲信号与步进电机转角存在的这种线性关系,使得步进电机在速度控制、位置控制等方面得到了广泛的应用。

控制、位置控制等方面得到了广泛的应用。

步进电机的使用至少需要三个方面的配合,一是电脉冲信号发生器,它按照给定的设置重复为步进电机输送电脉冲信号,目前这种信号大多数由可编程控制器或单片机来完成;二是驱动器(信号放大器),它除了对电脉冲信号进行放大、驱动步进电机转动以外,还可以通过它改善步进电机的使用性能,事实上它在步进电机系统中起着重要的作用,一般一种步进电机可以根据不同的工况具有多种驱动器;进电机可以根据不同的工况具有多种驱动器;三是步进电机,三是步进电机,它有多种控制原理和型号,它有多种控制原理和型号,现现在常用的有反应式、感应子式、混合式等。

步进电机控制接口实验

步进电机控制接口实验

实验一 步进电机控制接口实验一、实验目的通过步进电机控制实验,学习并行接口电路及其控制程序的设计原理与方法。

二、实验内容基本实验 控制四相步进电机以双八拍方式运行,自己设置按键来控制电机的启停。

三、实验要求利用MFID 实验平台和步进电机驱动模块板进行硬件连接,利用MF2KI 集成开发环境进行步进电机软件控制程序的设计、调试,直到使步进电机正常运行。

四、实验原理1.步进电机驱动模块板电路原理如图2.1.2所示。

模块板上包括接口的对象永磁式四相步进电机和驱动电路达林顿管TIP ,保护电路74LS373,相序指示灯以及开关SW 1和SW 2等。

2.步进电机接口设计原理与方法的详细阐述,参考计算机接口技术相关参考书。

图2.1.2 步进电机驱动模块电路原理框图五、实验步骤 步骤一:硬件连接跳线设置:模块电源L 区 JP8跳接。

单线连法如右图:F 区A 相B 相C 相D 相OE#74LS373开关P 区 PA0 PA2 PA4 PA6 PC4 PC0 PC1连接线按键开关T 区SW1 SW2排线接法如右图:步骤二:将平台的电源开关拔到“内”的位置上。

在配套集成环境下进行硬件检测,来达到初始化芯片的目的。

步骤三:(演示实验步骤)打开集成环境在“演示实验”菜单下点开“基本接口实验”。

在“基本接口实验”中的“并行接口实验”中选择“步进电机”实验进行演示。

步骤四:(学生实验步骤)打开集成环境在“文件”菜单下学生可以选择新建自己的C++/ASM文件或者集成环境自带的C++/ASM参考程序进行调试、运行。

步骤五:观看实验现象得出结论。

△步进电机接口控制流程图①△步进电机接口控制主程序:NAMA BUJINDIANJIDATA SEGMENTPSTA DB 05H,15H,14H,54H,50H,51H,41H,45H ;DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:CODEORG 100HBEGIN: MOV DX,303H ;初始化8255AMOV AL, 10000001B ;命令控制字OUT DX,AL ;送命令MOV AL,00001001B ;置PC4=1关闭74LS373OUT DX,ALL: MOV DX,302HIN AL,DXAND AL,00000010 ;查SW2按下?未按下,等待 JNZ L ;按下后继续执行MOV DX,303H ;置PC4=0,打开74LS37MOV AL,08HOUT DX,ALRELOAD: MOV SI,OFFSET PSTA ;设置相序表指针MOV CX,8 ;设8拍循环次数LOP: MOV DX,302HIN AL,DXAND AL,00000001 ;查SW1按下?未按下,等待 JZ QUIT ;已按下,退出MOV AL,[SI] ;未按下,送相序代码到PA口 MOV DX,300HOUT DX,ALMOV DI,0AFHMOV BX,0FFFFH ;延时DELAY: DEC BXJNZ DELAYDEC DIJNZ DELAYINC SI ;相序表指针+1DEC CX ;循环次数-1JNZ LOP ;未到8次,继续JMP RELOAD ;已到8次,重新赋值QUIT: MOV DX,303H ;置PC4=1,关闭74LS373MOV AL,09OUT DX,ALMOV AH,4CH ;程序退出,带返回码结束INT 21HCODE ENDSEND START七、心得体会上机实验操作是一个把理论用于实践的很好机会。

plc步进电机控制方法攻略程序+图纸

plc步进电机控制方法攻略程序+图纸

PLC控制步进电机应用实例基于PLC的步进电机运动控制一、步进电机工作原理1. 步进电机简介步进电机是一种将电脉冲转化为角位移的执行机构。

通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。

使得在速度、位置等控制领域用步进电机来控制变的非常的简单2. 步进电机的运转原理及结构电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。

0、1/3て、2/3て,即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A‘与齿5相对齐,(A‘就是A,齿5就是齿1)3. 旋转如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力,以下均同)。

如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。

如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。

如A相通电,B,C相不通电,齿4与A 对齐,转子又向右移过1/3て这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A相,电机转子向右转过一个齿距,如果不断地按A,B,C,A……通电,电机就每步(每脉冲)1/3て,向右旋转。

如按A,C,B,A……通电,电机就反转。

由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。

而方向由导电顺序决定。

步进电机的静态指标术语拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A. 步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。

步进电机系统开发方案

步进电机系统开发方案

步进电机系统开发方案
步进电机是一种通过控制电流大小和方向来驱动转子旋转的电机,它具有定位精度高、控制简单、响应迅速等优点,因此在许多自动化控制系统中得到了广泛应用。

步进电机的系统开发方案主要包括硬件设计和软件编程两个方面。

首先是硬件设计方面,主要需要设计电机驱动电路、控制器和电源等。

1. 电机驱动电路:根据步进电机的特性,采用适当的驱动方式,如全步进驱动、半步进驱动或微步进驱动。

电机驱动电路可以选择使用集成驱动芯片,也可以使用离散元件组成的驱动电路。

2. 控制器:设计一个控制器来控制步进电机的运动,通常采用单片机作为控制器,通过读取传感器的反馈信号确定电机的位置,并根据预定的控制算法来驱动电机旋转。

3. 电源:选择合适的电源供应步进电机系统,电源的稳定性和功率大小需要满足电机系统的需求。

其次是软件编程方面,主要包括控制算法的设计和编程实现。

1. 控制算法设计:根据步进电机的运动特性和系统需求,设计合适的控制算法,确定电机应该如何旋转以达到预定位置。

2. 程序编写:使用编程语言编写程序,在控制器上实现控制算法。

程序需要读取传感器数据、控制驱动电路以及与外部设备进行通信。

最后是整体系统测试和调试。

进行系统集成后,需要进行综合测试,验证硬件和软件的功能正常,并且达到了预期的性能要求。

如果发现问题,需要进行调试和优化,直到系统能够稳定
可靠地运行。

在步进电机系统的开发过程中,需要充分考虑各个组件之间的配合和协作,选用合适的硬件和软件设计方案,并进行系统测试和调试,才能确保最终的步进电机系统性能优良、稳定可靠。

实验5步进电机控制

实验5步进电机控制

实验五PWM配置及步进电机控制一、实验目的1. 了解步进电机驱动原理;2. 了解步进电机的控制原理;3. 熟悉使用PWM控制步进电机的运行。

二、实验主要内容1. DSP的初始化;2. ePWM模块初始化与配置;3. 步进电机的驱动程序。

三、实验基本原理1. 步进电机的驱动:图1 是单极性步进电机驱动的典型电路,图中的方块为驱动开关。

针对SEED-DEC 中直流电机系统的动作要求,步进电机驱动电路设计思路如下:1)电机采用15V直流电源供电;2)4路控制信号由DSP提供,信号为CMOS标准电平,通过排线接入并下拉;3)使用达林顿管TIP31C代替IRL549作为电机驱动开关,基级串接100欧电阻减小MOS管的寄生震荡;4)使用快速二极管IN4007完成保护功能,以免电机换向时烧毁电机;图 1 步进电机驱动电路2. 步进电机的控制一般分为四相四拍与四相八拍两种方式,其中前者称为全步,后者称为半步。

步进电机在这个实验中选择的时M35SP-7N,其步进角为7.5°,是一种单极性步进电机。

它的结构如图2:图 2 步进电机结构四、实验过程和关键程序解读1. 启动CCS,进入CCS的操作环境,并导入stepmotor工程。

2. 加载stepmotor工程,添加xml文件3. 阅读源代码1)初始化系统控制寄存器与要使用的GPIO:2)关中断、初始化PIE、初始化PIE向量表3)关ePWM时钟,配置后打开时钟,并更新中断向量表4)ePWM初始化函数(以EPwm1为例):EPWM2的其他配置与1相同,不用的在于一些事件产生的动作不同:其产生的pwm波为CMPAABCD线圈按照ACBD的次序导通步进电机接线示意图(2b-A、1b-B、1a-C、2a-D):则步进电机顺时针旋转4. 按照老师要求修改源代码1)改变步进电机的转速在使用直流电机时,通常是用占空比来调节转速的,但是在步进电机中,是通过改变PWM的频率来调整的,因为在一个PWM周期中,步进电机改变的相位是一样的,所以PWM频率越高,改变相同相位就越快,所以转速也越快,程序中我们只需改变TBPRD的值即可。

三相步进电机控制程序及电路

三相步进电机控制程序及电路

三相步进电机控制程序及电路概述三相步进电机是利用电子技术,通过不断地使电流按照一定规律改变来控制电机转动。

本文将介绍三相步进电机的控制程序,并详细讲解电路原理。

控制程序控制程序采用的是 Arduino 开发板,因为它易于编程和控制。

代码采用 C 语言实现,主要分为两部分:1.步进电机控制程序:该部分主要用于引脚配置和执行步进电机运动;2.事件驱动程序:该部分主要用于监测按键操作,以对步进电机执行不同的运动。

步进电机控制程序代码#define SPEED 50 //步进电机转速#define STEPS 6 //步进电机齿轮数目//定义步进电机引脚int stepPins[] = {8, 9, 10, 11};//定义步进电机步进方式数组(顺序为AB-BC-CD-DA)int stepSequence[][4] = {{HIGH, LOW, LOW, HIGH},{HIGH, HIGH, LOW, LOW},{LOW, HIGH, HIGH, LOW},{LOW, LOW, HIGH, HIGH}};void setup() {//设置步进电机引脚模式为输出for (int i = 0; i < 4; i++) {pinMode(stepPins[i], OUTPUT);}}void loop() {for (int j = 0; j < 2; j++) {//顺时针旋转for (int i = 0; i < STEPS * 4; i++) {int step = i % 4;for (int pin = 0; pin < 4; pin++) {digitalWrite(stepPins[pin], stepSequence[step][pin]);}delay(SPEED);}//逆时针旋转for (int i = STEPS * 4; i > 0; i--) {int step = i % 4;for (int pin = 0; pin < 4; pin++) {digitalWrite(stepPins[pin], stepSequence[step][pin]);}delay(SPEED);}}}事件驱动程序代码``` C #define BUTTON_PIN 2 //按键引脚 #define DEBOUNCE_DELAY 50 //防抖动延时//定义全局变量 bool clockwise = true; unsigned long debounceTimer = 0;void setup() { pinMode(BUTTON_PIN, INPUT); digitalWrite(BUTTON_PIN, HIGH); Serial.begin(9600); }void loop() { if (digitalRead(BUTTON_PIN) == LOW) { if (millis() - debounceTimer > DEBOUNCE_DELAY) { debounceTimer = millis(); clockwise= !clockwise; Serial.println(clockwise ?。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

步进电机的控制电路和程序
先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

上图是我们将要使用的51单片机综合学习系统硬件平台,本期实验我们用到了综合系统主机、步进电机,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

步进电机分类与结构
现在比较常用的步进电机分为三种:反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)。

本章节以反应式步进电机为例,介绍其基本原理与应用方法。

反应式步进电机可实现大转矩输出,步进角一般为1.5度。

反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。

常用小型步进电机的实物如图1
所示。

图1步进电机实物图

2 步进电机内部图
步进电机现场应用驱动电路
综合系统使用的是小型步进电机,对电压和电流
要求不是很高,为了说明应用原理,故采用最简单
的驱动电路,目的在于验证步进电机的使用,在正
式工业控制中还需在此基础上改进。

一般的驱动电
路可以用图3的形式。

图3 一般驱动电路
在实际应用中一般驱动路数不止一路,用上图的分立电路体积大,很多
场合用现成的集成电路作为多路驱动。

常用的小型步进电机驱动电路可以用
ULN2003或ULN2803。

本书配套实验板上用的是ULN2003。

ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。

ULN2003A由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。

ULN2003内部结构及等效电路图如图4:
图4 ULN2003内部框图及等效电路图
ULN2003A型高压大电流达林顿晶体管阵列电路的典型应用电路框图如图5所示。

钳位二极管用于保护线圈通断时的反电动势击穿集成电路,可以看出,该电路的应用非常简单。

图5 典型应用图
步进电机的程序设计
实现功能:开发板上电时电机正转,按住51单片机综合学习
系统上的按键SW20(P14)时反转。


6 步进电机实验演示图
电机正反转的环形脉冲分配表如下:
步数P00 P01 P02 P03 A B /A /B
1 1 1 0 0
2 0 1 1 0
3 0 0 1 1
4 1 0 0 1 表1:正转环形脉冲分配表
步数P00 P01 P02 P03 A B /A /B
1 1 1 0 0
2 1 0 0 1
3 0 0 1 1
4 0 1 1 0
表2:反转环形脉冲分配表
硬件原理图
图7 硬件原理图
程序流程图
图8 软件流程图
/*步进电机演示程序*/
/*目标器件:AT89S51 晶振:11.0592MHZ*/
/*编译环境:Keil 7.50A*/
/*********************************包含头文件********************************/ #include <reg51.h>
/*********************************端口定义**********************************/ sbit key = P1^4;
/*************************************************************
函数功能:延时子程序
入口参数:
出口参数:
************************************************************/
void delay(void)
{
int k;
for(k=0;k<2000;k++);
}
/************************************************************
函数功能:主程序
***********************************************************/
void main()
{
P0=0x00; //输出全高
key=1; //按键置输入状态
while(1) //主循环
{
if(key==1) //无键按下正转
{
P0=0xFC;//1100
delay();
P0=0xF6;//0110
delay();
P0=0xF3;//0011
delay();
P0=0xF9;//1001
delay();
}
Else //有键按下反转
{
P0=0xFC;//1100
delay();
P0=0xF9;//1001
delay();
P0=0xF3;//0011
delay();
P0=0xF6;//0110
delay();
}
}
}。

相关文档
最新文档