仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設(shè)計編號:【C01】
1.? 簡介
? 本文提出了一種基于51單片機的直流電機PWM控制系統(tǒng)。該設(shè)計通過AT89C51單片機產(chǎn)生脈寬可調(diào)的脈沖信號并輸入到三極管組成的上下橋來控制直流電機工作,調(diào)速系統(tǒng)由命令輸入模塊、LED燈顯示模塊及電機驅(qū)動模塊組成,采用帶中斷的獨立式鍵盤作為命令的輸入,單片機在程序控制下,定時不斷給驅(qū)動模塊發(fā)送PWM波形,H型驅(qū)動電路完成電機正、反轉(zhuǎn)和急??刂啤?/span>
2.? 主要功能
a.支持按鍵設(shè)置正轉(zhuǎn)、反轉(zhuǎn)、停止。
b.支持LED燈指示當前運行狀態(tài)。
3.? 源程序(Keil5)
? 本設(shè)計采用keil5 C51軟件(內(nèi)附安裝包)實現(xiàn)程序設(shè)計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit K1 = P3^0;
sbit K2 = P3^1;
sbit K3 = P3^2;
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit MA = P2^0;
sbit MB = P2^1;
void main(void)
{
LED1 = 1;
LED2 = 1;
LED3 = 0;
while(1)
{
if(K1 == 0)
{
while(K1 == 0);
LED1 = 0;
LED2 = 1;
LED3 = 1;
MA = 0;
MB = 1;
}
if(K2 == 0)
{
while(K1 == 0);
LED1 = 1;
LED2 = 0;
LED3 = 1;
MA = 1;
MB = 0;
}
if(K3 == 0)
{
while(K1 == 0);
LED1 = 1;
LED2 = 1;
LED3 = 0;
MA = 0;
MB = 0;
}
}
4.? 仿真proteus8.6
? 本設(shè)計采用proteus8.6軟件(內(nèi)附安裝包)實現(xiàn)仿真設(shè)計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
正轉(zhuǎn):
反轉(zhuǎn):
停止:
5.? 設(shè)計報告
? 設(shè)計報告主要包括硬件電路、軟件設(shè)計、仿真調(diào)試等等,僅供參考。
6.? 資料清單
? 設(shè)計資料主要包括C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網(wǎng)盤下載鏈接:【C01】百度網(wǎng)盤下載鏈接
更多單片機仿真設(shè)計合集:單片機仿真設(shè)計合集