单片机控制步进电机,正反转,转速。程序编写帮助
diy个东西,没学过单片机,也没时间学习。愿意提供程序的高手请速加企鹅2419583157详聊,是比较简单的编程...
diy个东西,没学过单片机,也没时间学习。愿意提供程序的高手请速加企鹅2419583157详聊,是比较简单的编程
展开
3个回答
展开全部
#include <reg52.h> //51芯片管脚定义头文件
#include <intrins.h> //内部包含延时函数 _nop_();
#define uchar unsigned char
#define uint unsigned int
#define TIME 30
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2; //D1
sbit key1=P3^1;
sbit key2=P3^0;
sbit key3=P3^2;
sbit BEEP=P1^5;
sbit APositive = P1^0;
sbit ANegative = P1^1;
sbit BPositive = P1^2;
sbit BNegative = P1^3;
void delay(uint t)
{
uchar 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 j;
for (j=0;j<100;j++)
{
delayB(4);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay(170);
}
void zhengrun()
{
while(1)
{APositive = 0;
ANegative = 1;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 0;
ANegative = 0;
BPositive = 1; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 1;
ANegative = 0;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);}
}
void fanrun()
{ while(1)
{ APositive = 0;
ANegative = 0;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 1; // 两个0效果是一样的
delay(TIME);
APositive = 1;
ANegative = 0;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 0;
ANegative = 0;
BPositive = 1; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 0;
ANegative = 1;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
}
}
void main()
{ while(1)
{
if (key1==0)
{ delay(100);
if ( key1==0 )
{led1=~led1;
beep();
zhengrun();
}
while(!key1);}
if (key2==0)
{ delay(100);
if ( key2==0 )
{
led2=~led2;
beep();
fanrun();}
while(!key2);}
if (key3==0)
{ delay(100);
if ( key3==0 )
{led3=~led3;
beep();}
while(!key3);}
}
}
#include <intrins.h> //内部包含延时函数 _nop_();
#define uchar unsigned char
#define uint unsigned int
#define TIME 30
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2; //D1
sbit key1=P3^1;
sbit key2=P3^0;
sbit key3=P3^2;
sbit BEEP=P1^5;
sbit APositive = P1^0;
sbit ANegative = P1^1;
sbit BPositive = P1^2;
sbit BNegative = P1^3;
void delay(uint t)
{
uchar 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 j;
for (j=0;j<100;j++)
{
delayB(4);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay(170);
}
void zhengrun()
{
while(1)
{APositive = 0;
ANegative = 1;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 0;
ANegative = 0;
BPositive = 1; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 1;
ANegative = 0;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);}
}
void fanrun()
{ while(1)
{ APositive = 0;
ANegative = 0;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 1; // 两个0效果是一样的
delay(TIME);
APositive = 1;
ANegative = 0;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 0;
ANegative = 0;
BPositive = 1; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
APositive = 0;
ANegative = 1;
BPositive = 0; // B负和B正这两根线电平只要一样即可,两个1和
BNegative = 0; // 两个0效果是一样的
delay(TIME);
}
}
void main()
{ while(1)
{
if (key1==0)
{ delay(100);
if ( key1==0 )
{led1=~led1;
beep();
zhengrun();
}
while(!key1);}
if (key2==0)
{ delay(100);
if ( key2==0 )
{
led2=~led2;
beep();
fanrun();}
while(!key2);}
if (key3==0)
{ delay(100);
if ( key3==0 )
{led3=~led3;
beep();}
while(!key3);}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我一个朋友是做单片机培训的,应该懂的比较多,他们公司是北京德天驰鼎科技有限公司,如果你需要我可以帮你做联系哦。呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询