欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3539|回復: 0
打印 上一主題 下一主題
收起左側

51單片機控制步進電機-換向與加減速程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:433454 發表于 2019-5-8 17:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1 = P3^0; //步進電機 1 啟動
sbit k2 = P3^1; //換向
sbit k3 = P3^2; //加速
sbit k4 = P3^3; //減速
sbit k5 = P3^4; //步進電機 2 啟動
sbit k6 = P3^5; //換向
sbit k7 =  P3^6; //加速
sbit k8 = P3^7; //減速
bit flag = 0 ; //電機正反轉標志位
uchar code table[] = {0x01 , 0x02 , 0x04 , 0x08 , 0x08 , 0x04 , 0x02 , 0x01} ; // 電機正反
轉 I/O 口高低電平對應表;
uchar num = 0 ,maichong = 4 , begin = 0 ;
//延時函數
void delay(uchar i)
{
uchar j ,k ;
for(j =  i ;j>0 ; j--)
for(k=125 ; k>0 ; k--);
}
void key() //按鍵檢測處理函數
{
if(k3 == 0)
{
delay(5) ; //加速鍵按下,消抖
if(k3 == 0)
{
num++ ; //速度加 1
if(num == 8)
num = 7 ; //達到最大速度 7 保持
附錄 C  設計程序(C 語言)
20
while(k3 == 0) ; //等待松開按鍵
}
}
if(k7 == 0)
{
delay(5) ;
if(k7 == 0)
{
num++ ;
if(num == 8)
num = 7 ;
while(k7 == 0);
}
}
if(k4 == 0)
{
delay(5) ;
if(k4 == 0)
{
if(num!= 0)
num--  ;
else
num = 0 ;
while(k4 == 0) ;
}
}
if(k8 == 0)
{
delay(5) ;
if(k8 == 0)
{
if(num!= 0)
num--  ;
while(k8 == 0) ;
}
}
if(k2 == 0)
附錄 C  設計程序(C 語言)
21
{
delay(5) ;
if(k2 == 0)
{
flag = ~flag ;
while(k2 == 0) ;
}
}
if(k6 == 0)
{
delay(5) ;
if(k6 == 0)
{
flag = ~flag;
while(k2 == 0) ;
}
}
}
void pinlv()
{
switch(num)
{
case 0:
maichong = 12 ;
break ;
case 1:
maichong = 10 ;
break ;
case 2:
maichong = 8 ;
break ;
case 3:
maichong = 6 ;
break ;
case 4:
maichong = 4 ;
break ;
附錄 C  設計程序(C 語言)
22
case 5:
maichong = 2 ;
break ;
case 6:
maichong = 1 ;
break ;
case 7:
maichong = 0 ;
break ;
}
if(flag == 0)
{
begin = 0 ; // flag=0,正轉
}
else
begin = 4 ; // flag=1,反轉
}
void qudong()
{
uchar i , j ;
for(j=0+begin;j<4+begin;j++)
{
if(k1 == 0)
{
P1 = 0xff ;
}
else
{
P1 = table[j] ;
for(i=0;i<maichong;i++)
{
delay(10) ;
}
}
if(k5 == 0)
{
P2 = 0xff;
附錄 C  設計程序(C 語言)
23
}
else
{
P2 = table[j] ;
for(i=0;i<maichong;i++)
{
delay(10) ;
}
}
}
}
void main()
{
while(1)
{
key();
pinlv();
qudong();
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表