关于按键简单控制了的led亮灭

唯一与单片机控制小灯亮灭不同的是引入了开关,可以使开关一端接地,另一端接P1.0引脚,程序中判断P1.0引脚的输入,如果按下开关,相当于输入了0,由此来控制小灯的状态。

思路:

1.写主函数:在主函数中判断开关是否按下,如果按下了则led相应根据程序中你所想要的方法变化。

2.定义主函数中用到的变量以及编写主函数中所需要调用的程序。例如:主函数中用到的延时函数以及延时函数中所需要的变量,定义led所对应的引脚以及开关所对应的引脚。

3.编译,生成可执行程序,输出.hex文件,将其烧入单片机中,实际操作对比程序是否达到预期效果,如果没有则继续改进程序。

例如以下几种操作:(便于简单理解按键控制)

此处电路图按最小系统来接

第一种(判断开关是否按下,如果按下则灯的状态转换一次)

#include<reg52.h>
sbit led = P3^4;   //led接P3.4引脚
sbit button = P1^0;    //开关接P1.0引脚
int xms,i,j;    
void delay(xms)      //定义延时x ms的延时函数
{
    for(i = 0; i<xms; ++i)
      for(j = 0; j<110; ++j);
}
void main()
{
     while(1)
     {
          if(button == 0)        //判断开关是否按下
          {
               delay(20);  //延时20ms,消除抖动 
               if(button == 0)         //二次判断开关是否按下 
               {
                    led = ~led;     //led状态反置
               }
          }
     }
}

第二种(判断开关是否按下,如果按下则灯灭,如果没有则灯一直亮)

#include<reg52.h>
sbit led = P3^4;  
sbit button = P1^0;   
int xms,i,j;    
void delay(xms)      //x ms
{
    for(i = 0; i<xms; ++i)
      for(j = 0; j<110; ++j);
}
void main()
{
     while(1)
     {
          if(button == 0)        
          {
               delay(20);  
               if(button == 0)    
               {
                led = 0;     
               }
               else      
               {
                led = 1;
               }
          }
    }
}
发布了31 篇原创文章 · 获赞 28 · 访问量 9510

猜你喜欢

转载自blog.csdn.net/visual_eagle/article/details/102844501