历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-08-23 来源:eefocus

实例目的

实例目的:掌握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( );

 

    }

 }

推荐阅读

史海拾趣

Fremont_Micro_Devices_USA公司的发展小趣事

Fremont Micro Devices USA公司的发展故事

故事一:初创与成长

Fremont Micro Devices USA(简称FMD或弗里蒙特微)的故事始于对高性能模拟及数模混合信号集成电路设计的执着追求。公司于多年前在加利福尼亚成立,起初是一家小型但充满活力的初创企业,专注于非易失性存储芯片、MCU芯片和电源管理芯片的研发。凭借其创始团队在半导体行业的深厚背景和技术专长,FMD迅速在消费电子、便携设备和通讯/网络领域崭露头角。通过持续的技术创新和产品研发,FMD逐渐积累了市场声誉,吸引了多家国际知名风险投资公司的关注和支持,为公司的快速发展奠定了坚实的基础。

故事二:技术突破与市场拓展

在FMD的发展历程中,技术突破是推动其不断前进的重要动力。公司研发团队拥有国内外顶尖半导体企业的工作经验,他们致力于全定制和半定制的数模混合芯片设计,不断提升产品的性能和可靠性。通过不断的技术积累和创新,FMD在Memory、MCU和PMIC等领域取得了显著的技术突破,拥有了业界领先的技术基础和IP积累。这些技术成果不仅提升了公司的市场竞争力,也为其在消费类、智能硬件、IOT和工控安防等应用领域的市场拓展提供了有力支持。

故事三:全球化布局与供应链管理

随着业务的不断扩张,FMD开始布局全球化市场。公司在美国本土建立了完善的研发和生产体系,同时在中国深圳设立了总部,并在香港设立了办事处,以便更好地服务亚太地区的客户。此外,FMD还积极与全球知名的电子元器件分销商合作,建立了稳定的供应链体系。通过优化供应链管理,FMD确保了产品的质量和交付速度,进一步提升了客户满意度和市场竞争力。

故事四:应对行业挑战与危机

在电子行业的发展过程中,FMD也面临着诸多挑战和危机。例如,全球半导体市场的周期性波动、国际贸易环境的变化以及新冠疫情的爆发等都对公司的运营和发展产生了一定的影响。然而,FMD凭借其强大的技术实力和市场敏锐度,积极应对这些挑战和危机。公司通过加强研发创新、优化产品结构、拓展新兴市场等方式,保持了业绩的稳定增长,并在逆境中实现了新的发展。

故事五:上市规划与未来发展

近年来,FMD在资本市场也取得了重要进展。公司已完成与中信证券的上市辅导协议签署,并在深圳证监局备案,拟在A股市场挂牌上市。这一举措不仅将为FMD带来更多的资金支持和发展动力,也将进一步提升公司的品牌影响力和市场竞争力。展望未来,FMD将继续秉承高性能、高可靠性和低成本的理念,加大在研发创新和市场拓展方面的投入力度,为客户提供更加优质的产品和服务,推动公司向更高层次的发展迈进。

BOOKLY公司的发展小趣事

BOOKLY公司在技术创新的基础上,积极拓展市场。通过与各大电子产品制造商建立合作伙伴关系,BOOKLY的产品迅速进入全球市场。公司还积极参与国际电子展览和技术交流会,展示其最新研发成果,吸引了众多合作伙伴和投资者的关注。通过不断的市场拓展和合作,BOOKLY逐渐成为了电子行业的领军企业。

BK Precision公司的发展小趣事

为了满足全球市场的需求,BK Precision开始实施全球化战略。公司不仅在美国本土设立了多个办事处和研发中心,还在欧洲和亚洲等地建立了分支机构。通过与国际授权分销商的合作,BK Precision成功地将产品推向全球市场,并赢得了众多国际客户的信赖。同时,公司还积极参与国际电子行业的展会和交流活动,提升品牌知名度和影响力。

兵字(BingZi)公司的发展小趣事

兵字公司的创始人李元兵,在经历了多年的研究所工作后,怀揣着对电子元器件领域的深厚情感与独到见解,决定投身创业。他深知,在电子行业这个日新月异的领域,唯有掌握核心技术,才能在激烈的市场竞争中立足。于是,兵字公司从成立之初,就致力于电源变压器和触发变压器的研发与生产,凭借过硬的技术实力和优质的产品质量,迅速在市场中站稳了脚跟。

ConnectBlue公司的发展小趣事

2014年5月19日,ConnectBlue公司被全球领先的定位与无线通信技术公司u-blox收购。这一收购为ConnectBlue公司带来了新的发展机遇和更广阔的市场空间。在u-blox的支持下,ConnectBlue公司得以进一步加大研发投入,拓展产品线,提升产品品质和服务水平。同时,公司还借助u-blox的全球销售网络和品牌影响力,进一步开拓国际市场,实现了新的跨越式发展。

固驰(GUERTE)公司的发展小趣事

随着产品质量的不断提升和技术的持续创新,固驰电子开始积极拓展国内外市场。公司产品不仅畅销国内市场,为美的、格力、艾美特等知名企业配套,还大量出口至韩国、俄罗斯、美国、加拿大、德国等国家和地区。这一过程中,固驰电子凭借其优良的品质、满意的价格和完善的服务赢得了国内外客户的一致好评,品牌影响力显著提升。

问答坊 | AI 解惑

vb教程!

本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 vb教程    …

查看全部问答>

大功率IGBT驱动过流保护电路的研究

针对分离元件保护电路和集成模块保护的优缺点进行比较研究。…

查看全部问答>

wince数据库工具

有没有什么工具可以直接看到wince中的数据库的内容…

查看全部问答>

使用stm32f101的时钟问题

我用的芯片是stm32f101vbt6,只能工作在36MHz,我用的初始化函数都是开发板上移过来的(用的是103系列,即工作在72MHz),我的板子是能“正常”工作,加了引号是我的定时器2定时时间不对,想弱弱的问几个问题: 1.我初始化时钟为72MHz,板子 ...…

查看全部问答>

寻找有USB和12位AD的IC

                                 本来想用STM32系列,可惜就是价格。。。。不知道各位能否推荐几款拥有USB和12位AD的IC,价格比STM32便宜一些的,谢 ...…

查看全部问答>

有没有办法把芯片的发射频率降下来

请问有没有办法把芯片(MICRF104)的发射频率降下来,或者推荐个10到30M发射频率的发射芯片,不胜感激 …

查看全部问答>

Xemga A3U 能干什么

带USB口的Xemga系列能干什么?如果价格降到多少钱大家就不会用STM了?好怀念用AVR代码的时代,现在正被逼着用STM。郁闷中,想辞职。想告诉老板xemga国内有货了,也带USB…

查看全部问答>

提议:DIY智能家居超级闹钟(M3+MP3方案)

最近换了个手机,声音比较小,早上起床闹不醒,已经迟到好几次了,准备自己DIY一个超级闹钟,结构图如下 [ 本帖最后由 fengzhang2002 于 2013-3-15 12:33 编辑 ]…

查看全部问答>

自控

本帖最后由 paulhyde 于 2014-9-15 03:06 编辑 昨天才拿到瑞萨的芯片,要是真用他们的芯片,那玩个球    …

查看全部问答>