久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機程序編譯沒有問題,燒錄后控制不了步進電機
[打印本頁]
作者:
新手-菜鳥
時間:
2018-11-17 13:41
標題:
單片機程序編譯沒有問題,燒錄后控制不了步進電機
#include "reg52.h"
void delay(unsigned int t);
//Motor
sbit F1 = P1^0;
sbit F2 = P1^1;
sbit F3 = P1^2;
sbit F4 = P1^3;
sbit k1 =P3^0;
sbit k2=P3^1;
sbit RX=P0^6; //
sbit TX=P0^7;
sbit shuidi=P0^3;
sbit hongyai=P0^0;
sbit yali=P0^2;
bit flag1=0;
bit flag2=0;
signed int time=0;
unsigned int timer=0;
unsigned long S=0;
unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反轉
unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正轉
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S= (long)(time*0.17); //算出來是CM
if((S>=4000)||flag1==1) //
{
flag1=0;
}
}
void zd0() interrupt 1 //T0中斷用來計數器溢出,超過測距范圍
{
flag1=1; //中斷溢出標志
}
void panduan()
{
TMOD=0x11; //設T0為方式1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8; //2MS定時
TL1=0x30;
ET0=1; //允許T0中斷
ET1=1; //允許T1中斷
TR1=1; //開啟定時器
EA=1; //總中斷
{
while(!RX); //當RX為零時等待
TR0=1; //開啟計數
while(RX); //當RX為1計數并等待
TR0=0; //關閉計數
Conut(); //計算
if(S<80)
flag2=0;
else
flag2=0;
}
//調節轉速
}
void motor_FFW()
{
unsigned char i;
{
for (i=0; i<8; i++)
{
if(hongyai==0) P1 = FFW[i]&0x1f; //調取數據
if(k2==0) P1 = FFW[i]&0x1f;
if(yali==0) P1 = FFW[i]&0x1f;
if(flag2==0)P1 = FFW[i]&0x1f;
delay(1);
}
}
}
void motor_FFZ()
{
unsigned char i;
{
for (i=0; i<8; i++)
{
if(k1==0) P1 = FFZ[i]&0x1f;
if(shuidi==0) P1 = FFZ[i]&0x1f;
delay(1); //調節轉速
}
}
}
void main()
{
while(1)
{
if(flag2==0)
motor_FFW();
if(shuidi==0)
motor_FFZ();
if(hongyai==0)
motor_FFW();
if(yali==0)
motor_FFW();
}
}
復制代碼
編譯沒有問題,程序燒錄后控制不了五線四相步進電機
求大神解決!
作者:
angmall
時間:
2018-11-17 21:23
你的程序有缺陷,我給你來個程序試試
/*-----------------------------------------------
名稱:步進電機
內容:本程序用于測試4相步進電機常規驅動
使用1-2相勵磁
1-2相激勵功率增倍,步進角度減半,抖動減少
順序如下 a-ab-b-bc-c-cd-d-da 又稱4相8拍
------------------------------------------------*/
#include <reg52.h>
sbit A1=P1^0; //定義步進電機連接端口
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通電,其他相斷電
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通電,其他相斷電
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通電,其他相斷電
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通電,其他相斷電
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通電,其他相斷電
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通電,其他相斷電
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電
unsigned char Speed;
bit Flag;
/*------------------------------------------------
uS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
主函數
------------------------------------------------*/
main()
{
unsigned int i=512;//旋轉一周時間
EA=1; //全局中斷開
EX0=1; //外部中斷0開
IT0=1; //1表示邊沿觸發
Speed=10;
while(1){
Coil_OFF
while((i--)&&Flag) //正向
{ Coil_A1
DelayMs(Speed);
Coil_AB1 //遇到Coil_AB1 用{A1=1;B1=1;C1=0;D1=0;}代替
DelayMs(Speed); //改變這個參數可以調整電機轉速 ,
//數字越小,轉速越大,力矩越小
Coil_B1
DelayMs(Speed);
Coil_BC1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_CD1
DelayMs(Speed);
Coil_D1
DelayMs(Speed);
Coil_DA1
DelayMs(Speed);
}
Coil_OFF
i=512;
while((i--)&&(!Flag))//反向
{
Coil_A1
DelayMs(Speed);
Coil_DA1 //遇到Coil_AB1 用{A1=1;B1=1;C1=0;D1=0;}代替
DelayMs(Speed); //改變這個參數可以調整電機轉速 ,
//數字越小,轉速越大,力矩越小
Coil_D1
DelayMs(Speed);
Coil_CD1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_BC1
DelayMs(Speed);
Coil_B1
DelayMs(Speed);
Coil_AB1
DelayMs(Speed);
}
}
}
/*------------------------------------------------
外部中斷程序
------------------------------------------------*/
void ISR_INT0(void) interrupt 0
{
if(!INT0)
{
DelayMs(10);//在此處可以添加去抖動程序,防止按鍵抖動造成錯誤
if(!INT0)
//while(!INT1);//等待按鍵釋放
{
Flag=!Flag;
}
}
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
九九热免费视频在线观看
|
91天堂网
|
亚洲综合区
|
中文字幕不卡一区
|
国产精品成人一区二区三区吃奶
|
欧美9999
|
国产精品99久久久久久大便
|
国产精品96久久久久久
|
日韩免费一区二区
|
国产精品一区二
|
毛片一区二区三区
|
国产福利免费视频
|
国产精品精品视频一区二区三区
|
亚洲91精品
|
888久久久
|
罗宾被扒开腿做同人网站
|
免费的日批视频
|
久久www免费人成看片高清
|
中文字幕一区二区三区日韩精品
|
成人精品一区二区户外勾搭野战
|
久久久久久久久久久久亚洲
|
国产精品久久久久久久久久久久午夜片
|
欧美激情视频一区二区三区在线播放
|
伊人免费网
|
国产福利91精品一区二区三区
|
97精品国产97久久久久久免费
|
亚洲成人综合社区
|
亚洲区一区二区
|
中文字幕色站
|
中文字幕乱码一区二区三区
|
久久成人亚洲
|
久干网
|
久久亚洲精品国产精品紫薇
|
欧美jizzhd精品欧美巨大免费
|
欧美成人精品一区二区男人看
|
久久亚洲一区二区
|
国产精品久久久久久久久久久久
|
亚洲天堂一区二区
|
91精品在线播放
|
中文字幕亚洲精品在线观看
|
欧美日一区二区
|