當前位置:首頁 » 編程語言 » 單片機c語言直流電機

單片機c語言直流電機

發布時間: 2023-05-25 23:50:39

1. 51單片機中如何用c語言控制直流電機正反轉

#include <毀跡reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P1^0;
sbit ENA=P1^1; //左輪 1
sbit IN2=P1^2;//左輪2
sbit IN3=P1^3;//右輪 1
sbit ENB=P1^4;
sbit IN4=P1^5;//右輪 2
sbit left=P0^0;
sbit right=P0^1;
/纖州並/sbit middle=P0^2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}
void init()
{
ENA=0; // 1
ENB=0; //
IN1=0; // 0
IN2=0; // 2
IN3=0;
IN4=0;

}
void pwm()
{
ENA=1;
ENB=1;
}
void dianji()
{

if(left==0&&right==0) //前進
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
pwm();
}
else if(left==0&&right==1) //右轉
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
pwm();
} else if(left=1&&right==0)// 左轉跡旁
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
pwm();
}

}
void main()
{
init();
while(1)
{
dianji();
}

}

2. 51單片機怎麼驅動直流電機c語言

51單片機驅動直流電機程序(用的是l298n晶元):

#include<reg51.h>

#include<math.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineN100

sbits1=P1^0;//電機驅動口

sbits2=P1^1;//電機驅動口

sbits3=P1^2;//電機驅動口

sbits4=P1^3;//電臘鬧機驅動口

sbiten1=P1^4;//電機使能端

sbiten2=P1^5;//電機使能端

sbitLSEN=P2^0;//光電對管最左

sbitLSEN1=P2^1;//光電對管左1

sbitLSEN2=P2^2;//光電對管左2

sbitRSEN1=P2^3;//光電老碼對管右1

sbitRSEN2=P2^4;//光電對管右2

sbitRSEN=P2^5;//光電對管最右

uintpwm1=0,pwm2=0,t=0;

voiddelay(uintxms)

{

uinta;

while(--xms)

{

for(a=123;a>0;a--);

}

}

voidmotor(ucharspeed1,ucharspeed2)

{

if(speed1>=-100&&speed1<=100)

{

pwm1=abs(speed1);

if(speed1>0)

{

s1=1;

s2=0;

}

if(speed1==0)

{

s1=1;

s2=1;

}

if(speed1<0)

{

s1=0;

s2=1;

}

}

if(speed2>=-100&&speed2<=100)

{

pwm2=abs(speed2);

if(speed2>0)

{

s3=1;

s4=0;

}

if(speed2==0)

{

s3=1;

s4=1;

}

if(speed2<0)

{

s3=0;

s4=1;

}

}

}

voidgo_forward(uintspeed)

{

s1=1;

s2=0;

s3=1;

s4=0;

pwm1=speed;

pwm2=speed;

}

voidgo_back(uintspeed)

{

s1=0;

s2=1;

s3=0;

s4=1;

pwm1=speed;

pwm2=speed;

}

voidstop()

{

s1=1;

s2=1;

s3=1;

s4=1;

pwm1=0;

pwm2=0;

}

voidturn_right(uintP1,uintP2)//右轉函數

{

s1=1;

s2=0;

s3=0;

s4=1;

pwm1=P1;

pwm2=P2;

}

voidturn_left(uintP1,uintP2)//左轉函數

{

s1=0;

s2=1;

s3=1;

s4=0;

pwm1=P1;

pwm2=P2;

}

voidtracking()

{

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0))//沒有檢測到

{

go_forward(100);

}

if((LSEN1==1)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0))//左一檢測到

{

turn_left(40,80);//左轉右輪》左輪

delay(N);

}

if((LSEN1==0)&&(LSEN2==1)&&(RSEN1==0)&&(RSEN2==0))//左二檢測到

{

turn_left(40,60);//左轉右輪》左輪

delay(N);

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==1)&&(RSEN2==0))//右一檢測到

{

turn_right(60,4);//右轉左輪》右輪

delay(N);

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==1))//右二檢測到

{

turn_right(80,40);//右轉左輪》右輪

delay(N);

}

if((LSEN1==1)&&(LSEN2==1))

{

turn_left(0,100);

delay(1000);

}

if((RSEN1==1)&&(RSEN2==1))

{

turn_right(100,0);

delay(1000);

}

}

voidavoidance()

{

}

voidinit()

{

TMOD=0x02;//timer0同時配置為模式2,8自動重裝計數模式

TH0=156;//定時器初輪含罩值設置100us中斷

TL0=156;

ET0=1;

EA=1;

TR0=1;//開啟總中斷

}

voidmain()

{

init();

while(1)

{

tracking();

}

}

voidtimer0()interrupt1//電機驅動提供PWM信號

{

if(t<pwm1)

en1=1;

else

en1=0;

if(t<pwm2)

en2=1;

else

en2=0;

t++;

if(t>100)

t=0;

}

(2)單片機c語言直流電機擴展閱讀

L298N是一種雙H橋電機驅動晶元,其中每個H橋可以提供2A的電流,功率部分的供電電壓范圍是2.5-48v,邏輯部分5v供電,接受5vTTL電平。一般情況下,功率部分的電壓應大於6V否則晶元可能不能正常工作。

3. 單片機控制電機正反轉動的c語言程序

首先要看你的電機是直流電機還是步進電機。直流電機就簡單了,只有兩根線,電機兩端電壓正負極改變就可以實現正轉反轉。不過要加電機驅動晶元,或者H橋電路,電機驅動晶元可以選擇L298N,加上適當的外圍電路就可以直接用單片機控制電機了。比如讓單片機P1.0 = 0,P1.1 = 1;(單片機I/0口要與電機驅動晶元的輸入腳相連)這樣的話,電機驅動晶元就會輸出一個電壓差,可以使直流電機向一個方向轉,如果使P1.0 = 1,P1.1 = 0,則電機驅動晶元會輸出一個和剛才相反的電壓,使電機向相反的方向轉動。H橋電路和電機驅動晶元的原理差不多,網上多的是。我這說的只是簡單的原理,實際中,L298N的輸入端和單片機相連的時候要加光耦隔離,否則單片機會工作不正常。步進電機就稍微復雜點,也得需要電機驅動晶元才行,只不過控制信號是按一定的規律給的,規律變了,電機轉動的方向也就變了。樓上給出的貌似是步進電機的驅動程序。

4. 52單片機實現控制直流電機調速(C語言)

pwm波,控配洞明制占空比硬體需要電機驅動晶元比如298PWM輸出腳P1.1腳:#define
out
P1^1占培告空比顫巧全局變數
unsigned
char
ZKB;
//ZKB=1~100即1%~100%void
moto_control(){unsigned
char
i;for(i=0;i<100;i++){if(i==0)out=1;if(i==ZKB)out=0;}}

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:945
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:742
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372