⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyan.c

📁 51的PWM
💻 C
字号:
#include<AT89x51.H>
sbit P10=P1^0;
//接在电动机中的一个口
sbit P11=P1^1;
//接在电动机中的另一个口
sbit P32=P3^2;
//使电动机快速转动的按钮
sbit P33=P3^3;
//使电动机正转的按钮
sbit P34=P3^4;
//使电动机反转的按钮
sbit P35=P3^5;
//使电动机慢速转动的按钮
/*************延时函数******************/
void delay(unsigned char i)//延时1ms的子程序
{
unsigned char j;
for(;i>0;i--)
for(j=0;j<248;j++);
}
/*********主程序**************/
main()
{
while(1)
//主循环,使单片机一直检测各个端口
{
//如果没有一个键按下时,则电机停止不动
 if(P32==1&P33==1&P34==1&P35==1)
//如果电机的两个端口电平一样时,电机不转
 {P10=1;P11=1;}


//如果按下快速转动的键时,先软件消抖
  if(P32==0)
 {
  delay(2);
  if(P32==0)
  {
   while(P35==1)   //建立在P35没有按下的基础上,如果按下P34口时
                   //,然后再建立在没有按下P33和P35时,使电机转动,
                   //否则跳出循环
  {
 if(P34==0)
    {
  delay(1);//按下P34口是,有个软件延时
           //消除抖动
 if(P34==0)
    {
  while(P33==1&P35==1)  
 {P10=1;P11=0;}  //使电机向一个方向转动
     } 
    }

     if(P33==0)//按下P33口是,有个软件延时
    {           //消除抖动
     delay(1);
    if(P33==0)
       {
   while(P34==1&P35==1)
 {P10=0;P11=1;}   //使电机向另一个方向转动
       }
     }
   }
  }
 }

//如果按下慢速转动的键时,先软件消抖
 if(P35==0)
{
delay(2);
 if(P35==0)
{
while(P32==1)     
{

                 //建立在P32没有按下的基础上,如果按下P33口时
                //,然后再建立在没有按下P34和P32时,使电机转动,
     if(P33==0)    
     {           //否则跳出循环
    delay(1);
   if(P33==0)
   {
     P10=0;
    while(P34==1&P32==1)
   {  
    P11=1;
    P11=0;
  }
   }
     }
if(P34==0)//按下P34口是,有个软件延时
delay(1);  //消除抖动
if(P34==0)
{  P11=0;
  while(P33==1&P32==1)
   {
    P10=1;
    P10=0;
      }
     }
   }
}
}
}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -