#include<uart.h>//包含串口通信頭文件(里面含有reg52.h)#include//包含printf頭文件
#define uint unsigned int
#define uchar unsigned char
本文引用地址:http://m.butianyuan.cn/article/201611/320052.htmsbit cp = P2^0;//脈沖輸入端
sbit dir = P2^1;//方向控制端
sbit free = P2^2;//脫機(jī)控制端,一般接高即可
sbit jia_su = P1^0;//加速鍵key1聲明
sbit jian_su = P1^1;//減速鍵key2聲明
sbit fang_xiang = P1^2;//切換方向鍵key3聲明
sbit ting = P1^3;//停止鍵key4聲明
uint num;
void uart_Init();//串口初始化子函數(shù)聲明
void delay(uint z)//ms子函數(shù)
{
uint x,y;
for(x = 0;xfor(y = 0;y<120;y++);
}
void delay1(uint z)//電機(jī)延時(shí)子函數(shù)us級(jí)
{
uint x;
for(x = 0;x
}
void init()//初始化電機(jī)、串口子函數(shù)
{
num = 2;
dir = 1;
free = 1;
uart_Init();
}
void key_scan()//鍵盤控制子函數(shù)
{
if(jia_su == 0)//判斷有加速鍵按下
{
delay(5);//延時(shí)消抖
if(jia_su == 0)//再次判斷有加速鍵按下
{
num++;//num(代表電機(jī)轉(zhuǎn)速)增加
if(num>4)
{num=4;}
while(!jia_su);//松手檢測
delay(5);
while(!jia_su);
printf("num = %dn",num);//通過串口查看num值
}
}
if(jian_su == 0)//判斷有減速鍵按下
{
delay(5);//延時(shí)消抖
if(jian_su == 0)//再次判斷有減速鍵按下
{
num--;//num(代表電機(jī)轉(zhuǎn)速)減小
if(num<1)
{num=0;}
while(!jian_su);//松手檢測
delay(5);
while(!jian_su);
printf("num = %dn",num);//通過串口查看num值
}
}
if(fang_xiang ==0)//判斷是否有方向切換鍵按下
{
delay(5);//延時(shí)消抖
if(fang_xiang == 0)
{
dir =~dir;//方向改變
while(!fang_xiang);//松手檢測
delay(5);
while(!fang_xiang);
printf("dir = %dn",dir);
}
}
if(ting ==0)//判斷是否有停止鍵按下
{
delay(5);//延時(shí)消抖
if(ting == 0)
{
num = 0;//停止
while(!ting);//松手檢測
delay(5);
while(!ting);
}
}
switch(num)
{
case 0: cp = 1; break;//電機(jī)停止
case 1: //以低速轉(zhuǎn)動(dòng)
{
cp = 1;
delay1(20);
cp = 0;
delay1(20);
}
break;
case 2: //以中速轉(zhuǎn)動(dòng)
{
cp = 1;
delay1(15);
cp = 0;
delay1(15);
}
break;
case 3: //以高速轉(zhuǎn)動(dòng)
{
cp = 1;
delay1(10);
cp = 0;
delay1(10);
}
break;
case 4: //以更高速轉(zhuǎn)動(dòng)
{
cp = 1;
delay1(5);
cp = 0;
delay1(5);
}
break;
}
}
void main()
{
init();//調(diào)用初始化子函數(shù)
while(1)
{
key_scan();//不停鍵盤掃描
}
}
評(píng)論