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