仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設計編號:【C04】
1.? 簡介
? 本文介紹一種用AT89C51作為核心部件進行邏輯控制及信號產生的單片機技術和C語言編程設計的直流電機控制系統(tǒng),本控制系統(tǒng)采用單片機控制,通過人為按動開關實現直流電機的正反轉、加速、減速、啟停。具有靈活方便、適用范圍廣的特點,基本能夠滿足實踐需求。
2.? 主要功能
a.支持按鍵設置正轉、反轉、啟停、加速、減速。
c.支持L298N驅動直流電機轉動。
3.? 源程序(Keil5)
? 本設計采用keil5 C51軟件(內附安裝包)實現程序設計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。
#include"reg51.h"
#include"LCD1602.h"
sbit zheng = P3^0;
sbit fan = P3^1;
sbit K1 = P1^2;
sbit K2 = P1^1;
sbit K3 = P1^0;
sbit K4 = P1^3;
unsigned int t=50,tim=0,num=0;
unsigned char flag=0,sec=0,dir=0,disp=0;
void delay_ms(unsigned int tim)
{
unsigned int i,j;
for(i=0;i<tim;i++);
for(j=0;j<120;j++);
}
void key_control()
{
if(K1==0&&flag==1)
{
delay_ms(100);
//while(!K1);
if(t<100) t++;
}
if(K2==0&&flag==1)
{
delay_ms(100);
//while(!K2);
if(t>0) t--;
}
if(K3==0)
{
delay_ms(10);
while(!K3);
flag=1-flag;
}
if(K4==0)
{
delay_ms(10);
while(!K4);
dir=1-dir;
}
}
void Display()
{
if(flag==1)
{
if((100-t)/100==0)
LCDDispChar(6,1,' ');
else
LCDDispNum(6,1,(100-t)/100);
if((100-t)/100==0&&(100-t)%100/10==0)
LCDDispChar(7,1,' ');
else
LCDDispNum(7,1,(100-t)%100/10);
LCDDispNum(8,1,(100-t)%10);
LCDDispChar(9,1,'%');
LCDDispString(11,1,"On ");
if(dir)
{
LCDDispChar(14,1,'Z');
LCDDispChar(15,1,'z');
}
else
{
LCDDispChar(14,1,'F');
LCDDispChar(15,1,'z');
}
}
else
{
LCDDispChar(6,1,' ');
LCDDispChar(7,1,'-');
LCDDispChar(8,1,'-');
LCDDispChar(9,1,'-');
LCDDispChar(14,1,' ');
LCDDispChar(15,1,' ');
LCDDispString(11,1,"Off");
}
}
void Display_Speed()
{
if(num/100==0)
LCDDispChar(7,2,' ');
else
LCDDispNum(7,2,num/100);
if(num/100==0&&num%100/10==0)
LCDDispChar(8,2,' ');
else
LCDDispNum(8,2,num%100/10);
LCDDispNum(9,2,num%10);
}
void Timer_Init()
{
TMOD = 0x11;
TH0 = 0x3c;
TL0 = 0xb0;
ET0 = 1;
TR0 = 1;
EX0 = 1;
IT0 = 1;
TH1 = (65536-1000)/256;
TL1 = (65536-1000)%256;
ET1 = 1;
TR1 = 1;
EA = 1;
}
void main()
{
LCDInit();
LCDDispString(0,1,"Duty :");
LCDDispString(0,2,"Speed: r/s");
Timer_Init();
while(1)
{
key_control();
Display();
if(disp)
{
disp=0;
Display_Speed();
num=0;
}
}
}
4.? 仿真proteus8.6
? 本設計采用proteus8.6軟件(內附安裝包)實現仿真設計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
正轉:
反轉:
停止:
5.? 設計報告
設計報告主要包括硬件電路、軟件設計、仿真調試等等,僅供參考。
6.? 資料清單
設計資料主要包括C程序+仿真+設計報告+使用說明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網盤下載鏈接:【C04】百度網盤下載鏈接
更多單片機仿真設計合集:單片機仿真設計合集