在本教程中,我们将学习如何使用另一个IO 引脚作为输入并控制额外的 LED。在不浪费太多时间的情况下,让我们评估一下我们需要什么样的硬件设置。
硬件设置和要求
由于需要将开关用作输入,我们首先需要的是一个按钮。我们还需要一个额外的 LED 来由该按钮控制。除了这两个之外,我们还需要一个电阻器来限制 LED 电流,以及一个用于下拉按钮的附加电阻器。这将在示意图部分进一步说明。我们需要的组件 -
一个按钮(任何种类的瞬时开关,特别是触觉开关)
LED的任何颜色
4.7k 下拉电阻
100R电阻
更不用说,除了上述组件,我们还需要基于N76E003 微控制器的开发板以及Nu-Link 编程器。此外,还需要面包板和连接线来连接所有组件,如下所示。
N76E003 LED和按钮接口电路
正如我们在下面的示意图中看到的,开发板内部的测试 LED 连接在端口 1.4上,另外一个 LED 连接在端口 1.5上。电阻 R3 用于限制 LED 电流。
在引脚 1.6 中,连接了一个名为 SW 的按钮。每当按下按钮时,引脚将变为高电平。否则会被 4.7K的下拉电阻R1 拉低。
该引脚也是编程器访问的与程序相关的引脚。它用于发送程序数据。但是,我们将看到选择这些引脚的原因,并获得有关N76E003 引脚映射的公平信息。
N76E003 引脚图
N76E003的引脚图如下图所示——
正如我们所看到的,每个引脚都有多种功能,可以用于不同的目的。让我们举个例子。引脚 1.7 可用作中断、模拟输入或通用输入输出操作。因此,如果任何引脚用作 I/O 引脚,则相应的功能将不可用。
因此,用作 LED 输出引脚的引脚 1.5 将失去 PWM 和其他功能。但这不是问题,因为该项目不需要其他功能。之所以选择引脚 1.5 作为输出,引脚 1.6 作为输入,是因为 GND 和 VDD 引脚最近可用,便于连接。
但是,在这个微控制器的 20 个引脚中,有 18 个引脚可以用作 GPIO 引脚。引脚 2.0 专用于复位输入,不能用作输出。除此引脚外,所有引脚均可配置为下述模式。
根据数据表,PxM1.n 和 PxM2.n 是两个寄存器,用于确定 I/O 端口的控制操作。现在,开始写入和读取 GPIO 端口是完全不同的事情。因为写入端口控制寄存器会改变端口的锁存状态,而读取端口会获得逻辑状态的状态。但要读取端口,必须将其设置为输入模式。
N76E003 的简单 GPIO 控制程序
本教程使用的完整程序可以在本页底部找到,代码解释如下。
将引脚设置为输入
让我们先从输入开始。如前所述,要读取端口的状态,需要将其设置为输入。因此,由于我们选择了 P1.6 作为我们的输入开关引脚,我们通过下面的代码片段行来表示它。
#define SW P16
需要将相同的引脚设置为输入。因此,在设置功能上,使用下面的行将引脚设置为输入。
无效设置(无效){
P14_准模式;
P15_准模式;
P16_输入模式;
}
这一行P16_Input_Mode; 在“BSP include library”的Function_define.h头文件中定义,将pin位设置为P1M1|=SET_BIT6; P1M2&=~SET_BIT6。SET_BIT6也在同一个头文件中定义为 -
#define SET_BIT6 0x40
将引脚设置为输出
与输入引脚相同,板载测试 LED 和外部 LED1 使用的输出引脚也在代码的第一部分中定义了各自的引脚。
#define Test_LED P14
#define LED1 P15
这些引脚使用以下行在设置函数中设置为输出。
无效设置(无效){
P14_Quasi_Mode; // 输出
P15_准模式;// 输出
P16_输入模式;
}
这些行也在Function_define.h头文件中定义,它将引脚位设置为P1M1&=~SET_BIT4; P1M2&=~SET_BIT4。SET_BIT6也在同一个头文件中定义为 -
#define SET_BIT4 0x10
无限循环
一个硬件,如果连接到电源并且工作正常,应该连续输出,应用程序永远不会停止。它无限次地做同样的事情。无限while循环的功能来了。while 循环内的应用程序无限运行。
而(1){
Test_LED = 0;
sw_delay(150);
测试_LED = 1;
sw_delay(150);
如果(SW == 1){
LED1 = 0;
}
其他 {
LED1 = 1;
}
}
}
上面的 while 循环根据sw_delay值使 LED 闪烁,并检查 SW 的状态。如果开关被按下,P1.6 为高电平,因此当按下时,读取状态为 1。在这种情况下,当开关被按下并且端口 P1.6 保持高电平时, LED1 将发光。
对 N76E003 进行编程并验证输出
在我们的 N76E003 入门教程中,我们已经学习了如何对 N76E003 进行编程,因此我们将在这里重复相同的步骤来对我们的电路板进行编程。代码编译成功,返回0个warning和0个Errors,使用Keil默认的刷机方式刷机。
如上图所示,当我按下按钮时,我们的外部 LED 会亮起。
#include "N76E003.h"
#include "SFR_Macro.h"
#include "函数定义.h"
#include "Common.h"
#include "延迟.h"
#define Test_LED P14
#define LED1 P15
#define SW P16
无效设置(无效);
无效 sw_delay (int ms);
无效的主要(无效){
设置();
而(1){ Test_LED = 0;
sw_delay(150);
测试_LED = 1;
sw_delay(150);
如果(SW == 1){
LED1 = 0;
}
别的 {
LED1 = 1;
}
}
}
// 基于软件的延迟。时间不准确。
无效 sw_delay (int ms){
整数a,b;
对于(a=0;a<1296;a++){
对于 (b=0; b
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 电子学(第二版 吴利民译)
来源:下载中心
- 电子工程师自学速成——设计篇
来源:下载中心
- 电路
来源:大学堂
- 电源基础知识讲座
来源:大学堂
- 叠加原理:概念及其求解过程
来源:电路图
- PCB板基础知识讲解
来源:电路图
推荐帖子 最新更新时间:2024-09-20 15:03
- 51单片机控制Q2406B收发短信
- 最近在用51单片机控制Q2406B收发短信 实现了一下几个函数: 功 能:设置传输速率 设置方法:AT+ipr=9600 **********************************************************************/ Set_Sp
- seairensheng嵌入式系统
- 开始玩转stm32f429
- 今天收到一套f429的开发板,好开森 ,现在开始要玩转429,因为是开始接触这套高大上的板子,所以可能更新较慢,望各位群友谅解 ,还有欢迎各位进贴讨论。 开始玩转stm32f429 看起来就高大上,加油 加油! 参加什么活动得的? dcexpert 发表于 2014-
- 小布丁黏久久stm32/stm8
- 求推荐一款升压稳压芯片 输入4.5V 输出5V稳压 电流3A
- 求推荐一款升压稳压芯片,因为现在的电路有压降,核心模块输入电压不够5V偶尔重启,需要加一个5V稳压的,负载电流3A。常用的,市场上容易买到的。 还请问下 LM2596 能用吗? 求推荐一款升压稳压芯片 输入4.5V 输出5V稳压 电流3A LM1085能用吗? LM10
- 297229936电源技术
- STM32芯片的USB中文资料与实验程序谁有?
- STM32芯片的USB中文资料与实验程序谁有?能贡献一下吗? STM32芯片的USB中文资料与实验程序谁有? 在网上下载的东西,编译通不过啊 有 D版的KEIL3吗 请问L
- LINZIstm32/stm8
- 自制履带机器人爬楼梯精彩视频
- 随着科学技术的发展,如今最热门的话题就是机器人,可是如何做成一个自己心仪的机器人,这可成为一个难题,先构思,再做配件,动手搭配等,是很麻烦。但是现在我向大家推荐一个网站,这是一全国首家机器人配件专卖店,这里的配件齐全,马达、齿轮、电机等。如果您对此感兴趣的话,不妨进这个网
- rainchencxy工控电子
- 为什么我的MSP430F5529时钟初始化使用高速XT1模式,XT1HFOFFG一直是高
- MCU:MSP430F5529 本人想使用这款单片机的XT1高速频率模式,但是经过配置之后,XT1HFOFFG标志位一直为高。 我现在外部接的是12M无源晶振和2个30PF负载电容。 板子是自己做的,之前尝试过用32768HZ的晶振使用低速频率模式就能正常工作。换成告诉就
- yg776微控制器 MCU
- FPGA大公司面试笔试数电部分(转)
- 求助 毕业设计《基于单片机的计算器编程》
- Embedded Studio V4移植项目到V5要注意哪些?
- 06月04日 进度汇报帖,修改了原理图中几个问题
- 培训市场直指就业
- c语言编程
- 混频信号如何变为直流信号
- MSP430FR2433LaunchPad下载失败问题的解决
- [南京]谱瑞集成电路(南京)有限公司 诚聘 Analog Layout Engineer
- 测评入围名单:安信可UWB室内定位模组NodeMCU-BU01
- DSP芯片的前缀TMS和TMX有什么区别
- ATmega128程序
- 控制一组(最少3个)磁保持继电器的 74HC595 芯片 偶尔会出现烧坏的情况,用什么替换
- 手头的一个中文手册
- 泰克送你三板斧,招招解决电源测试大难题!答题赢好礼喽!(已颁奖)
- AXD调试器的教程
- 求助一个quartus原理图的问题
- 【TI毫米波雷达测评】5+AWR1443 EVM板 灵敏度(最近距离)测试及小结
- 如何解决华大单片机上电复位/硬件复位后一个管脚总是输出高电平脉冲问题?
- 12864多级菜单设计
- 使用 ROHM Semiconductor 的 BD4858 的参考设计
- LT6600IS8-15 极低噪声、差分放大器和 15MHz 低通滤波器的典型应用电路
- G304侧键板 V2.0
- LTM4630IV 2 相、1.5V、36A 输出 DC/DC 稳压器的典型应用电路
- 【验证成功】CSPS服务器电源转xt60板
- LT1303、3 节电池至 3.3V 升压/线性转换器具有输出断开连接的典型应用电路
- Si7006-07-EVB,Si7006/Si7007 温度和湿度传感器评估套件
- EV-ADF4355SD1Z,用于评估具有集成 VCO 的 ADF4355 微波宽带合成器的评估板
- MAXREFDES72#:适用于ARDUINO平台的PMOD适配器
- SI2435FT18-EVB,带有 UART 接口的 SI2435 ISOmodem 评估板