这是51单片机驱动ULN2003控制步进电机正反转的程序,我想学习下'我想问下,程序里定义的位是p

这是51单片机驱动ULN2003控制步进电机正反转的程序,我想学习下'我想问下,程序里定义的位是p0口的,为什么接线是p1口的呀。接线附图了~。还有这个程序可以实现吗? #include <reg52.h> sbit p00 = P0^0; sbit p01 = P0^1; sbit p02 = P0^2; unsigned char code Forward[4]={0xFC,0xF9,0xF3,0xF6};//正转表格 unsigned char code Return[8]={0xF7,0xF3,0xFB,0xF9,0xFD,0xFC,0xFE,0xF6};//反转表格 void delay(unsigned int i)//延时 {while(--i);} /*********** 步进电机正转P0口的第三口,P0^2***********************/ void turnfor(void) {unsigned char i; while(1) { if(p00 == 0) {delay(1000); if(p00 == 0) break; } if(p01 == 0) { if(p01 == 0) break; } for(i = 0; i < 4; i++) { P1 = Forward[i]; delay(2000); } } } /********************步进电机反转 P0口的第二口,P0^1*********************/ void retur(void) { unsigned char i; while(1) { if(p00 == 0) { delay(1000); if(p00 == 0) break; } if(p02 == 0) {delay(1000); if(p02 == 0) break; } for(i = 0; i < 8; i++) {P1 = Return[i]; delay(2000); } } } /*****************步进电机停止转动 P0口的第一口,P0^0*******************/ void stop(void) { while(1) { if(p01 == 0) { delay(1000); if(p01 == 0) break; } if(p02 == 0) {if(p02 == 0) break; } } } /************************步进电机转动主函数*******************************/ void Main(void) {stop(); while(1) {if(p00 == 0) {delay(1000); if(p00 == 0) stop(); } if(p01 == 0) {delay(1000); if(p01 == 0) retur(); } if(p02 == 0) {delay(1000); if(p02 == 0) turnfor(); } } }

第1个回答  2014-05-31
程序是P0,附图是P1肯定不能实现

单片机 ULN2003驱动步进电机,控制正反转电路图
用单片机的四个口接uln的四个输入,然后uln四个输出接步进电机的ABCD,剩下的那一根红线是接VCC的。控制单片机四个口的输出控制正反转 uchar zheng[8] ={0x01,0X03,0x02,0X06,0x04,0X0C,0x08,0X09};\/\/正转 电机导通相序 A-AB-B-BC-C-CD-D-DA uchar fan[8]={0X09,0X08,0X0C,0X...

51单片机步进电机正反转程序
单片机控制步进电机,我想你说的是两相步进电机,一般是控制其相序分配的顺逆从而控制正反转,一般而言,步进电机相序分配你可以做成一个数组比如step[]={0x03,0x06,0x0c,0x09},这样来说可以假设P0口是步进电机控制口,那么可以按如下方式来控制: while(1) { for(i=0;i<4;i++) { if(fx==1...

51单片机控制直流电机 用ULN2003作为驱动,怎样控制电机的正反转和变速...
用51做一个PWM波就可以控制转速了

如何用uln2003驱动直流电机控制正反转
要控制直流电机就不要用uln2003了,uln2003是集电极开路输出,你的电机两个引脚需要一个脚接电源正极,一个脚接到uln2003输出脚,当输出脚为低电平时电机转动,所以你的电机只能正转或者停转,而不能反转,如果需要反转的话,那么就要用到里面的四对达林顿管,接成H桥,此时灌电流的最大值是500mA,也就...

如果用单片机控制ULN2003连接5V直流电机,使其正传和反转,这样的电路图...
ULN2003是单极性的,不能控制正反转,只能控制开合,你可以用三极管焊接一个驱动电路。也可以选择电机驱动芯片比如L293D或者L298N都可以。红外传感器不行,必须选择人体释热传感器,输出就是高低电平。直接接单片机IO口就行。

...控制直流电机 实现正反转 停车 想用ULN2003 求电路原理图 以及PCB...
如果电机不是有两组绕组以及最少三个端子接线的话,使用ULN2003是不可行的,建议使用两个PNP三极管和两个NPN三极管构成H桥电路,作为电机驱动

...用51单片机控制uln2003驱动四线两相步进电机,求接线方式。电机是从...
电机是从光驱上拆下 求机电大神帮助,用51单片机控制uln2003驱动四线两相步进电机,求接线方式。电机是从光驱上拆下来的,想用两个电机做一个类似于数控机床的东西。... 求机电大神帮助,用51单片机控制uln2003驱动四线两相步进电机,求接线方式。电机是从光驱上拆下来的,想用两个电机做一个类似于数控机床的东西。

51单片ULN2003 控制步进电机 怎么我程序不能驱动 请高手看下
key == 0);} } \/\/ 1 <= num <= 8 P2 = num; \/\/外接LED可以当场看到num的值.} void qudong(){ uchar j, i;for(j = 0; j < 8; j++) { P1 = table[j];for(i = 0; i < num; i++) delay(20);} } void main(){ while(1) { key();qudong();} } ...

C51单片机+ULN2003能否驱动直流减速电机?如果能的话,电路应该怎么连接...
LN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,继电器得电吸合。因此:一端B1由C51控制,另一端C1控制电机。

ULN2003步进电机接线图及程序
二、ULN2003简介三、驱动板接5V和12V电机与单片机系统板的连接图电机可以使用单四拍、双四拍和八拍方式驱动4.1单四拍:A-B-C-D(0001、0010、0100、1000)#includeunsignedcharcodeF_Rotation[4]={0x01,0x02,0x01,0x08};\/\/正转表格unsignedcharcodeB_Rotation[4]={0x08,0x04,0x02,0x01};\/\/...

相似回答