|
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit PUL=P1^0; //脈沖輸出
sbit DIR2=P2^1; //正反轉(zhuǎn)控制
sbit zz=P3^0; //正轉(zhuǎn)按鍵zz
sbit fz=P3^1; //反轉(zhuǎn)按鍵fz
//sbit hw=P1^1; //紅外接收
sbit k1=P3^2; //加速
sbit k2=P3^3; //減速
sbit LED1=P2^5;
sbit LED2=P2^6;
sbit LED3=P2^7;
uchar k=0;
void delay(uint i) //延時(shí)函數(shù)(P1^0口PWM輸出)
{
while(i--);
}
void motorsd(void) //電機(jī)調(diào)速,分4檔頻率分別為5HZ、7HZ、12.5HZ、50HZ
{
if(k1==0)
{
delay(2000);
if(k1==0)
{
if(k<60)
{
k=k+20;
}
else{k=0;}
while(!k1);
}
//while(!k1);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(k2==0)
{
delay(2000);
if(k2==0)
{
if(k>0)
{
k=k-20;
}
else{k=60;}
while(!k2) ;
}
// while(!k2) ;
}
}
void main() //主函數(shù)
{
if(zz==0) //正轉(zhuǎn)按下,LED1亮,電機(jī)正轉(zhuǎn)
{
LED1=0;
LED2=1;
LED3=1;
DIR2=0;
while(1)
{
motorsd();
PUL=0;
delay(70-k);
PUL=1;
delay(70-k);
if(fz==0) //正轉(zhuǎn)過程按下反轉(zhuǎn)跳出循環(huán),電機(jī)反轉(zhuǎn)
{
break;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(fz==0) //按下反轉(zhuǎn),LED2亮,電機(jī)反轉(zhuǎn)
{
LED2=0 ;
LED1=1;
LED3=1;
DIR2=1;
while(1)
{
motorsd();
PUL=0;
delay(70-k);
PUL=1;
delay(70-k);
if(zz==0) //反轉(zhuǎn)過程中按下正轉(zhuǎn),跳出循環(huán)電機(jī)正轉(zhuǎn)
{
break;
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|