实例目的
实例目的:掌握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( );
}
}
上一篇:LPC1788的spi使用
下一篇:ARM7嵌入式LPC21XX系列LED灯
推荐阅读
史海拾趣
随着5G技术的快速发展,磁联达(CND-tek)公司意识到无线充电技术将成为未来的重要趋势。公司投入大量资源进行无线充电发射线圈的研发,经过多次试验和改进,终于成功推出了一款性能稳定、效率高的无线充电产品。这一创新不仅为公司带来了丰厚的利润,也进一步巩固了公司在行业内的领先地位。
背景:霍尼韦尔公司的历史可以追溯到1885年,由发明家艾伯特·布兹在美国明尼阿波利斯创立布兹电子温度调节器公司。
发展:布兹成功研发出了一种名为“风门挡板”的装置,该装置能够自动调节室内温度,这是当时的一大技术突破。随着业务的不断发展,布兹电子温度调节器公司被统一温度控制公司收购,并在1893年更名为电子供热调节器公司。
关键事件:1898年,电子供热调节器公司被W.R. Sweatt收购,并于1916年更名为明尼阿波利斯热调节器公司。这一系列的更名和收购奠定了霍尼韦尔在恒温器领域的基础。
背景:进入20世纪后,霍尼韦尔在恒温器领域的技术不断成熟,同时,另一家名为霍尼韦尔供暖专业公司的企业也在加热器领域取得了显著成就。
发展:1927年,明尼阿波利斯热调节器公司与霍尼韦尔供暖专业公司合并,创立了明尼阿波利斯-霍尼韦尔调节器公司。这次合并不仅增强了公司的技术实力,还拓展了业务范围,使公司成为当时最大的高品质珠宝钟表生产商(尽管这与电子行业的直接关联较小,但反映了公司扩张的雄心)。
关键事件:合并后,公司继续深耕工业自动化领域,并收购了布朗仪器公司,进一步巩固了在全球工业控制器和指示器市场的领导地位。
背景:近年来,随着全球对可持续发展和数字化转型的重视,霍尼韦尔积极调整战略方向。
发展:公司加大了在可持续技术和数字化转型领域的投入,推出了一系列创新的产品和解决方案。例如,在能源转型领域,霍尼韦尔与多家中国合作伙伴共同推动可持续航空燃料生产基地的建设;在智慧建筑领域,与腾讯云合作打造联合解决方案等。
关键事件:这些举措不仅体现了霍尼韦尔对可持续发展的承诺和责任担当,也展示了公司在数字化转型方面的前瞻性和创新能力。同时,这些合作也进一步巩固了霍尼韦尔在全球电子行业的领先地位。
aconno深知人才是企业发展的核心动力。因此,公司一直致力于打造一支高素质、专业化的团队。通过招聘优秀人才、提供专业培训、建立激励机制等一系列措施,aconno成功吸引和留住了一批业内精英。这些人才为公司的技术创新和市场拓展提供了有力支持,成为aconno发展壮大的重要保障。
- 创业初期与技术创新
CT Micro公司最初由几位电子工程领域的专家创立,他们看到了微型计算机断层扫描(Micro-CT)技术在电子行业中的巨大潜力。初期,公司面临着资金短缺和技术难题,但他们通过不断研发和创新,成功开发出了一款具有高性价比的Micro-CT设备,迅速获得了市场的认可。
- 市场拓展与合作伙伴关系
随着产品的成熟,CT Micro开始积极寻求市场拓展。他们与多家电子制造企业建立了合作关系,为这些企业提供Micro-CT设备的定制服务。通过与这些企业的合作,CT Micro不仅扩大了市场份额,还进一步提升了产品的技术水平和应用范围。
- 研发升级与产品迭代
面对日益激烈的市场竞争,CT Micro不断投入研发力量,对Micro-CT设备进行升级和迭代。他们成功推出了多款新型设备,具有更高的分辨率、更快的扫描速度和更低的辐射剂量。这些新产品的推出,进一步巩固了CT Micro在电子行业中的领先地位。
- 国际化战略与市场拓展
随着国内市场的饱和,CT Micro开始实施国际化战略。他们积极参与国际展览和研讨会,展示自己的产品和技术实力。同时,他们还在海外设立了销售和服务中心,为国际客户提供更加便捷的服务。通过这些努力,CT Micro成功打开了国际市场的大门。
- 社会责任与可持续发展
在快速发展的同时,CT Micro也积极履行社会责任。他们注重环保和可持续发展,采用环保材料和节能技术生产产品。此外,他们还积极参与公益事业,为贫困地区的教育和医疗事业贡献力量。这些举措不仅提升了公司的社会形象,也为其可持续发展奠定了坚实基础。
请注意,这些故事框架是虚构的,并不代表CT Micro公司的实际发展情况。如果您需要了解CT Micro公司或类似公司的真实故事,建议您查阅相关公司的官方网站、新闻报道或行业分析报告。
USB-232转换(FT232BM)完整PCB文件和说明文件 以下文件版权所有,仅发上来大家共享,如有有用于商业目的,请自觉放弃使用。如果实在要作为商品出售,请告知我,谢谢! > 一块USB-232的模块,大小只有2.5cm*2.5cm,但可以应用于很多范围。 > 特别适用于没有串口的电脑,特别是笔记本电脑 ...… 查看全部问答∨ |
在对Labview有一个感性上的认识后,接下去我们可以选一本适合自己的书。 本人刚入门的时候,看的是Labview 8.2程序设计从入门到精通,让我对labview很快有一个理性上的认识。虽然当时用的是Labview 8.5 ,而后使用Labvie ...… 查看全部问答∨ |
看看设计和现实之间的差距,用的是TCL-罗格朗的产品,FLUKE4000测试,100%通过,余量很好; 机柜 机房 网路 [localimg=600,800]7[/localimg]… 查看全部问答∨ |
|
如何用方向键来控制鼠标移动,我做了一个,按方向键后鼠标位置是移动了,但是鼠标一动又回到原来位置,为什么啊? 如何用方向键来控制鼠标移动,我做了一个,按方向键后鼠标位置是移动了,但是鼠标一动又回到原来位置,为什么啊? 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沙尘暴系列基于 ARM® Cortex™-M3 的 MCU 800 类器件 具有 64KB 的单周期闪存、8KB 的单周期 SRAM 和 50MHz 的性能,Stellaris LM3S800 微处理器非常适合于要求复杂算法的嵌入式控制应用, 同时保持小型封装。LM ...… 查看全部问答∨ |
我们在分析lwIP协议栈的时候,会经常看到LWIP_DEBUGF()这个函数的身影。我想lwIP的作者可能为了便于人们去学习和使用lwIP而花了不少时间添加的。其实对于初学者来说,要把lwIP协议栈分析清楚不是一件容易的事情,尤其是对TCP/IP协议原理不是很了 ...… 查看全部问答∨ |