加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機(jī)的PWM控制直流電機(jī)設(shè)計(jì)( proteus仿真+程序+報(bào)告+講解視頻)

08/28 15:06
2966
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
    • 基于51單片機(jī)的PWM控制直流電機(jī)設(shè)計(jì)( proteus仿真+程序+報(bào)告+講解視頻)
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的PWM控制直流電機(jī)設(shè)計(jì)( proteus仿真+程序+報(bào)告+講解視頻)

仿真圖proteus 7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計(jì)編號(hào):S0031

視頻


基于51單片機(jī)PWM控制直流電機(jī)設(shè)計(jì)

主要功能:

1.設(shè)計(jì)要求

采用51單片機(jī)作為核心控制器,控制直流電機(jī)的正轉(zhuǎn),反轉(zhuǎn),制動(dòng),停止。

2.功能要求

1)數(shù)碼管顯示當(dāng)前轉(zhuǎn)動(dòng)方向和當(dāng)前的PWM占空比0~100%。

2)電機(jī)(L298n)轉(zhuǎn)速可以通過按鍵調(diào)整,也可以開始暫停,正轉(zhuǎn)和反轉(zhuǎn)。

3)按鍵可實(shí)現(xiàn)加速、減速、正轉(zhuǎn)、反轉(zhuǎn)、停止等功能。

1鍵:加速鍵,短按,占空比加1;

2鍵:減速鍵,短按,占空比減1;

3鍵:正反轉(zhuǎn)切換鍵,按下后電機(jī)正反轉(zhuǎn);

4鍵:按一下停止,PWM脈寬清零。

仿真

開始仿真后,用數(shù)碼管第一位顯示0表示正轉(zhuǎn)后面三位標(biāo)志PWM脈寬(0-100), 示波器實(shí)時(shí)檢測(cè)顯示脈寬黃線是正轉(zhuǎn)脈寬,藍(lán)線是反轉(zhuǎn)脈寬。

img

反轉(zhuǎn)脈寬如下所示

img

程序:

img

部分代碼:

#include<reg52.h>    
#include<intrins.h>                        
#define uchar unsigned char	
#define uint unsigned int  
		
/**********************************************************************
							L298n接口定義
**********************************************************************/  
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;	   //定時(shí)標(biāo)記
uchar W=0;	   //脈寬值	 0~100
uchar A=0;	   //方向標(biāo)記 0,1
uchar k=0;	   //按鍵標(biāo)記
uchar i=0;    	 //計(jì)數(shù)變量

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);					 			 
/**********************************************************************
						數(shù)碼管顯示
**********************************************************************/ 
void disp(void)
{
	P2=table2[3];					
	P0=table1[W%10];			//顯示占空比個(gè)位
	delayms(1); 					//延時(shí)1ms
	P2=0xff;							//P0清1

	P2=table2[2];
	P0=table1[W/100]; 		//顯示占空比百位
	delayms(1); 					//延時(shí)1ms
	P2=0xff;							//P0清1
  
	P2=table2[1];
	P0=table1[W/10%10];  //顯示占空比十位
	delayms(1); 				 //延時(shí)1ms
	P2=0xff;   					 //P0清1

	P2=table2[0];
	P0=table1[A];  			//顯示方向
	delayms(1); 				//延時(shí)1ms
	P2=0xff;						//P0清1
}

/**********************************************************************
							定時(shí)器變量定義
**********************************************************************/ 


void init(void)
{
	//啟動(dòng)中斷
	TMOD=0x01;	
	EA=1;						
	ET0=1;
	TR0=1;
	//設(shè)置定時(shí)時(shí)間
	TH0=0xff;
	TL0=0xf6;
}

		
/**********************************************************************
							延時(shí)1ms
**********************************************************************/ 
void delayms(uint t)
{
	uchar j;
	while(t--)
	{
		for(j=0;j<250;j++)			//循環(huán)250次
		{
		   _nop_();             //系統(tǒng)延時(shí)          
	       _nop_();							//系統(tǒng)延時(shí)
	       _nop_();							//系統(tǒng)延時(shí)
	       _nop_();							//系統(tǒng)延時(shí)
		}
	}
}
/**********************************************************************
							獨(dú)立按鍵檢測(cè)
**********************************************************************/ 
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;						//脈寬設(shè)置成100
		else
			W-=1;							//否則減1
	}
	else if(k3==0)				//按鍵3按下
	{			   
		while(k3==0);				//按鍵3抬起
		A=!A;								//方向標(biāo)記取反
		k=!k;								//按鍵標(biāo)記取反
	} 
	else if(k4==0)				//按鍵4按下
	{			   
		while(k4==0);				//按鍵4抬起
		W=0;								//脈寬清0									
	}
}

void main(void)
{

	init();			/系統(tǒng)初始化 
	while(1)	 
	{
	if(k==0)
	    MOTOR_A_2=0;
	else
		MOTOR_A_1=0;	 		
		key();			查詢按鍵
	}
}

設(shè)計(jì)報(bào)告

img

資料清單:

下載方式見開頭的視頻
或下方百度云分享鏈接
https://docs.qq.com/doc/DS1RGSmxKQUZOa0dT
img

  • 設(shè)計(jì)資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
TLP291-4(V4GBTPE(T 1 Toshiba America Electronic Components Transistor Output Optocoupler, 4-Element, 2500V Isolation
$2.08 查看
LTC6994CS6-1#TRMPBF 1 Linear Technology LTC6994 - TimerBlox: Delay Block/ Debouncer; Package: SOT; Pins: 6; Temperature Range: 0&deg;C to 70&deg;C
$3.04 查看
CPC1718J 1 Littelfuse Inc Transistor Output SSR, 1-Channel, 2500V Isolation, ROHS COMPLIANT, ISOPLUS264, 4 PIN

ECAD模型

下載ECAD模型
$6.36 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