栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

51单片机仿真例程-PWM直流电动机

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

51单片机仿真例程-PWM直流电动机

通过单片机输出PWM波,控制占空比实现控制电动机的转速,方向,启停。

代码:

#include
#include	 
#define uint unsigned int
#define uchar unsigned char
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K_up = P3^3;
sbit K_down = P3^4;
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit MA= P1^0;
sbit MB= P1^1;
bit FX=0;
unsigned int PwmH,Pwm;
unsigned char i;
void Timer0Interrupt (void) interrupt 1
{
	i++;
	if(FX==0){
	if(i==PwmH){
	 MA=0;
	 }
	if(i==Pwm)
	{
	  i=0;
	  MA=1;
	 }
   	}
	else {
	 if(i==PwmH){
	 MB=0;
	 }
	if(i==Pwm)
	{
	  i=0;
	  MB=1;
	 }



	}
  
}
void delay5ms(void)
{
  int time;
  for(time=0;time<500;time++);
}
void InitTimer(void)
{
  TMOD = 0x02;
  TH0=56;
  TL0=56;
  EA=1;
  ET0=1;  //KAI ZHonGDUAN
  TR0=1; //QIDONG DINGSHI QI
}
void main(void)
{
 i=0;
 PwmH=2;
 Pwm=20;

 LED1=1;LED2 = 1; LED3 = 0;
 while(1)
 {
  if(K1==0)
  {
  	 while(K1==0);
	 LED1=0; LED2=1;LED3=1;
	 MA = 0;MB=1;
	 FX=0;		   //zhengzhuang tiaosu you ma shixian
  }
  if(K2==0)
  {
  	 while(K2==0);
	 LED1=1; LED2=0;LED3=1;
	 MA=1;MB=0;
	 FX=1;
  }
  if(K3==0)
  {
  	while(K3==0);
	LED1=1;LED2=1;LED3=0;
	MA=0;MB=0;
	EA=0;
  
  
  }
  if(K_up==0)
  {
//    delay5ms();
    while(K_up==0);
//	if(K_up)continue;
    LED1=0; LED2=1;LED3=1;
	InitTimer();
//	MA = 0;MB=1;
	if(PwmH1)
	{PwmH--;
	}
	else
	{
	 EA=0;
	}
  
  
  
  }
 
 
 
 
 
 }



}

效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号