日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于51单片机的直流电机驱动(L298…

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于51单片机的直流电机驱动(L298… 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

L298SGS公司的產品,L298N15個管角的單塊集成電路,高電壓,高電流,四通道驅動,設計用L298N來接收DTL或者TTL邏輯電平,驅動感性負載(比如繼電器,直流和步進馬達)和開關電源晶體管。內部包含4通道邏輯驅動電路,其額定工作電流為?1?A,最大可達?1.5?AVss?電壓最小?4.5?V,最大可達?36?VVs?電壓最大值也是?36?VL298N可直接對電機進行控制,無須隔離電路,可以驅動雙電機。

1,L298內部的原理圖



2,L298?引腳符號及功能



3,L298的邏輯功能



當使能端為高電平時,輸入端IN1為PWM信號,IN2為低電平信號時,電機正轉;輸入端IN1為低電平信號,IN2為PWM信號時,電機反轉;;IN1與IN2相?同時,電機快速停止。當使能端為低電平時,電動機停止轉動。

在對直流電動機電壓的控制和驅動中,半導體功率器件(L298)在使用上可以分為兩種方式:線性放大驅動方式和開關驅動方式在線性放大驅動方式。

半導體功率器件工作在線性區優點是控制原理簡單,輸出波動小,線性好,對鄰近電路干擾小,缺點為功率器件工作在線性區,功率低和散熱問題嚴重。開關驅動方式是使半導體功率器件工作在開關狀態,通過脈調制(PWM)來控制電動機的電壓,從而實現電動機轉速的控制。



#include ? ?

#include ? ? ? ? ? ? ? ? ? ? ? ?

#define uchar unsigned char

#define uint unsigned int?

?

?

sbit MOTOR_A_1=P3^6;

sbit MOTOR_A_2=P3^7; ??

sbit k1=P1^0; //定義k1為p1.0口

sbit k2=P1^1; ? //定義k2為p1.1口

sbit k3=P1^2; ? //定義k3為p1.2口

sbit k4=P1^3; ? //定義k4為p1.3口

uchar T=0; ? //定時標記

uchar W=0; ? //脈寬值 0~100

uchar A=0; ? //方向標記 0,1

uchar k=0; ? //按鍵標記

uchar i=0; ? ? //計數變量


uchar code table1[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};


uchar code table2[]={0xfe,0xfb,0xfd,0xf7};

?

void delayms(uint t); ?

?

void disp(void)

{

P2=table2[3];

P0=table1[W]; //顯示占空比個位

delayms(1); //延時1ms

P2=0xff; //P0清1


P2=table2[2];

P0=table1[W/100]; //顯示占空比百位

delayms(1); //延時1ms

P2=0xff; //P0清1

??

P2=table2[1];

P0=table1[W/10]; ?//顯示占空比十位

delayms(1); //延時1ms

P2=0xff; ? //P0清1


P2=table2[0];

P0=table1[A]; ? //顯示方向

delayms(1); //延時1ms

P2=0xff; //P0清1

}


?



void init(void)

{

//啟動中斷

TMOD=0x01;

EA=1;

ET0=1;

TR0=1;

//設置定時時間

TH0=0xff;

TL0=0xf6;

}


void timer0() interrupt 1

{ ? ??

//重置定時器時間

TH0=0xff;

TL0=0xf6;

T++; //定時標記加1?

disp(); //數碼管顯示

if(k==0)

{

if(T>W)

MOTOR_A_1 =0;

else

MOTOR_A_1 =1;

}

else

{

if(T>W)

MOTOR_A_2 =0;

else

MOTOR_A_2 =1;

}

?

if(T==100)

T=0;?

}

?

void delayms(uint t)

{

uchar j;

while(t--)

{

for(j=0;j<250;j++) //循環250次

{

? _nop_(); ? ? ? ? ? ? //系統延時 ? ? ? ? ?

? ? ? _nop_(); //系統延時

? ? ? _nop_(); //系統延時

? ? ? _nop_(); //系統延時

}

}

}

?

void key(void) ? ? ? ? ? //按鍵判斷程序

{

if(k1==0) //按鍵1按下

{

while(k1==0); //按鍵1抬起

if(W==100) //如果脈寬為100

W=0; //脈寬置0

else

W+=1; //否則加1

}

else if(k2==0) //按鍵2按下

{ ?

while(k2==0); //按鍵2抬起

if(W==0) //如果脈寬為0

W=100; //脈寬設置成100

else

W-=1; //否則減1

}

else if(k3==0) //按鍵3按下

{ ??

while(k3==0); //按鍵3抬起

A=!A; //方向標記取反

k=!k; //按鍵標記取反

}?

else if(k4==0) //按鍵4按下

{ ??

while(k4==0); //按鍵4抬起

W=0; //脈寬清0

}

}


void main(void)

{


init(); /系統初始化?

while(1) ?

{

if(k==0)

? ?MOTOR_A_2=0;

else

MOTOR_A_1=0;

key(); 查詢按鍵

}

}


?

總結

以上是生活随笔為你收集整理的基于51单片机的直流电机驱动(L298…的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。