LPC2124--GPIO按键控制LED灯的闪烁
来源:互联网 发布:网络销售如何找客户 编辑:程序博客网 时间:2024/06/10 02:58
实例目的
实例目的:掌握Proteus软件的使用及调试方法,学习IO编程。
实例内容:
学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。
键盘输入,当检测到有按键输入时,对发光二极管进行取反控制。使用
I/O口输入方式对按键进行扫描。
实例步骤:
在Proteus中绘制原理图。
在Keil for ARM中输入程序,并编译通过。
加载ELF程序,观察仿真结果。
采用KEIL for ARM与PROTEUS的整合方式联调。
知识点概括
LPC2000系列作为 “微控制器”,其GPIO特性就显得很
重要。它具有如下的特性:
①可以独立控制每个GPIO口的方向(输入/输出模式);
②可以独立设置每个GPIO的输出状态(高/低电平);
③所有GPIO口在复位后默认为输入状态。
重要。它具有如下的特性:
①可以独立控制每个GPIO口的方向(输入/输出模式);
②可以独立设置每个GPIO的输出状态(高/低电平);
③所有GPIO口在复位后默认为输入状态。
LPC2114/2124微控制器具有两个端口--P0和P1,可以作为GPIO使用的引脚数为46个。
LPC2210/2212/2214微控制器还包含另外两个端口--P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个
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( ); } }
0 0
- LPC2124--GPIO按键控制LED灯的闪烁
- Linux Kernel 控制 GPIO LED 闪烁 (Blink)
- MSP430按键控制LED闪烁频率
- STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关
- Stm32按键中断使LED灯闪烁
- 简单的按键控制LED
- stm32 ucos LED灯延时闪烁+按键闪烁+串口输出
- jz2440裸板开发之GPIO:用按键控制led
- 5.0 按键控制LED灯
- 独立按键控制led灯
- 中断-按键控制LED灯
- 用PWM波控制LED灯的闪烁
- GPIO编程(二)led灯的控制
- 基于JZ2440的按键控制GPIO灯的亮灭
- LPC2103控制一个LED灯闪烁
- 4.0 IO口控制LED灯闪烁
- 用定时器控制Led灯闪烁
- 使用TI CC2530的GPIO控制Led
- kettle的安装和部署
- Android 利用BaseAdapter定制属于自己的adapter
- 一步步学习SPD2010--附录A--SPD工作流条件和操作(3)--文档集操作
- 用C语言编写 Windows 服务程序的五个步骤以及服务编程常见问题处理
- IOS 对相册图片进行读取、存储到指定文件夹、从指定文件夹读取出来
- LPC2124--GPIO按键控制LED灯的闪烁
- java调用c++动态链接库---jnaerator命令行生成bridj的包
- iisnode特定设置(web.config中管理)
- 编程tips
- Linux 内核调试器内幕
- Opencv配置问题
- js 验证 身份证号
- Log4Net配置
- n*m棋盘的长方形个数和正方形个数