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

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

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

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

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

虛擬商品不可退

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

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

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

仿真圖proteus 7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計編號:S0031

視頻


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

主要功能:

1.設(shè)計要求

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

2.功能要求

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

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

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

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

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

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

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

仿真

開始仿真后,用數(shù)碼管第一位顯示0表示正轉(zhuǎn)后面三位標志PWM脈寬(0-100), 示波器實時檢測顯示脈寬黃線是正轉(zhuǎ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;	   //定時標記
uchar W=0;	   //脈寬值	 0~100
uchar A=0;	   //方向標記 0,1
uchar k=0;	   //按鍵標記
uchar i=0;    	 //計數(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];			//顯示占空比個位
	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%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;
	//設(shè)置定時時間
	TH0=0xff;
	TL0=0xf6;
}

		
/**********************************************************************
							延時1ms
**********************************************************************/ 
void delayms(uint t)
{
	uchar j;
	while(t--)
	{
		for(j=0;j<250;j++)			//循環(huán)250次
		{
		   _nop_();             //系統(tǒng)延時          
	       _nop_();							//系統(tǒng)延時
	       _nop_();							//系統(tǒng)延時
	       _nop_();							//系統(tǒng)延時
		}
	}
}
/**********************************************************************
							獨立按鍵檢測
**********************************************************************/ 
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;								//方向標記取反
		k=!k;								//按鍵標記取反
	} 
	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è)計報告

img

資料清單:

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

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
FOD4208V 1 Fairchild Semiconductor Corporation Triac Output Optocoupler, 1-Element, 5000V Isolation, LEAD FREE, DIP-6
$6.08 查看
AT25SF081B-SSHD-T 1 Adesto Technologies Corporation Flash Memory,

ECAD模型

下載ECAD模型
$0.31 查看
KSZ8873RLLI 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT, PQFP64
$6.1 查看

相關(guān)推薦

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