一、实验目的
通过按键实现LED灯的开关控制,实现人机交互
二、实验相关电路图
按键接子啊P0_1接口上,P0端口的第一位P0_1为低电平时说明按键被按下,P0_1为高电平时说明为抬起状态。

三、实验相关寄存器





P1DIR |= 0x01;将P1DIR(P1方向寄存器)P1_0设置为高电平的方向设为输出,输出就是可以输出0V或者3.3V;
LED1 = 1;给LED高电平使其处在熄灭状态。

重点看按键的配置:
P0SEL &= ~0x02;将P0SEL(P0功能选择寄存器)第二位的P0_1设置为低电平即设置为通用I/O;

P0DIR &= ~0x02;将P0DIR(P0方向寄存器)P0_1设置为低电平即方向设置为输入;输入就是检测外部电压来判断它是0还是3.3V

P0INP &= ~0x02;为打开P0INP(输入模式)P0_1位的上拉电阻
四、实验代码
#include <ioCC2530.h>

typedef unsigned char uchar;
typedef unsigned int uint;

#define LED1 P1_0 // P1.0口控制LED1
#define KEY1 P0_1 // P0.1口控制S1

/****************************************************************************

  • 名 称: DelayMS()

  • 功 能: 以毫秒为单位延时,系统时钟不配置时默认为16M(用示波器测量相当精确)

  • 入口参数: msec 延时参数,值越大,延时越久

  • 出口参数: 无
    ****************************************************************************/
    void DelayMS(uint msec)
    {
    uint i,j;

    for (i=0; i<msec; i++)
    for (j=0; j<535; j++);
    }

/****************************************************************************

  • 名 称: InitLed()
  • 功 能: 设置LED相应的IO口
  • 入口参数: 无
  • 出口参数: 无
    ****************************************************************************/
    void InitLed(void)
    {
    P1DIR |= 0x01; // P1.0定义为输出
    LED1 = 1; // LED1灯熄灭
    }

/****************************************************************************

  • 名 称: InitKey()
  • 功 能: 设置按键相应的IO口
  • 入口参数: 无
  • 出口参数: 无
    ****************************************************************************/
    void InitKey(void)
    {
    P0SEL &= ~0x02; //设置P0.1为普通IO口
    P0DIR &= ~0x02; //按键接在P0.1口上,设P0.1为输入模式
    P0INP &= ~0x02; //打开P0.1上拉电阻
    }

/****************************************************************************

  • 名 称: KeyScan()

  • 功 能: 读取按键状态

  • 入口参数: 无

  • 出口参数: 0为抬起 1为按键按下
    ****************************************************************************/
    uchar KeyScan(void)
    {
    if (KEY1 == 0)
    {
    DelayMS(10);
    if (KEY1 == 0)
    {
    while(!KEY1); //松手检测
    return 1; //有按键按下
    }
    }

    return 0; //无按键按下
    }

/****************************************************************************

  • 程序入口函数
    ****************************************************************************/
    void main(void)
    {
    InitLed(); //设置LED1相应的IO口
    InitKey(); //设置S1相应的IO口

    while(1)
    {
    if (KeyScan()) //按键按下则改变LED状态
    LED1 = ~LED1;
    }
    }


    实验现象


