当前位置: 首页 > article >正文

51单片机独立按键的基本操作

提示:

在CT107D单片机综合训练平台上,首先将J5处的跳帽接到2~3引脚,使按键S4~S7四个按键的另外一端接地从而成为4个独立键盘。在扫描按键的过程中,发现有按键触发信号后,先做去抖动处理,当确认为按键按下时,才进行相应的功能处理。


基本操作:

按下S7点亮L1指示灯,松开按键熄灭。S6点亮L2指示灯S5点亮L3指示灯S4点亮L4指示灯都是松开熄灭。按键均作去抖。

代码的实现:

//访问按键和LED的 I/O 端口

sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;

sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;
sbit L5=P0^4;
sbit L6=P0^5;
sbit L7=P0^6;
sbit L8=P0^7;

//通过译码器来实现相应功能的通道的选择

void SelectHC138(unsigned char n)
{
    switch(n)
    {
        case 4:
            P2=(P2 & 0x1f) | 0x80;
        break;
        case 5:
            P2=(P2 & 0x1f) | 0xa0;
        break;
        case 6:
            P2=(P2 & 0x1f) | 0xc0;
        break;
        case 7:
            P2=(P2 & 0x1f) | 0xe0;
        break;
        
    }
}

//延时函数

void Delay(unsigned int t)

{

        while(t--);

}

//功能的实现

void Scanf_KeyAlone()

{

if(S7==0)

{

     Delay(100);

     if(S7==0)

      {

         L1 = 0;

         While(S7==0);//等待释放

         L1 =1;

      }

}

if(S6==0)
    {
        Delay(10);
        if(S6==0)
        {
            L2=0;
            while(S6==0);
                L2=1;
        }
    }
    
    

    
    if(S5==0)
    {
        Delay(10);
        if(S5==0)
        {
            L3=0;
            while(S5==0);
                L3=1;
        }
    }
    
    

    if(S4==0)
    {
        Delay(1);
        if(S4==0)
        {
            L4=0;
            while(S4==0);
                L4=1;
        }
    }
    

}

//固定函数

void main()
{
       //Init();
        SelectHC138(4);
    while(1)
    {
    ScanfKeys_Alone();
    }
}

代码:


http://www.kler.cn/a/540860.html

相关文章:

  • 练习题(2.10)
  • CSS 伪类(Pseudo-classes)的详细介绍
  • 使用WebStorm开发Vue3项目
  • Render上后端部署Springboot + 前端Vue 问题及解决方案汇总
  • android selinux 问题
  • 安宝特方案 | AR助力制造业安全巡检智能化革命!
  • 区块链可投会议CCF B--ICWS 2025 截止3.3 附2024录用率
  • win11+mac键盘+PowerToys 重映射热键
  • 随手记:小程序手机号一键登录
  • R语言的软件开发工具
  • 如何使用C++将处理后的信号保存为PNG和TIFF格式
  • 基于微信小程序的博物馆预约系统的设计与实现
  • Web UI自动化测试中的显示等待、隐式等待有什么区别?
  • 电子时钟html
  • 如何转型为量化分析师 - FinTech
  • FFmpeg 命令规则与参数详解:输入/输出 YUV 文件的要求与分析
  • 哨兵模式与 Redis Cluster:高可用 Redis 的深度剖析
  • 2024 Navicat Premium最新版简体中文版破解激活永久图文详细教程(亲测可用)
  • PHP盲盒商城系统源码 晒图+免签+短信验证+在线回收 thinkphp框架
  • 深入理解指针初阶:从概念到实践
  • centos 和 ubuntu 区别
  • 半边数据结构(Half-Edge Data Structures)详细介绍
  • Spring Boot中实现多租户架构
  • 计算机图形学论文 | 面向制造的设计: 五轴铣削的几何制造可行性评估
  • 数据结构-find()-判断字符串s1中是否包含字符串s2
  • 【故障处理】ORA-19849 ORA-19612 0RA-17627 ORA-03114