找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5412|回复: 0
收起左侧

STC单片机学习-按键实验

[复制链接]
ID:113472 发表于 2016-4-13 19:30 | 显示全部楼层 |阅读模式
本实验演示STC15F104E如何识别按键事件

按按钮一次,LED灯就翻转一次亮灭状态。然后等待下一次按钮事件。

材料:
STC15F104E一片
一个LED
一个220Ω电阻
一个按键开关

电路图:
解析:220Ω电阻用于限流,由于STC输入端默认是上拉的,所以我们对开关不用加拉电阻,直接接地即可。
222107ybm6h4ylmk9r7kmb.gif

程序:
  1.     /*
  2.     STC15F104E按键实验
  3.     Ansifa
  4.     2012-2-19
  5.      
  6.     硬件连接方法:
  7.     一个LED串联一个220Ω电阻,接到VCC和P3.3引脚。
  8.     一个按钮接到P3.2与GND之间。
  9.     */
  10.      
  11.     #include "reg51.h"
  12.     sbit key = P3 ^ 2;  //按钮
  13.     sbit LED = P3 ^ 3;  //灯
  14.      
  15.     void DelayMS(n)                //@5MHz 软件延时n毫秒函数
  16.     {
  17.             unsigned char i, j;
  18.             i = 5*n;
  19.             j = 218;
  20.             do
  21.             {
  22.                     while (--j);
  23.             } while (--i);
  24.     }
  25.      
  26.      
  27.     void main()
  28.     {   LED=1;     //LED=0是亮,1是灭,初值灭灯
  29.         while(1)  //制造一个死循环
  30.         {
  31.              //先检测高电平,等待30ms后检测是否低电平,就能把下降沿检测出来,这个是下降沿触发电路,有防抖功能。
  32.             if(key == 1)   //因为按钮接key端和GND,所以是下降沿触发。
  33.             {
  34.                 DelayMS(30);
  35.                 if(key == 0)
  36.                 {
  37.                                     LED = !LED;  //翻转LED亮灭状态
  38.                 }
  39.             }
  40.         }
  41.     }
复制代码

Keil uVersion2工程文件: 按钮.rar (1.55 KB, 下载次数: 10)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表