一、步进电机
#include<reg51.h>
sbit S1 =P0^0;
sbit S2 =P0^1;
sbit S3 =P0^2;
sbit S4 =P0^3;
unsigned char COUNT;
void delay (unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
void forward()
{
do
{
P1=0x08;//A
delay(COUNT);
P1=0x09;//AD
delay (COUNT);
P1=0x01;//D
delay (COUNT);
P1=0x03;//DC
delay (COUNT);
P1=0x02;//C
delay (COUNT);
P1=0x06;//CB
delay (COUNT);
P1=0x04;//B
delay (COUNT);
P1=0x0C;//BA
delay (COUNT);
if(S3==0)
{
if(COUNT > 2)
COUNT--;
}
if(S4==0)
{
if(COUNT<50)
COUNT++;
}
}
while(S1==1);
}
void reverse()
{
do
{
P1 = 0x08;//A
delay (COUNT);
P1 = 0x0C;//AB
delay (COUNT);
P1 = 0x04;//B
delay (COUNT);
P1 = 0x06;//BC
delay (COUNT);
P1 = 0x02;//C
delay (COUNT);
P1 = 0x03;//CD
delay (COUNT);
P1 = 0x01;//D
delay (COUNT);
P1 = 0x09;//DA
delay (COUNT);
if(S3==0)
{
if(COUNT > 2)
COUNT--;
}
if(S4==0)
{
if(COUNT<50)
COUNT++;
}
}
while(S2==1);
}
void main()
{
COUNT = 20;
while(1)
{
if(S1==0)// ת
reverse();
if(S2==0)
forward();
}
}
二、风扇
#include <REG51.H>
#include <stdio.h>
sbit DJA=P1^0;
sbit DJB=P1^1;
sbit S1=P3^2;
sbit S2=P3^3;
bit flag;
unsigned char number;
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
void pwm(bit a,bit b,unsigned int d1,unsigned int d2)
{
DJB=a;
DJA=b;
delay(d1);
DJA=0;
DJB=0;
delay(d2);
}
void main()
{
flag=0;
number=0x00;
DJA=0;
DJB=0;
while(1)
{
if(S1==0)
{
delay(1200);
if(S1==0)
{
while(!S1);
flag=~flag;
}
}
if(S2==0)
{
delay(1200);
if(S2==0)
{
while(!S2);
if(number<=3)
number++;
else number=0x01;
}
}
if(!flag)
{
switch(number)
{
case 0x01:pwm(0,1,720,1680);break;
case 0x02:pwm(0,1,1250,1250);break;
case 0x03:pwm(0,1,1680,720);break;
default:;
}
}
else
{
switch(number)
{
case 0x01:pwm(0,1,720,1680);break;
case 0x02:pwm(0,1,1250,1250);break;
case 0x03:pwm(0,1,1680,720);break;
default:;
}
}
}
}
仿真图百度网盘自取
链接:https://pan.baidu.com/s/10UzvrDmeGuc88BYaglyQQA
提取码:2222