真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言實(shí)現(xiàn)電機(jī)速度減函數(shù) c語(yǔ)言電機(jī)控制

誰(shuí)有基于51單片機(jī)的步進(jìn)電機(jī)C程序,可實(shí)現(xiàn)啟動(dòng),停止,加減速,并顯示等,找了半天沒(méi)找到

#include reg52.h

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無(wú)止境。

#define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換

sbit LATCH1=P2^2;//定義鎖存使能端口 段鎖存

sbit LATCH2=P2^3;// 位鎖存

unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9

unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼

unsigned char TempData[8]; //存儲(chǔ)顯示值的全局變量

sbit A1=P1^0; //定義步進(jìn)電機(jī)連接端口

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;

void Display(unsigned char FirstBit,unsigned char Num);

void Init_Timer0(void);

/*------------------------------------------------

uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值

unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是

0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)

長(zhǎng)度如下 T=tx2+5 uS

------------------------------------------------*/

void DelayUs2x(unsigned char t)

{

while(--t);

}

/*------------------------------------------------

mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值

unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是

0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編

------------------------------------------------*/

void DelayMs(unsigned char t)

{

while(t--)

{

//大致延時(shí)1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

main()

{

unsigned int i=512;//旋轉(zhuǎn)一周時(shí)間

Init_Timer0();

EA=1; //全局中斷開(kāi)

EX0=1; //外部中斷0開(kāi)

IT0=1; //1表示邊沿觸發(fā)

Speed=3;

TempData[0]=dofly_DuanMa[Speed/10];//分解顯示信息,如要顯示68,

TempData[1]=dofly_DuanMa[Speed%10];//則68/10=6 68%10=8

Coil_OFF

while(i--) //正向

{ Coil_A1

DelayMs(Speed);

Coil_AB1 //遇到Coil_AB1 用{A1=1;B1=1;C1=0;D1=0;}代替

DelayMs(Speed); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,

//數(shù)字越小,轉(zhuǎn)速越大,力矩越小

Coil_B1

DelayMs(Speed);

Coil_BC1

DelayMs(Speed);

Coil_C1

DelayMs(Speed);

Coil_CD1

DelayMs(Speed);

Coil_D1

DelayMs(Speed);

Coil_DA1

DelayMs(Speed);

}

}

/*------------------------------------------------

外部中斷程序

------------------------------------------------*/

void ISR_INT0(void) interrupt 0

{

if(!INT0)

{

DelayMs(10);//在此處可以添加去抖動(dòng)程序,防止按鍵抖動(dòng)造成錯(cuò)誤

if(!INT0)

//while(!INT1);//等待按鍵釋放

{

Speed++;

if(Speed==20)

Speed=3;

TempData[0]=dofly_DuanMa[Speed/10];//分解顯示信息,如要顯示68,

TempData[1]=dofly_DuanMa[Speed%10];//則68/10=6 68%10=8

}

}

}

/*------------------------------------------------

顯示函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管

輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值2表示從第三個(gè)數(shù)碼管開(kāi)始顯示

如輸入0表示從第一個(gè)顯示。

Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2

------------------------------------------------*/

void Display(unsigned char FirstBit,unsigned char Num)

{

static unsigned char i=0;

DataPort=0; //清空數(shù)據(jù),防止有交替重影

LATCH1=1; //段鎖存

LATCH1=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位碼

LATCH2=1; //位鎖存

LATCH2=0;

DataPort=TempData[i]; //取顯示數(shù)據(jù),段碼

LATCH1=1; //段鎖存

LATCH1=0;

i++;

if(i==Num)

i=0;

}

/*------------------------------------------------

定時(shí)器初始化子程序

------------------------------------------------*/

void Init_Timer0(void)

{

TMOD |= 0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響

//TH0=0x00; //給定初值

//TL0=0x00;

EA=1; //總中斷打開(kāi)

ET0=1; //定時(shí)器中斷打開(kāi)

TR0=1; //定時(shí)器開(kāi)關(guān)打開(kāi)

PT0=1; //優(yōu)先級(jí)打開(kāi)

}

/*------------------------------------------------

定時(shí)器中斷子程序

------------------------------------------------*/

void Timer0_isr(void) interrupt 1

{

TH0=(65536-2000)/256; //重新賦值 2ms

TL0=(65536-2000)%256;

Display(0,8);

}

51單片機(jī)步進(jìn)電機(jī)加減速的c語(yǔ)言 。求答案

#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;

unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反轉(zhuǎn)

unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正轉(zhuǎn)

unsigned int K;

/**********************************************************************

* *

* 步進(jìn)電機(jī)驅(qū)動(dòng) *

* *

***********************************************************************/

void motor_ffw()

{

unsigned char i;

unsigned int j;

for (j=0; j12; j++) //轉(zhuǎn)1*n圈

{

for (i=0; i8; i++) //一個(gè)周期轉(zhuǎn)30度

{

if(K==1) P1 = FFW[i]0x1f; //取數(shù)據(jù)

if(K==2) P1 = FFZ[i]0x1f;

delay(15); //調(diào)節(jié)轉(zhuǎn)速

}

}

}

/******************************************************

*

* 延時(shí)程序

*

********************************************************/

void delay(unsigned int t)

{

unsigned int k;

while(t--)

{

for(k=0; k100; k++)

{ }

}

}

main()

{

while(1)

{

K=1;

motor_ffw();

K=2;

motor_ffw();

}

}

給你個(gè)例子,這是正反轉(zhuǎn)的可以用這個(gè)修改出加減速程序

求采納為滿意回答。

用c語(yǔ)言程序?qū)崿F(xiàn)步進(jìn)電機(jī)的正反轉(zhuǎn)加減速的編程

內(nèi)容:1、本程序用于測(cè)試4相步進(jìn)電機(jī)常規(guī)驅(qū)動(dòng)

2、需要用跳帽或者杜邦線把信號(hào)輸出端和對(duì)應(yīng)的步進(jìn)電機(jī)信號(hào)輸入端連接起來(lái)

3、速度不可以調(diào)節(jié)的過(guò)快,不然就沒(méi)有力矩轉(zhuǎn)動(dòng)了

4、按s4(設(shè)置成獨(dú)立按鍵模式)可以控制正反轉(zhuǎn)

------------------------------------------------*/

#include reg52.h

bit Flag;//定義正反轉(zhuǎn)標(biāo)志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正轉(zhuǎn)表格

unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反轉(zhuǎn)表格

/******************************************************************/

/* 延時(shí)函數(shù) */

/******************************************************************/

void Delay(unsigned int i)//延時(shí)

{

while(--i);

}

/******************************************************************/

/* 主函數(shù) */

/******************************************************************/

main()

{

unsigned char i;

EX1=1; //外部中斷0開(kāi)

IT1=1; //邊沿觸發(fā)

EA=1; //全局中斷開(kāi)

while(!Flag)

{

P0=0x71;//顯示 F 標(biāo)示正轉(zhuǎn)

for(i=0;i4;i++) //4相

{

P1=F_Rotation[i]; //輸出對(duì)應(yīng)的相 可以自行換成反轉(zhuǎn)表格

Delay(500); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大

}

}

while(Flag)

{

P0=0x7C;//顯示 b 標(biāo)示反轉(zhuǎn)

for(i=0;i4;i++) //4相

{

P1=B_Rotation[i]; //輸出對(duì)應(yīng)的相

Delay(500); //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大

}

}

}

/******************************************************************/

/* 中斷入口函數(shù) */

/******************************************************************/

void ISR_Key(void) interrupt 2 using 1

{

Delay(300);

Flag=!Flag; //s3按下觸發(fā)一次,標(biāo)志位取反

}

C51 C語(yǔ)言怎么實(shí)現(xiàn)42步進(jìn)電機(jī)加速、減速控制?

42步進(jìn)電機(jī)是一個(gè)兩相電機(jī),一般控制可以分為全步或半步控制,全步控制,每一切換相序,步進(jìn)電機(jī)走1.8度,半步控制則走0.9度。

全步控制相序分配為:A,/A,B,/B

半步控制相序分配為:A,AB,B,B/A,/A,/A/B,/B,/BA

加速的話,就使相序切換快一點(diǎn)就可以;當(dāng)然減速就是相序切換慢點(diǎn)就行。舉例如下:

#includereg51.h

#define uchar unsigned char

uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09};

uchar num=0,fx=0;

sbit keyup=P3^0;

sbit keydn=P3^1;

sbit keyfx=P3^2;

int speed=10000;

void t0isr() interrupt 1

{

TH0=(65536-speed)/256;

TL0=(65536-speed)%256;

P2=stepd[num];

if(fx==0){num++;num%=8;}

if(fx==1)

{

if(num==0)num=7;

else num--;

}

}

main()

{

TMOD=0x01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(keyup==0)

{

while(key1==0);

speed-=10;

}

if(keydn==0)

{

while(keydn==0);

speed+=10;

}

if(key3==0)

{

while(key3==0);

fx=~fx;

}

}

}


當(dāng)前名稱:c語(yǔ)言實(shí)現(xiàn)電機(jī)速度減函數(shù) c語(yǔ)言電機(jī)控制
文章來(lái)源:http://weahome.cn/article/ddpoosj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部