本实验演示STC15F104E如何识别按键事件
按按钮一次,LED灯就翻转一次亮灭状态。然后等待下一次按钮事件。
材料:
STC15F104E一片
一个LED
一个220Ω电阻
一个按键开关
电路图:
解析:220Ω电阻用于限流,由于STC输入端默认是上拉的,所以我们对开关不用加拉电阻,直接接地即可。
程序:
- /*
- STC15F104E按键实验
- Ansifa
- 2012-2-19
- 硬件连接方法:
- 一个LED串联一个220Ω电阻,接到VCC和P3.3引脚。
- 一个按钮接到P3.2与GND之间。
- */
- #include "reg51.h"
- ***it key = P3 ^ 2; //按钮
- ***it LED = P3 ^ 3; //灯
- void DelayMS(n) //@5MHz 软件延时n毫秒函数
- {
- unsigned char i, j;
- i = 5*n;
- j = 218;
- do
- {
- while (--j);
- } while (--i);
- }
- void main()
- { LED=1; //LED=0是亮,1是灭,初值灭灯
- while(1) //制造一个死循环
- {
- //先检测高电平,等待30ms后检测是否低电平,就能把下降沿检测出来,这个是下降沿触发电路,有防抖功能。
- if(key == 1) //因为按钮接key端和GND,所以是下降沿触发。
- {
- DelayMS(30);
- if(key == 0)
- {
- LED = !LED; //翻转LED亮灭状态
- }
- }
- }
- }
Keil uVersion2工程文件: 按钮.rar
实物视频:
由于一下找不到按钮开关,所以用一条电线接触GND引脚暂时代替。
|