当前位置: 首页> 汽车> 维修 > 基于51单片机得三档风速调节系统(简单项目)

基于51单片机得三档风速调节系统(简单项目)

时间:2025/8/1 15:19:31来源:https://blog.csdn.net/MGT_9796/article/details/142304103 浏览次数: 0次

        基于51单片机的三档风速调节使用51单片机作为系统主控,使用L298N作为系统主控,采用一位数码管显示风速等级,LED作为系统指示灯,使用定时器产生PWM波控制直流电机,通过改变PWM占空比实现调速,按键实现修改PWM占空比。

一、硬件设计

        本次设计的硬件图比较简单,大致是一个独立按键、一个L298N驱动,一个一位数码管(共阴),另外实物上还有一个dc供电口和开关,仿真图如下:

二、软件设计

1、定时器产生PWM波

        本次设计使用定时器产生PWM波,通过修改PWM的占空比,就可以实现直流电机的调速.

void Timer0_Routine() interrupt 1
{static unsigned int T0Count2;TL0=0X18;TH0=0xfc;T0Count2++;T0Count2%=20;	//PWM调节速度if(T0Count2 < compare){	Motor1=1;Motor2=0;}else{Motor1=0;Motor2=0;		}	
}	

2、主程序设计

#include <REGX51.H>sbit key1 = P1^2;
sbit Motor1 = P1^0;
sbit Motor2 = P1^1;int compare=0;void delay(unsigned int x){while(x){unsigned char i,j;i=2;j=239;do{while(--j);}while(--i);x--;}	
}
void Timer0_Init(){//TMOD=0x01;TMOD&=0xf0;//1与任何数&为原数,0与任何数|为原数TMOD|=0x01;TF0=0;TR0=1;TH0=0xfc;TL0=0x18;ET0=1;EA=1;PT0=0;
}unsigned char Data[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//一位数码管显示
void nixie(unsigned char number){P2=Data[number];delay(1);P2=0x00;
}int Key()
{int keyNum=0;if(key1==0){delay(20);while(key1==0);keyNum=1;delay(20);}return keyNum;
}int keyNum=0;void main()
{Timer0_Init();while(1){keyNum = Key();if(keyNum == 1){compare+=6;if(compare>20)compare=0;}nixie(compare/6);}
}void Timer0_Routine() interrupt 1
{static unsigned int T0Count2;TL0=0X18;TH0=0xfc;T0Count2++;T0Count2%=20;	//PWM调节速度if(T0Count2 < compare){	Motor1=1;Motor2=0;}else{Motor1=0;Motor2=0;		}	
}	

三、项目演示

        程序运行,默认是不会转动的,数码管显示0。

        按下按键,风速会循环变化,大致是0-3-0,往复循环。如下:

四、项目总结

        本次设计使用51单片机结合洞洞板,设计了一款简单的风速调节系统,按下按键调节电机风速,同时数码管显示风速等级。详情参考我的bilibili,如下:

基于51单片机得三档风速调节系统_哔哩哔哩_bilibili

关键字:基于51单片机得三档风速调节系统(简单项目)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: