¡Cómo usar un microcontrolador para controlar un motor paso a paso y usar dos luces para indicar su rotación hacia adelante y hacia atrás! Héroe, ¿puedes dibujarme un circuito cuando tengas tiempo? Gracias
?
Nombre del programa:? La llave controla la rotación hacia adelante y hacia atrás del motor.
¿La clave P1.0 está invertida? ¿P1.1 tecla para parar? ¿Es P1.2 clave para la rotación hacia adelante?
?
********************************************* ***** **********************/
/*Archivo de encabezado*/
#Contiene ? ltreg52.hgt?
#¿Incluir? ltintrins.h gt
#¿Definición? uint? ¿No firmado? (Igual que las organizaciones internacionales) Organizaciones internacionales
#Definición? ¿Uchar? ¿No firmado? Té
#Definición? _Nop()? _nop_()
/*Definición de puerto*/
#¿Definición? ¿Motor? ¿P0? /*Interfaz del motor paso a paso*/
sbit? ¿P12? =?p1^2;? /*Controlar la tecla de avance*/
sbit? ¿P11? =?p1^1;? /*Controlar el motor para que se detenga*/
sbit? ¿P10? =?p1^0;? /*Controlar marcha atrás del motor*/
sbit? led1? =?p1^3;? /*Luz indicadora de avance*/
sbit? led2? =?p1^4;? /*Luz indicadora de marcha atrás*/
Uchar? ¿Código? tabla1[]={0xf3, 0xf6, 0xfc, 0x F9};? /*Adelante*/
Uchar? ¿Código? tabla2[]={0xf3, 0xf9, 0xfc, 0x F6};? /*Tabla inversa*/
/*Programa de retraso de 1 milisegundo*/
¿No válido? delay_1ms(uchar?x)
{
Uchar? j;
mientras(x -)? {?para(j = 0; j lt125; j );? }
}
/*Programa principal*/
¿No es válido? Señor()
{
Uchar? Yunzhuang = 0;? /*¿Estado de ejecución? 0 parada? 1 adelante? 2Inversión*/
Uchar? contar = 0;? /*Número de pasos de rotación del motor*/
¿Motor? =?0xf0? /*El motor se detiene*/
while(1){
if(Yunzhuang==0){
¿Motor? =?0xf0? /*El motor deja de funcionar*/
led 1 = 0; led 2 = 0;
}
¿Qué más? if(Yunzhuang==1){
led 1 = 0; led 2 = 1;? //Igual a 0 para encender la luz LED.
¿Motor? =?tabla 1[recuento];? /*El motor gira hacia adelante*/
}
¿Y si? if(Yunzhuang==2){
led 1 = 1; led 2 = 0;? //Igual a 0 para encender la luz LED.
¿Motor? =?Tabla2[recuento];? /*Motor marcha atrás*/
}
count;
if(count gt;=4)?count = 0;
retraso _ 1 ms(5);
if(P12==0){
retraso _ 1 ms(3);
if(P12= = 0){
¿Yunzhuang? =?1;
}
}
¿Y si? if(P11==0){
retraso _ 1 ms(3);
if(P11==0){
Yunzhuang? =?0;
¿Contar? =?0;
}
}
¿Y si? if(P10==0){
retraso _ 1 ms(3);
if(P10==0){
Yunzhuang? =?2;
}
}
}
}