51单片机典型项目实战全能一本通(C语言版)(视频版)
上QQ阅读APP看书,第一时间看更新

例3-4 开关状态检测——模拟开关灯的实现

利用单片机、按钮开关和发光二极管,构成一个模拟开关灯的系统。原理电路如图3-5所示,单片机P3.0脚接开关K,P1.0脚接发光二极管的阴极。当开关K闭合时,发光二极管D1点亮;开关K松开时,发光二极管D1熄灭。

首先来看如何检测一个开关是处于闭合状态,还是打开状态。将被检测的开关一端接到I/O端口的引脚上,另一端接地,通过读入I/O端口的电平来判断开关是闭合状态还是打开状态。如果为低电平,则开关为闭合状态,如果为高电平,则开关为打开状态。

参考程序如下。

  #include <reg51.h>
  #define uchar unsigned char 
  #define uint unsigned int 
  sbit in=P3^0; 
  sbit out=P1^0; 
    
  void main(void) 
  { 
      while(1) 
      { 
          in=1;           //设置P1.0脚为输入 
          if(in==0)out=0;else out=1; //检测P1.0脚电平,P1.0=0时,P3.0=0;P1.0=1时,P3.0=1 
      }
  }

本例中的if…else…构成了一个简单的分支结构。

图3-5 模拟开关灯的连接