51单片机-实机演示(按键)

2024-05-27 13:28

本文主要是介绍51单片机-实机演示(按键),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

书接上回。http://t.csdnimg.cn/4wSSW

目录

一.按下灭,松开亮

二.两个按键控制两个灯

三.点一下灯开,在按一下关

四。优化按键消抖

1.加入bit变量


一.按下灭,松开亮

代码

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器sbit KEY1 = P3^1;  // 独立按键sbit LED = P0^0;  // 独立按键void main()
{ while (1){if(KEY1 ==0){LED = 1;}else{LED = 0;}}}

实机图

这里用的是K1按钮,想用哪个按钮,就切换到哪个按钮引脚就行。

二.两个按键控制两个灯

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器sbit KEY1 = P3^1;  // 独立按键1sbit KEY2 = P3^2;  // 独立按键2sbit LED1 = P0^0;  // 灯1sbit LED2 = P0^1;  // 灯2void main()
{while (1)                           {if(KEY1== 0){LED1 = 0;}else if(KEY2== 0){LED2 = 0;}else{LED1 = 1;LED2 = 1;}}}

按住K1,第一个灯亮,按住K2,第二个灯亮。

三.点一下灯开,在按一下关

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器sbit KEY1 = P3^1;  // 独立按键1
// sbit KEY2 = P3^2;  // 独立按键2sbit LED1 = P0^0;  // 灯1//sbit LED2 = P0^1;  // 灯2void main()
{while (1)                           {if(KEY1== 0){LED1 = ~LED1;}// else if(KEY2== 0)// {// 	LED2 = 0;// }// else{//     LED1 = 1;//     LED2 = 1;// }}}

四。优化按键消抖

        解决按键点击过快等问题,

1.加入bit变量

       如 bit firstIn = 1;

按下的时候赋值为0,抬起的时候赋值为1

例子如下

if (KEY1 == 0 && firstIn == 1){ firstIn = 0;LED1 =~LED1;}if (KEY1 == 1){firstIn = 1;}

2.加入布尔变量

先引入头文件,我的路径是这样的 

  1. #include <SiLABS\shared\si8051Base\stdbool.h>

剩下的就同上

	bool firstIn = 1;while (1)                           {if (KEY1 == 0 && firstIn){ firstIn = false;LED1 =~LED1;}if (KEY1 == 1){firstIn = true;}}

这篇关于51单片机-实机演示(按键)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007600

相关文章

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

Collection的所有的方法演示

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class TestCollection {/*** @param args* Collection的所有的方法演示* 此程序没有使用泛型,所以可以添加任意类型* 以后如果写到泛型会补充这一方面的内容*/public s

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

基于stm32的河流检测系统-单片机毕业设计

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品