前言
前面几章讲解的都是把 I/O 口当成输出管脚使用,本章将通过按键实验学习 I/O 口的输入功能。按键作为一种输入设备,在实际应用中非常的广泛。根据按键的使用原理不同分为独立按键和矩阵按键,本章将详细介绍这两种按键的使用。
9.1 按键原理
独立按键的原理非常简单,如下图所示:
图 9-1 独立按键原理图
如图所示, K1 ~K3 共 3 个按键分别与单片机的 P10 ~P12 管脚连接。例如,当按下按键 K1 后, P10 管脚为低电平,在单片机中通过检测 P10 管脚是否为低电平,便可知道 K1 是否按下。按键在电路板位置如下图所示:
图 9-2 三个按键位置布局
细心的朋友可能会发现, K1~K3
和 LED 小灯 D0~D2
共用了单片机的 I/O 口 P10~P12
。当你按下按键时,相当于将 I/O 口拉为低电平。因此,你分别按下按键 K1~K3
时, D0~D2
将点亮。
9.2 按键电路软件设计
本章的按键试验功能很简单,即按下按键 K1 时,蜂鸣器发出报警声,编写代码如下:
/*******************************************************************
*
* ******************************************************************
* 【主芯片】:STC89SC52/STC12C5A60S2
* 【主频率】: 11.0592MHz
* 【版 本】: V1.0
* 【作 者】: hugh
* 【网 站】: https://rymcu.com
* 【邮 箱】: hugh@rymcu.com
* 【店 铺】: rymcu.taobao.com
* 【版 权】All Rights Reserved
* 【声 明】此程序仅用于学习与参考,引用请注明版权和作者信息!
* 【功 能】按键试验
*******************************************************************/
#include <reg52.h>
sbit FM = P0^0;// 蜂鸣器管脚位定义
sbit K1 = P1^0;// 独立按键管脚定义
void main()
{
while(1)
{
if(K1==0)
{
FM =0;// 按键按下,蜂鸣器报警
}
else
{
FM =1;// 按键未按下,停止报警
}
}
}
图 9-3 按键试验
按下按键 K1,蜂鸣器将报警,弹起按键,蜂鸣器停止报警。
9.3 下载验证
本节首次介绍了单片机 IO 口的输入功能。