12【Proteus仿真】基于51单片机的电机调速和速度实时显示

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于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的分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值