按键控制流水灯

具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍

实验相关寄存器

实验相关电路

宏定义

#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P0_4
#define KEY1 P0_1

初始化步骤

graph TD
id1[设置P0_1 P1_0 P1_1 P0_4为通用接口]
id2[设置P0_1为输入接口 P1_0 P1_1 P0_4为输出接口]
id3[设置P0_1为上拉下拉电路 也就是设置P0INP]
id1-->id2-->id3

初始化代码

void InitIO(void)
{ //设置P0_1,P1_0,P1_1,P0_4,为通用接口
P0SEL&=~0x11; //P0SEL:1110 1110
P1SEL&=~0x03; //P1SEL:1111 1100
//设置P0_1为输入接口
P0DIR&=~0x02; //P0DIR:1111 1101 //设置P1_0,P1_1,P0_4为输出接口
P1DIR|=0x03; //P1DIR=0000 0011
P0DIR|=0x10; //P0SEL=0001 0000 //让三个灯先灭
LED1=1;
LED1=1;
LED1=1; }

main函数中的步骤

graph TD
id1[初始化 InitIO]
id2{是否被按下KeyScan}
id3[三个灯以流水的方式亮WaterLight]
id1-->id2
id2--按下-->id3
id2--没按下-->id2
id3-->id2

KeyScan()函数用来检测按键是否被按下

//检测按键是否被按下,如果被按下返回true,如果没被按下,返回false
uint KeyScan()
{
if(KEY1==0)
{
while(KEY1==0); //直到按键被松开
return 1; } return 0; }

WaterLight()函数用实现

//让三个灯以流水灯的方式亮一次
void WaterLight()
{
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
}

ok接下来将这些代码块拼接一下,就得到全部的代码了

#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char //定义控制灯的端口
#define LED1 P1_0 //定义LED1 为P10 口控制
#define LED2 P1_1 //定义LED2 为P11 口控制
#define LED3 P0_4 //定义LED3 为P04 口控制
#define KEY1 P0_1 //定义KEY1 P_01
//延时 *****************************/
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
} //初始化IO 口程序 *****************************/
void InitIO(void)
{ //设置P0_1,P1_0,P1_1,P0_4,为通用接口
P0SEL&=~0x11; //P0SEL:1110 1110
P1SEL&=~0x03; //P1SEL:1111 1100
//设置P0_1为输入接口
P0DIR&=~0x02; //P0DIR:1111 1101 //设置P1_0,P1_1,P0_4为输出接口
P1DIR|=0x03; //P1DIR=0000 0011
P0DIR|=0x10; //P0SEL=0001 0000 //调整P0_1为上拉下拉
P0INP&=~0x02; //P0INP:1111 1101 } //检测按键是否被按下,如果被按下返回true,如果没被按下,返回false
uint KeyScan()
{
if(KEY1==0)
{
while(KEY1==0);
return 1; } return 0; } //让三个灯以流水灯的方式亮一次
void WaterLight()
{
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
} //主函数 ***************************/ void main(void)
{ InitIO();
while(1)
{
if(KeyScan())
WaterLight();
} }

实验过程中的问题



感觉这个寄存器的设置没什么用啊,因为无论为0或者是为1,实验现象都是一样的,下周上课需要问一下老师。

实验心得

通过这个实验,知道了按键相应的接口

cc2530的第二次实验,用按键控制流水灯的更多相关文章

  1. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  2. cc2530的第三次实验,按键中断控制流水灯

    cc2530的第三次实验:按键中断控制流水灯 效果为按一次按键,流水灯亮一次 实验相关电路图: 实验相关寄存器: 初始化函数 //初始化LED灯 //设置P1SEL,通用为0,外设为1 1111110 ...

  3. STM32嵌入式开发学习笔记(三):使用按键控制小灯

    按键和小灯一样,也是通过GPIO外设与主板连接,也是通过GPIO_InitStruct类型结构体控制其工作. 查阅技术手册,按钮连接GPIOA控制下的管脚0. 但与之不同的是,按键是一种输入设备,输入 ...

  4. 硬件——nrf51822第三篇,按键控制小灯

    现象是按键按下,小灯亮,按键抬起,小灯灭. 从这一节我们细致剖析gpio口的设置: nrf51822片上一共有32个数字引脚,分为4个port,如下: port 0 pin 0-7 port 1 pi ...

  5. 按键控制LED灯-ESP32中断处理

    #include <driver/gpio.h> #include <esp_task_wdt.h> #include <freertos/FreeRTOS.h> ...

  6. 独立按键控制led灯

    #include "regx51.h"typedef unsigned int u16; void delay_us(u16 time){ while(time--){} }voi ...

  7. 17.3.15---关于GPIO控制流水灯的信息

    添加一个网址: http://rmingwang.com/gpio-control-flow-lamp-code-archive.html 还有一个 http://www.openedv.com/po ...

  8. ARM实验4—按键轮询实验

    key_poll按键轮询实验 实验内容: 通过FS_4412开发板上的按键控制LED灯并打印信息. 实验目的: 熟悉开发环境的使用. 掌握猎户座4412处理器的GPIO接口, 实验平台: FS4412 ...

  9. cc2530单片机的第一次实验,流水灯

    第一个实验:控制流水灯 P1_0,P1_1,P0_4都连接在发光二极管的负极,所以,当这三个引脚为低电平,也就是0的时候,相应的发光二极管才会亮. 其实这里可以稍微的关注一下寄存器的地址,然后,编程的 ...

随机推荐

  1. bootstrap使用笔记

    本文翻译自[http://getbootstrap.com/2.3.2/scaffolding.html#gridSystem] 1.需要在H5的文档声明中使用: 2.如下一个简单的两列布局,先添加一 ...

  2. Neo4j学习——基本操作(一)

    由于开始学习知识图谱,因此需要涉及到neo4j的使用一.介绍neo4j是一个图形数据库基于Java开发而成,因此需要配置jvm才可以运行配置请参考我前面的一篇blog:https://www.cnbl ...

  3. 【题解】古代猪文 [SDOI2010] [BZOJ1951] [P2480]

    [题解]古代猪文 [SDOI2010] [BZOJ1951] [P2480] 在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心 ...

  4. 类型和变量(C#学习笔记02)

    类型和变量 [C#类型和变量(原文参考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-var ...

  5. linux学习 - 基本命令篇

    关机重启命令 基本操作之修改用户名(Ubuntu) 查看系统版本号 查看系统是32位还是64位 系统进程信息查看 查看某个端口被占用的情况 查看磁盘分区使用情况 df 命令 fdisk 关机重启命令 ...

  6. APS.NET MVC + EF (03)---初始MVC

    3.1 MVC简介 MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(C ...

  7. python数据分析三剑客之: pandas操作

    pandas的操作 pandas的拼接操作 # pandas的拼接操作 级联 pd.concat , pd.append 合并 pd.merge , pd.join 一丶pd.concat()级联 # ...

  8. Win10 资源管理器窗口无边框的问题

    将“在窗口下显示阴影”关闭,再重新打开即可. 等了这么久,才敢在工作环境使用Win10,没想到还是这么多bug和不方便之处:输入法.托盘区.蓝屏...

  9. MFC 文件保存对话框的设置的那些秘密

    搬家自CSDN 2015-5-14 CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR ...

  10. php+js实现极验,拖动滑块验证码验证表单

    现在很多网站,比如淘宝,京东等都改用使用极验拖动验证码实现登录,这种方式比传统的验证码方式有更好的体验,减少用户输入的错误,也同样能起到防盗刷的功能.现在很多极验都是第三方的,也很多都是收费的.今天在 ...