目录
基于51单片机,可采用按键对电机进行方向的调控和速度的加减,并通过DAC0832设置放大电路进行对电机的设置,通过四位数码管显示电机转向和速度,非常精确。
本项目的优点是通过复杂电路精准控制电机的速度调整,非常精确。
基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。
1、51单片机
2、DAC0832电路
3、按键电路
4、四位数码管
仿真图:
编辑
#include <REGX52.H>
#define DAC0832 P1//DAC0832数据口定义
sbit zz=P2^0;//正反转定义
sbit fz=P2^1;
sbit we1=P3^0;//位选定义
sbit we2=P3^1;
sbit we3=P3^2;
sbit we4=P3^3;
unsigned char NixieTable\[\]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极段码表
unsigned char KeyNum;
unsigned int Speed=120;//定义送给DAC0832的初始速度值
void Nixie();//数码管显示函数
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
unsigned char Key()
{
unsigned char KeyNumber=0;
if(P3\_4==0){Delay(20);while(P3\_4==0);Delay(20);KeyNumber=1;}//正转
if(P3\_5==0){Delay(20);while(P3\_5==0);Delay(20);KeyNumber=2;}//反转
if(P3\_6==0){Delay(20);while(P3\_6==0);Delay(20);KeyNumber=3;}//加速
if(P3\_7==0){Delay(20);while(P3\_7==0);Delay(20);KeyNumber=4;}//减速
return KeyNumber;
}
void main()
{
DAC0832=0x00;
while(1)
{
KeyNum=Key();//获取按键值
switch(KeyNum)
{
case 0:
break;
case 1:
zz=0;
fz=1;
break;
case 2:
zz=1;
fz=0;
break;
case 3:
Speed=Speed+5;
KeyNum=0;
break;
case 4:
Speed=Speed-5;
KeyNum=0;
break;
}
DAC0832=Speed;//数字量输入转换电压值
Nixie();
}
}
4.1 点击逆时针,数码管第一位显示0,代表逆时针,后面120代表电机速度
编辑
4.2 点击加速,电机加速逆时针转动,速度显示125
编辑
4.3 电机顺时针,四位数码管第一位显示1,代表顺时针转动
编辑
4.4 点击减速,速度减到120
编辑
具体动态效果看B站演示视频:
基于DAC0832调速电机的proteus仿真_哔哩哔哩_bilibili
源程序和仿真文件:
链接:https://pan.baidu.com/s/1C3XyyzMSq_wbu55_ZZDX6g
提取码:j82n
–来自百度网盘超级会员V4的分享