自学51单片机 - 独立按键实验

  • 1、程序
  • 2、结果

1、程序

// 实验现象:下载程序后,按下“独立按键”模块中K1键,控制D1指示灯亮灭
//                   ,按下“独立按键”模块中K2键,控制D2指示灯亮灭
//                   ,按下“独立按键”模块中K3键,控制D3指示灯亮灭
//                   ,按下“独立按键”模块中K4键,控制D4指示灯亮灭        #include "reg52.h"typedef unsigned int uint16;    //对系统默认数据类型进行重定义
typedef unsigned char uint8;//定义独立按键控制脚
sbit KEY1=P3^1; // K1
sbit KEY2=P3^0; // K2
sbit KEY3=P3^2; // K3
sbit KEY4=P3^3; // K4//定义LED控制脚
sbit LED1=P2^0; // D1
sbit LED2=P2^1; // D2
sbit LED3=P2^2; // D3
sbit LED4=P2^3; // D4//使用宏定义独立按键按下的键值
#define KEY1_PRESS  1
#define KEY2_PRESS  2
#define KEY3_PRESS  3
#define KEY4_PRESS  4
#define KEY_UNPRESS 0   /*******************************************************************************
* 函 数 名       : delay_10us
* 函数功能      : 延时函数,ten_us=1时,大约延时10us
* 输    入       : ten_us
* 输    出         : 无
*******************************************************************************/
void delay_10us(uint16 ten_us) //消抖
{while(ten_us--);
}/*******************************************************************************
* 函 数 名       : key_scan
* 函数功能      : 检测独立按键是否按下,按下则返回对应键值
* 输    入       : mode=0:单次扫描按键mode=1:连续扫描按键
* 输    出         : KEY1_PRESS:K1按下KEY2_PRESS:K2按下KEY3_PRESS:K3按下KEY4_PRESS:K4按下KEY_UNPRESS:未有按键按下
*******************************************************************************/
uint8 key_scan(uint8 mode)
{static uint8 key=1;if(mode)key=1;//连续扫描按键if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))//任意按键按下{delay_10us(1000);//消抖10mskey=0;if(KEY1==0)return KEY1_PRESS;else if(KEY2==0)return KEY2_PRESS;else if(KEY3==0)return KEY3_PRESS;else if(KEY4==0)return KEY4_PRESS;  }else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)    //无按键按下{key=1;         }return KEY_UNPRESS;
}
/*******************************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{   uint8 key=0;while(1){key=key_scan(0);if(key==KEY1_PRESS)//检测按键K1是否按下LED1=!LED1;//LED1状态翻转  else if(key==KEY2_PRESS)//检测按键K2是否按下LED2=!LED2;//LED1状态翻转    else if(key==KEY3_PRESS)//检测按键K3是否按下LED3=!LED3;//LED1状态翻转    else if(key==KEY4_PRESS)//检测按键K4是否按下LED4=!LED4;//LED1状态翻转    }
}

2、结果



自学51单片机 - 独立按键实验相关推荐

  1. 自学51单片机 - 矩阵按键实验

    自学51单片机 - 矩阵按键实验 1.开发板原理图 2.程序 2.1 行列式扫描法 2.2 线翻转扫描法 3.结果 1.开发板原理图 2.程序 2.1 行列式扫描法 /**************** ...

  2. 51单片机 | 独立按键实验

    文章目录 一.按键介绍 二.硬件设计 三.软件设计 四.实验现象   开发板上板载 4 个独立按键.通过开发板上的独立按键 K1 控制 D1 指示灯亮灭.通过独立按键实验来介绍 IO 口作为输入的使用 ...

  3. 51单片机——独立按键实验,小白讲解,相互学习

    按键介绍:         按键是一种电子开关,使用时轻轻按开关按钮就可式开关接通,当松手时,开关断开.开发板上使用的按键及内部简易图如下图: 按键管脚两端距离长的表示默认是导通状态,距离短的默认是断 ...

  4. 51单片机-独立按键控制LED

    1.   51单片机独立按键的位置: 独立按键的定义:独立按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开: 在整个51开发板的左下 ...

  5. 51单片机独立按键和矩阵按键实现

    这里写目录标题 独立按键实验 矩阵按键实验 独立按键实验 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开.我们开发板上使用的按键及内部简易图如下图所示 管脚与管脚之间( ...

  6. 51单片机 | 矩阵按键实验

    文章目录 一.矩阵按键介绍 二.硬件设计 三.软件设计 四.实验现象   开发板上板载了一个 4*4 矩阵键盘.本节所要实现的功能是:通过开发板上的矩阵键盘控制静态数码管显示对应的键值 0-F. 一. ...

  7. 51单片机—独立按键的控制

    目录 一.独立按键的介绍 1.按键介绍 2.按键原理图 3.按键抖动 4.按键的消抖 二.独立按键控制LED指示灯亮灭 三.按键实验视频 总结 一.独立按键的介绍 1.按键介绍 轻触按键,相当于一种电 ...

  8. 51单片机独立按键联动数码管LED蜂鸣器

    目录: LED工作原理.电路及源码 蜂鸣器工作原理.电路及源码 数码管工作原理.电路及源码 独立按键工作原理.电路及源码 总结 LED原理,电路及源码 LED原理 LED就是发光二级管,有单向导电性, ...

  9. 51单片机独立按键学习中,出现的问题以及心得

    文章目录 前言 一.出现的问题 1.问题1 2.问题2 二:心得 独立按键的短按 独立按键按住时间不同实现功能不同 总结 前言 Hello大家好,这里是万某,今天学习的是51单片机的独立按键,在此记录 ...

  10. 51单片机-独立按键,矩阵按键,点阵

    独立按键:实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开. "1,2"和"3,4"管脚之间距离短,初始不导通,"1,3"和&q ...

最新文章

  1. XAMPP维基百科,自由的百科全书
  2. 演化:这五年里,我们对架构师职责的思考与定位
  3. django 获取外键对应数据的方式
  4. 获取表单提交的数据getParameter()方法
  5. 字符设备驱动基础篇5——驱动如何操控硬件(动静态映射操作LED)
  6. Python+OpenGL实现物体快速运动时的模糊效果
  7. ajax成功后没有执行函数,ajax不执行回调函数
  8. Citrix Xendesktop5中创建虚拟机失败的2个案例分析
  9. uC/OS-II源码分析(六)
  10. 软件工程作业团队作业No.5
  11. 部署java的tcp服务端_java网络编程(TCP)-服务端
  12. STC15单片机-RS-485通信
  13. 如何用Ps制作中国移动基础框架
  14. 软件设计师 2022年上半年下午题
  15. Linux shell:echo显示彩色字体
  16. java后台获取Excel后缀名以及sheet页名称
  17. 展望未来「编程之路起始篇」
  18. 别用微信文件传输助手了,这6款在线工具真香
  19. Android 启动其他应用的Activity或Service失败解决
  20. ARIMA差分自回归移动平均模型--时间序列预测

热门文章

  1. Java 阶段三 Day13 RESTful、Lombok基础组件及Knife4j
  2. 我是如何从程序员到年入80万的自由职业者的
  3. winform设置窗体颜色为渐变色
  4. 从没衣穿到穿不完,你如何看待小区旧衣回收箱?
  5. vue项目之手写loading组件
  6. 词霸天下---199 词根【-tect- = -teg- 掩盖,掩护 】
  7. Voluptates id est ullam sint repudiandae eligendiSchiff kann ein gesund mein bis..
  8. 生活如水险,人生应像鱼
  9. 分手以后,TA的号码你还留着吗
  10. RCNN网络源码解读(Ⅱ) --- 使用IOU计算正负样本用于finetune训练