目录
一、主要功能
二、硬件资源
三、程序编程
四、实现现象
一、主要功能
基于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的分享