按键控制LED亮灭(CC2530)相关推荐

  1. 按键控制LED亮灭(按一次常亮和按一次亮一下)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.按键按一次LED一直亮 二.按一下按键LED亮一下 总结 前言 一.51单片机按键控制LED亮灭 51单片机的LE ...

  2. C51---3.2 独立按键控制LED亮灭状态

    C51---3.2 独立按键控制LED亮灭状态 原理图 按键消抖 main函数 原理图 按键消抖 对于机械开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断 ...

  3. 沁恒CH582M开发板-2-按键扫描(按键控制LED亮灭)

             沁恒CH582M开发板-按键扫描(按键控制LED亮灭) 硬件准备: 源地CH582M核心板开发板 RISC-V沁恒WCH蓝牙BLE5.3双路USB: USB-Typec数据线,面包板 ...

  4. 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

    目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 1.独立按键控制LED灯亮灭 独立按键控制LED灯状态,在 ...

  5. 51单片机入门学习------独立按键控制LED亮灭

    一.独立按键 1.特点:同侧导通,异侧断开 2.独立按键的I/O口  单片机上电后,所有I/O口默认都是高电平.没有按开关时都是高电平,按下后变成低电平. 寄存器通过检测高低电平检测按键是否被按下 1 ...

  6. 使用GPIO输出控制Led亮灭(CC2530)

    1.实验目的: a.通过实验掌握CC2530芯片GOIP的配置方法 b.掌握Led驱动电路以及开光Led的原理 c.查看cc2530-datasheet.pdf手册查找各个寄存器的意思. 二.实验相关 ...

  7. CC2530:按键控制LED亮灭

    #include <ioCC2530.h>typedef unsigned char uchar; typedef unsigned int uint;#define LED1 P1_0 ...

  8. 【嵌入式】——串口实验——实现芯片串口收发数据,按键中断串口发送数据,串口接收数据中断来控制LED亮/灭

    实验目的: 实现芯片串口收发数据,按键中断串口发送数据:按下按键,向串口发送数据,并通过虚拟终端显示出来: 串口接收数据中断来控制LED亮/灭:通过串口助手向MCU发送数据,"A" ...

  9. 九、stm32-蓝牙HC_05(接发通信、控制LED亮灭)

    目录 一.固件库模板 二.准备资料 三.简介 1. 引脚 2. AT: 设置工作模式 3. 基本配置(所有AT指令都必须换行) 4. AT命令的详细说明 四.实验 1.硬件设计 2.软件设计 2.1 ...

最新文章

  1. hive 表的常用操作
  2. Asp.net SignalR 实现服务端消息推送到Web端
  3. Java 反射 不定参数bug
  4. 小米4刷centos_给大家推荐两款小米的产品
  5. 高度为5的3阶b树含有的关键字个数_数据结构要考得好,你心里要有B树
  6. 从小白到年薪10万+,优秀的数据分析能力如何速成?
  7. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
  8. 打开链接跳转浏览器代码
  9. java内存管理(堆、栈、方法区)
  10. 多线程 之 生产者与消费者
  11. redis scala编程之创建连接
  12. 实战项目——编辑器实现C#/C++可视化编程#WinFrom
  13. UBLOX配置/GPS配置设置/u-center使用
  14. 同济大学研究生 计算机 哪个校区,同济大学研究生院在哪个校区?宿舍条件好不好?有哪些招生专业目...
  15. java地铁最短_南京地铁最短路径以及最少换乘算法C++不用类
  16. 高速PCB阻抗设计阻抗控制内参
  17. Symbol Type Viewer Version 1.0.0.3 (beta) by Lionel d'Hauenens
  18. 十万部冷知识:世界杯卫冕冠军,往往会在小组赛出局?
  19. 爱因互动王守崑:未来机器人的服务质量会显著高于人类
  20. CSS 的布局 盒子

热门文章

  1. 如何让你的电脑保持清爽
  2. 由手机号绑定的账号,都应设置更换手机号功能
  3. VBA基础函数:取数组最大下标——UBound函数
  4. Holtek HT32 e-Link32 Pro 驱动正常无法安装 解决办法
  5. C# 高并发获取唯一ID算法
  6. oppo便签误删怎么办_oppo手机便签误删怎么办?oppo便签如何导入新手机
  7. [封装插件]酒仙网和京东左侧动态菜单栏案例
  8. c++中多重继承二义性产生以及二义性的消除方法
  9. golang中的字符串
  10. 自然生长不含咖啡碱的茶树新品种--T三有机可可茶