仿真版本:Proteus8.6及以上版本
程序编译:Keil5 C51
编程语言:C语言
设计编号:【C03】
1. 简介
本文介绍一种用AT89C51作为核心部件进行逻辑控制及信号产生的单片机技术和C语言编程设计的直流电机控制系统,本控制系统采用单片机控制,通过人为按动开关实现直流电机的正反转、加速、减速、启停。具有灵活方便、适用范围广的特点,基本能够满足实践需求。
2. 主要功能
a.支持按键设置正转、反转、启停、加速、减速。
b.支持数码管显示正反转:“0”是正转,“-”是反转。
c.支持LED灯表示正转、反转、停止状态。
d.支持数码管显示速度:“0”到“999”。
e.支持L298N驱动直流电机转动。
3. 源程序(Keil5)
本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit IN1=P1^6;
sbit IN2=P1^7;
sbit ENA=P1^5;
sbit KEY0=P2^0;
sbit KEY1=P2^1;
sbit KEY2=P2^2;
sbit KEY3=P2^3;
sbit KEY4=P2^4;
sbit R=P2^5;
sbit Y=P2^6;
sbit G=P2^7;
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit led=P1^4;
bit flag=0;
bit sign=1;
uint num=0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint n)
{
uint i,j;
for(i=n;i>0;i--)
for(j=0;j<110;j++);
}
void initial()
{
IN1=0;
IN2=0;
ENA=0;
num=0;
TMOD=0X01;
TL0=0XFF;
TH0=0XFF;
EA=1;
EX0=1;
ET0=1;
IT0=1;
TR0=1;
}
void display(bit flag,uint n)
{
uint v;
uchar qian,bai,shi,ge;
v=(uint)(n*535.0/255);
qian=v/1000;
bai=(v-1000*qian)/100;
shi=v%100/10;
ge=v%10;
LED1=0;
if(flag==1)
P0=table[0];
else
P0=0X40;
delay(10);
LED1=1;
LED2=0;
P0=table[bai];
delay(10);
LED2=1;
LED3=0;
P0=table[shi];
delay(10);
LED3=1;
LED4=0;
P0=table[ge];
delay(10);
LED4=1;
}
void main()
{
initial();
while(1)
{
display(sign,num);
}
}
void int0() interrupt 0
{
if(KEY0==0)
{
delay(10);
if(KEY0==0)
{
flag=~flag;
if(flag==0)
{
num=0;
P2=0xff;
ENA=0;
IN1=0;
IN2=0;
G=0;
sign=1;
}
else
{
P2=0xff;
num=100;
IN1=0;
IN2=1;
R=0;
sign=1;
}
while(!KEY0);
}
}
if(KEY1==0)
{
delay(10);
if(KEY1==0)
{
P2=0XFF;
//ENA=1;
IN1=0;
IN2=1;
R=0;
sign=1;
}
while(!KEY1);
}
if(KEY2==0)
{
delay(10);
if(KEY2==0)
{
P2=0XFF;
//ENA=1;
IN1=1;
IN2=0;
Y=0;
sign=0;
}
while(!KEY2);
}
if(KEY3==0)
{
delay(10);
if(KEY3==0)
{
num+=5;
if(num>=255)
num=255;
}
while(!KEY3);
}
if(KEY4==0)
{
delay(10);
if(KEY4==0)
{
num-=5;
if(num<=0)
num=0;
}
while(!KEY4);
}
}
4. 仿真proteus8.6
本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
正转:
反转:
停止:
5. 设计报告
设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。
6. 资料清单
设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。
7. 资料获取链接
百度网盘下载链接:【C03】百度网盘下载链接
更多单片机仿真设计合集:单片机仿真设计合集