導航:首頁 > 操作系統 > 51單片機驅動器控制

51單片機驅動器控制

發布時間:2023-08-15 01:38:34

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

}

(1)51單片機驅動器控制擴展閱讀

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

❷ 51單片機通過伺服驅動器控制伺服電機

看你伺服電機的設置情況如何了,位置模式,信號可以是PULSE+PULSE或PULSE+DIR兩種模式,及雙脈沖或脈沖+方向。你只需要兩個控制IO口就可以了,PUL-及DIR-接GND。要想伺服電機運轉需要脈沖信號,伺服電機的速度是靠脈沖信號的頻率決定的。所以發電平是無法讓電機轉動的。

❸ 怎麼用51單片機控制舵機

操作步驟:
1 單片機,舵機,電源共地;
2 用兩個穩壓晶元進行供電,將電源分開來;
3 舵機信號端沒有直接連接單片機IO口,我串了一個10K的電阻,也就是這一步之後就可以控制舵機。

❹ 用51單片機可以控制三菱的伺服電機么

可以,如果51+三菱伺服驅動器+三菱電機,那很簡單,就是讓51的一個引腳輸出高或低電平控制方向,另外一個引腳發脈沖到伺服驅動器就可以(要注意電壓配合,中間電路)。如果用51做伺服驅動器,那就復雜了,要外加加減計數器、倍頻器、分頻器、如果是增量編碼器反饋,還要加正交解碼器等。而且51的運行速度低,精度只有8位,就算做出來效果都很差,沒必要。最起碼都用內含上述硬體的16位dsp或32位單片機做。

❺ 51單片機怎麼控制步進電機驅動器

以八步為例:A→AB→B→BC→C→CD→D→DA→A就可以了,若需要反轉就從右往左順序就可以了

❻ 51單片機驅動的顯示屏怎麼關閉和開啟顯示屏

通過輸入開關控制指令關閉和開啟顯示屏。
根據CSDN博客顯示,51單片機搭悉連接電腦後,慧枝握通過輸入開關控制指令關閉和開啟顯示屏。
51單片前慶機是對兼容英特爾8051指令系統的單片機的統稱。51單片機廣泛應用於家用電器、汽車、工業測控、通信設備中。

閱讀全文

與51單片機驅動器控制相關的資料

熱點內容
手機設置遠程定位伺服器地址 瀏覽:913
android模擬器裝apk 瀏覽:773
炒黃金app哪個好用 瀏覽:993
恐懼症app哪個最好用 瀏覽:288
億賽通加密軟體好用嗎 瀏覽:578
為什麼光遇排隊伺服器忙 瀏覽:826
哪個app能把手p瘦 瀏覽:253
java中的date類型 瀏覽:431
面向程序員的范疇論 瀏覽:57
如何查詢伺服器所有電腦名 瀏覽:902
shell命令jar 瀏覽:301
有什麼做手帳app 瀏覽:156
phpjquery源碼 瀏覽:886
大話西遊手游源碼 瀏覽:655
javaudp代碼 瀏覽:660
linuxu盤啟動win7 瀏覽:990
如何啟用交換機dhcp伺服器 瀏覽:237
三田汽車壓縮機好嗎 瀏覽:294
馬蜂窩app偏向什麼客戶 瀏覽:366
php簡單的登錄注冊 瀏覽:554