欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機控制步進電機
[打印本頁]
作者:
瓦爾多歐冠
時間:
2018-9-8 16:54
標題:
51單片機控制步進電機
#include <reg52.h>
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
unsigned char code zheng[4]={0x08,0x04,0x02,0x01};//正轉表格
unsigned char code fan[4]={0x01,0x02,0x04,0x08};//反轉表格
uchar flag_start ; //啟動標志位 1為起動步進電機 否則關閉電機
uchar flag_z_f; //正反標志位 0為順時鐘 1為逆時史上轉
uchar flag_shudu; //4種速度 0,1,2,3,
uint flag_shudu_value = 400;
void Delay(unsigned int i)//延時
{
while(--i);
}
uchar key_can;
/********************獨立按鍵程序*****************/
void key()
{
static uchar key_new;
key_can = 20; //按鍵值還原
if((P3 & 0xf0) != 0xf0) //按鍵按下
{
Delay(5); //按鍵消抖動
if(((P3 & 0xf0) != 0xf0) && (key_new == 1))
{ //確認是按鍵按下
key_new = 0;
switch(P3 & 0xf0)
{
case 0xe0: key_can = 1; break; //得到按鍵值
case 0xd0: key_can = 2; break; //得到按鍵值
case 0xb0: key_can = 3; break; //得到按鍵值
case 0x70: key_can = 4; break; //得到按鍵值
}
}
}
else //按鍵松開
key_new = 1;
}
/******************主程序**********************/
void main()
{
unsigned char i;
while(1)
{
key();
if(key_can < 10)
{
if(key_can == 1) //啟動鍵
{
if(flag_start == 0) //啟動
{
flag_start = 1;
switch(flag_shudu)
{
case 0: flag_shudu_value = 500; P2 = 0xf0; break; //速度1 最快
case 1: flag_shudu_value = 800; P2 = 0xf9; break;
case 2: flag_shudu_value = 1000; P2 = 0xfc; break;
case 3: flag_shudu_value = 1500;P2 = 0xfe; break; //速度4 最慢
}
}
else //停止
{
flag_start = 0;
P2 = 0XFF; //關閉指示燈
}
}if(key_can == 2) //正反轉鍵
{
flag_z_f = ~flag_z_f; //
}if(key_can == 3) //減速
{
flag_shudu ++;
if(flag_shudu >= 4)
flag_shudu = 0;
switch(flag_shudu)
{
case 0: flag_shudu_value = 500; P2 = 0xf0; break; //速度1 最快
case 1: flag_shudu_value = 800; P2 = 0xf9; break;
case 2: flag_shudu_value = 1000; P2 = 0xfc; break;
case 3: flag_shudu_value = 1500;P2 = 0xfe; break; //速度4 最慢
}
}if(key_can == 4) //加速
{
if(flag_shudu == 0)
flag_shudu = 4;
flag_shudu --;
switch(flag_shudu)
{
case 0: flag_shudu_value = 500; P2 = 0xf0; break; //速度1 最快
case 1: flag_shudu_value = 800; P2 = 0xf8; break;
case 2: flag_shudu_value = 1000; P2 = 0xfc; break;
case 3: flag_shudu_value = 1500;P2 = 0xfe; break; //速度4 最慢
}
}
}
if(flag_start == 1)
{
for(i=0;i<4;i++) //4相
{
if(flag_z_f == 0)
P1=zheng[i]; //電機正轉
else
P1=fan[i]; //電機反轉
Delay(flag_shudu_value); //改變這個參數可以調整電機轉速
}
}
}
}
復制代碼
作者:
admin
時間:
2018-9-8 18:16
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
作者:
阿拉登666
時間:
2018-11-30 13:36
很不錯的例子
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1