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

mac2024-08-07  57

唯一与单片机控制小灯亮灭不同的是引入了开关,可以使开关一端接地,另一端接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;     }    }   } }
最新回复(0)