1055-基于51单片机的闭环直流电机控制系统(PWM,反馈)proteus,原理图、流程图、物料清单、仿真图、源代码
功能介绍:
闭环直流PWM调速电机
1.仿真电路引脚说明
采用AT89C51单片机,晶振为12MHz,2个四位的共阴数码管,一个显示速度设定值,一个显示速度测量值,单位r/min;
P1.0用于产生PWM,用于直流电机调速;
P1.1~P1.4接4个独立按键,分别实现按下速度设定值加10,加1,减10,减1;
P2.0~P2.7接共阴数码管的段选,连接见仿真图;
P0.0P0.7用于数码管位选,P0.3P0.0对应实时速度的显示位选;P1.7~P1.4对应速度设定值的显示位选;
P3.2/INT0用于采集测速传感器的秒冲;
2.程序要求
四个按键(加10,加1,减10,减1)设置速度初定值,并送4位共阴数码管显示;测量实时速度,送另一个4位共阴数码管显示。能利用产生占空比可调的PWM控制速度到达设定值,由此形成闭环PWM调速直流电机。
【调速用的是先快速调节,然后转慢速调节的算法】
有哪些资料:
1、仿真工程文件
2、源代码工程文件
3、原理图工程文件
4、流程图
5、功能介绍
6、元件清单
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#define uint unsigned int //对数据类型进行声明定义
#define uchar unsigned char
sbit pwm=P1^0;//PWM
sbit key1=P1^1;
sbit key2=P1^2;
sbit key3=P1^3;
sbit key4=P1^4;
//===============================
uint speed=0;
uint time=0,sec=0;//计时
uint sudu=200;//速度设定
uint pwm_time=500;//占空比0-1000
uint k;
//===================================================显示相关
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点
uchar see[8]={0x3f,0x06,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};//显存,设定速度+当前速度
sbit smg1=P2^0;
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
void delay(uint i)//延时
{
while(i--)
{
if(sec<1000)
sec++;
else
sec=0;
if(sec<pwm_time)
pwm=1;
else
pwm=0;
}
}