历史上的今天

今天是:2024年08月23日(星期五)

正在发生

2021年08月23日 | LPC2124--GPIO按键控制LED灯的闪烁

发布者:和谐共存 来源: eefocus关键字:LPC2124  GPIO  按键控制  LED灯  闪烁 手机看文章 扫描二维码
随时随地手机看文章

实例目的

实例目的:掌握Proteus软件的使用及调试方法,学习IO编程。


实例内容:

 学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。

 键盘输入,当检测到有按键输入时,对发光二极管进行取反控制。使用

I/O口输入方式对按键进行扫描。


实例步骤:

 在Proteus中绘制原理图。

 在Keil for ARM中输入程序,并编译通过。

 加载ELF程序,观察仿真结果。

 采用KEIL for ARM与PROTEUS的整合方式联调。


知识点概括

LPC2000系列作为 “微控制器”,其GPIO特性就显得很重要。它具有如下的特性:

①可以独立控制每个GPIO口的方向(输入/输出模式);

②可以独立设置每个GPIO的输出状态(高/低电平);

③所有GPIO口在复位后默认为输入状态。


LPC2114/2124微控制器具有两个端口--P0和P1,可以作为GPIO使用的引脚数为46个。

LPC2210/2212/2214微控制器还包含另外两个端口--P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个


GPIO与控制寄存器的关系

相关寄存器描述

GPIO引脚值寄存器-IOxPIN

GPIO方向控制寄存器-IOxDIR:

GPIO输出置位寄存器-IOxSET:

GPIO输出清零寄存器-IOxCLR:

注意

①引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;

②大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);

③复位后默认所有GPIO为输入模式。。


实例描述

功能:键盘输入.当检测到有按键输入时,对发光二极管进行取反控制 使用I/O口输入方式对按键进行扫描


平台:NXP-LPC2124


环境:Keil4 + Proteus7


要求如图

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

/*  This file is part of the uVision/ARM development tools                    */

/*  Copyright KEIL ELEKTRONIK GmbH 2002-2004                                  */

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

*File:Main.c

*功能: 键盘输入.当检测到有按键输入时,对发光二极管进行取反控制

*      使用I/O口输入方式对按键进行扫描

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

 

#include   "config.h"

 

 

#define     LEDCON           0x00000200   // P0.9引脚控制LED,低电平点亮

#define     KEY              0x00008000   // P0.15引脚连接按键

 

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

*名称:WaitKey()

*功能:等待一个有效按键.本函数有去抖功能

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

 

void WaitKey(void)

{  

    uint32 i;

    while(1)

    { 

// 当按下P0.15以后会输出低电平, P0.15位为0

        while((IO0PIN & KEY) != 0);          // 等待按键按下, IO0PIN & KEY) != 0表示IO0PIN的P0.15不是0, 标识没有按下

        

for(i = 0; i < 50000; i++);          // 延时消抖 

// 电路中的脉冲可能不稳定, 也就是说可能出现, 电平瞬时反转的情况

// 而且按下的过程, 由于两块电极有一定的抖动, 这段时间电平不稳定, 

// 因此应该写程序消除电极抖动产生的影响

// 

// 我们开始先判断电极P0.15是不是按下了, 如果按下了, 就延时一定时间再判断P0.15是不是按下了[p0.15 == 0]

// 如果两次检测都P0.15 == 0我们才认为是一个有效的按下事件

        

if((IO0PIN & KEY) == 0) // 如果IO0PIN的P0.15位引脚为0, 说明按下了P0.15

{

break; // 停止等的闪烁

    }

}

   

    // 只有当用户松开以后, LED灯才应该亮

    while((IO0PIN & KEY) == 0);              // 等待按键放开

}

 

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

*名称:main()

*功能:读取按键,控制LED闪烁

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

int main(void)

    PINSEL0 = 0x00000000;                  // 设置所有引脚连接GPI0[功能选择]

    PINSEL1 = 0x00000000; // 

 

    IO0DIR  |= LEDCON;                       // 设置LED控制口为输出,其它I/O为输入[将P0.9置1, P0.9用于输出]

    

while( 1 )

    { 

        IO0SET |= LEDCON; // 将P0.9引脚设置为输出高电平 = 1[LED灯暗]

        WaitKey( );

    // 将P0.9引脚设置为输出低电平 = 0[LED灯亮]

        IO0CLR = LEDCON;

        WaitKey( );

 

    }

 }

关键字:LPC2124  GPIO  按键控制  LED灯  闪烁 引用地址:LPC2124--GPIO按键控制LED灯的闪烁

上一篇:LPC1788的spi使用
下一篇:ARM7嵌入式LPC21XX系列LED灯

推荐阅读

工信部在官方网站公示了申报第311批《道路机动车辆生产企业及产品公告》,申报新能源汽车产品的共有111户企业的328个型号,其中纯电动产品共105户企业306个型号、插电式混合动力产品共6户企业9个型号、燃料电池产品共9户企业13个型号。其中新能源乘用车总计49款,包括纯电动乘用车42款,插电式混合动力乘用车7款。 值得注意的是,在本次公告的目录中,奇瑞...
今天iQOO在北京举办新品发布会,iQOO首款5G性能旗舰iQOO Pro震撼发布,之所以说它是5G性能旗舰,不仅因为它支持5G网络,更在于它是迄今为止配置最全面、价格最便宜的5G手机,放在市面上可以说是无敌的存在,我们来看看iQOO Pro的具体情况:外观方面,iQOO Pro采用了6.41英寸 Super AMOLED 灵动水滴屏,屏占比高达 91.7%,机身上下顶部也拥有微弧设...
美国政府还在积极推动美国公司收购TikTok,微软无疑是最有可能的买家,但不是唯一感兴趣的。据外媒报道,美国科技巨头甲骨文(Oracle)将会参与竞购TikTok,目前正在认真考虑收购TikTok在美国、加拿大、澳大利亚、新西兰的业务,并且已经和TikTok母公司字节跳动进行初步谈判。消息人士披露,甲骨文还在与一些持有字节跳动股份的美国投资者合作,包括泛大西洋...
网络测试仪的主要功能与特点是满足于现场工作的实际需要,在价格,性能和应用等方面会有很大的差别。在综合布线的测试与维护领域,依据它们所进行的测试功能,可以分成三个大类:验证测试,鉴定测试和认证测试。虽然这三个类别的综合布线测试仪在某些功能上可能有重叠,但每个类别的仪器都有其特定的使用目的。验证网络测试仪可以解决的问题是:“线缆连接...

史海拾趣

问答坊 | AI 解惑

USB-232转换(FT232BM)完整PCB文件和说明文件

以下文件版权所有,仅发上来大家共享,如有有用于商业目的,请自觉放弃使用。如果实在要作为商品出售,请告知我,谢谢! > 一块USB-232的模块,大小只有2.5cm*2.5cm,但可以应用于很多范围。 > 特别适用于没有串口的电脑,特别是笔记本电脑 ...…

查看全部问答∨

【Labview】推荐学习Labview的书

在对Labview有一个感性上的认识后,接下去我们可以选一本适合自己的书。       本人刚入门的时候,看的是Labview 8.2程序设计从入门到精通,让我对labview很快有一个理性上的认识。虽然当时用的是Labview 8.5 ,而后使用Labvie ...…

查看全部问答∨

转精华[一个500多点工程,从设计到完工(图)]

看看设计和现实之间的差距,用的是TCL-罗格朗的产品,FLUKE4000测试,100%通过,余量很好; 机柜 机房 网路 [localimg=600,800]7[/localimg]…

查看全部问答∨

LED显示屏单元板故障判断以及处理方法

replyreload += \',\' + 374451;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答∨

寻无线课堂互动系统开发人员

您好! 急寻有无线教学产品开发经验的硬件/软件人员, 最好是开发过无线课堂互动系统,待遇优厚! 15321523579…

查看全部问答∨

WINCE下音频文件的频谱显示画柱状图有没好办法?我的会闪烁啊!

WINCE下音频文件的频谱显示画柱状图有没好办法?我的会闪烁啊!…

查看全部问答∨

如何用方向键来控制鼠标移动,我做了一个,按方向键后鼠标位置是移动了,但是鼠标一动又回到原来位置,为什么啊?

如何用方向键来控制鼠标移动,我做了一个,按方向键后鼠标位置是移动了,但是鼠标一动又回到原来位置,为什么啊? ZafPositionStruct pos; ZafMouse* mouse; ZafPositionStruct pos; mouse = (ZafMouse*)EventManager()->GetObject(ID_ZAF ...…

查看全部问答∨

小弟的毕业设计啊!大家帮帮忙啊!

我的毕业设计的题目是基于单片机的plc数字量扩展,型号暂时定为西门子的S7-226,单片机为AT89C51,不知道从哪里入手啊!请大家帮帮忙啊! 我的邮箱275105908@qq.com或者adam-han@163.com…

查看全部问答∨

Stellaris® Sandstorm沙尘暴系列

Stellaris® Sandstorm沙尘暴系列基于 ARM® Cortex™-M3 的 MCU 800 类器件 具有 64KB 的单周期闪存、8KB 的单周期 SRAM 和 50MHz 的性能,Stellaris LM3S800 微处理器非常适合于要求复杂算法的嵌入式控制应用, 同时保持小型封装。LM ...…

查看全部问答∨

关于开启lwIP协议栈的调试输出LWIP_DEBUGF

我们在分析lwIP协议栈的时候,会经常看到LWIP_DEBUGF()这个函数的身影。我想lwIP的作者可能为了便于人们去学习和使用lwIP而花了不少时间添加的。其实对于初学者来说,要把lwIP协议栈分析清楚不是一件容易的事情,尤其是对TCP/IP协议原理不是很了 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved