基于MSP430G2微控制器闪烁LED:使用数字读/写引脚

2019-10-22来源: eefocus关键字:MSP430G2  闪烁LED  数字读  写引脚


这是一系列教程的第二篇教程,我们正在使用Energia IDE学习德州仪器的MSP430G2 LaunchPad开发板。在上一篇闪烁LED教程中,我们将介绍了使用Energia IDE开发LaunchPad开发板,同时我们还上传了第一个程序,在固定的时间周期内闪烁板上的LED。


在本教程中,我们将学习如何使用数字读取和数字写入选项读取输入设备(如开关)的状态,并控制LED等多个输出。在本教程结束时,您将学会如何使用数字输入和输出,这些输入可用于连接诸如红外传感器、PIR传感器等许多数字传感器,以及点亮或熄灭LED、蜂鸣器等输出。听起来很有趣,对不对!!?让我们开始吧。


所需材料

●    MSP430G2 LaunchPad开发板

●    8只任意颜色的LED

●    两个开关

●    8只1k电阻

●    连接导线


电路原理图

在我们上一个的教程中,我们注意到LaunchPad开发板本身带有两个LED和一个开关。但在本教程中,我们需要的不仅仅是这一点,因为我们计划在按下按钮时按顺序点亮八个LED灯。当另一个按钮被按下时,我们也会改变顺序,使其变得有趣。所以我们必须建立一个有8个LED灯和两个开关的电路,完整的电路图可以在下面看到。



在这里,8个LED是输出设备,两个开关是输入设备。我们可以将它们连接到开发板上的任意I / O引脚,但是我已经将引脚P1.0的LRD连接到P2.1,并将引脚1和2分别连接到引脚P2.4和P2.3,如上所示。


LED的所有阴极引脚都接地,阳极引脚通过电阻连接到I / O引脚。这个电阻叫做限流电阻,这个电阻对于MSP430来说不是必须的,因为它的I / O引脚可以提供的最大电流只有6mA,引脚上的电压只有3.6V。然而,使用它们是一个好习惯。当这些数字引脚中的任何一个变高时,相应的LED将亮起。如果您可以回想上一个教程的LED程序,那么您将会记得使用digitalWrite(LED_pin_name,HIGH)会点亮LED,而digitalWrite(LED_pin_name,LOW)将会熄灭LED。


开关是输入设备,开关的一端连接到接地端子,另一端连接到数字引脚P2.3和P2.4。这意味着只要我们按下开关,I / O引脚(2.3或2.4)就会接地,如果没有按下按钮,它将保持空闲状态。让我们看看如何在编程时使用这种方式。


编程说明

当按下开关1时必须写入程序以按顺序控制8个LED,然后当按下开关2时必须改变序列。完整的程序可以在此页面的底部找到。下面我将逐行解释程序,以便您可以轻松理解它。


与往常一样,我们应该从void setup()函数开始,我们将在其中声明我们正在使用的引脚是输入引脚或输出引脚。在我们的程序中,8个LED是引脚输出,2个开关是输入。这8个LED从P1.0连接到P2.1,这是开发板上的引脚号2到9。然后,开关分别连接到编号为P2.3和编号为2.4的引脚,引脚号为11和12。所以我们在void setup()中声明如下

  1. void setup() {

  2.   for (int i = 2; i <= 9; i++) {

  3.     pinMode(i, OUTPUT);

  4.   }

  5.   for (int i = 2; i <= 9; i++) {

  6.     digitalWrite(i, LOW);

  7.   }

  8.   pinMode (11, INPUT_PULLUP);

  9.   pinMode (12, INPUT_PULLUP);

  10. }



正如我们所知,pinMode()函数声明该引脚是输出或输入,而digitalWrite()函数使其变为高电平(ON)或低电平(OFF)。我们用一个for循环来做这个声明来减少行数。变量“i”将在for循环中从2递增到9,并且对于每个递增,内部函数将被执行。另一个可能会让你困惑的是“INPUT_PULLUP”。只需调用函数pinMode(Pin_name,INPUT)即可将一个引脚声明为输入,但这里我们使用了INPUT_PULLUP而不是INPUT,并且它们都有明显的变化。


当我们使用任意微控制器引脚时,引脚应该连接到低电平或高电平。在这种情况下,引脚11和12连接到按下时将接地的开关。但是当没有按下开关时,引脚没有连接到任何这种情况称为浮动引脚的地方,并且这对微控制器不利。所以为了避免这种情况,我们要么使用上拉或下拉电阻来保持引脚处于悬空状态。在MSP430G2553微控制器中,I / O引脚内置一个上拉电阻。要使用我们所要做的就是在声明期间调用INPUT_PULLUP而不是INPUT,就像上面做的那样。


现在让我们介绍void loop()函数。无论写在这个函数中什么都将永远执行。我们程序的第一步是检查开关是否被按下,如果按下,我们应该开始按顺序闪烁LED。要检查按钮是否按下,则使用以下行:


  1.   if (digitalRead(12) == LOW)




这里的新功能是digitalRead()函数,该函数将读取数字引脚的状态,当引脚获得某些电压时将返回高电平(1),并在引脚接地时返回低电平(0)。在我们的硬件中,只有当我们按下按钮时,引脚才会接地,否则由于我们使用了上拉电阻,引脚会变高。所以我们使用if语句来检查按钮是否被按下。

一旦按下按钮,我们进入无限(1)循环。这是我们开始顺序闪烁LED的位置。一个无限的while循环如下所示,无论在循环中写入什么,都将永远运行,直到使用break;声明。

  1. whiel(1){

  2. }



在无限的while循环中,我们检查连接到引脚11的第二个开关的状态的。如果按下这个开关,我们按照一个特定的顺序闪烁LED,否则我们将以另一个顺序闪烁。

  1. if (digitalRead(11) == LOW)

  2.       {

  3.        for (int i = 2; i <= 9; i++)

  4.         {

  5.          digitalWrite(i, HIGH);

  6.          delay(100);

  7.         }

  8.           for (int i = 2; i <= 9; i++)

  9.              digitalWrite(i, LOW);

  10.       }



为了顺序闪烁LED,我们再次使用for循环,但是这次我们使用delay(100)函数使用100毫秒的小延迟,以便我们注意到LED变高。一次只能使一个LED发光,我们还使用另一个for循环来关闭所有的LED。因此,我们打开LED等待一段时间,然后关闭所有的LED,然后增加计数开启LED等待一段时间,然后循环继续。但是只要第二个开关没有按下,所有这些都会发生。


如果第二个开关被按下,那么我们改变序列,程序将会或多或少与LED开启顺序相同。下面显示的代码行试着看一下并找出已经发生了什么变化。


  1.     else

  2.       {

  3.         for (int i = 9; i >= 2; i--)

  4.         {

  5.          digitalWrite(i, HIGH);

  6.          delay(100);

  7.         }

  8.                   for (int i = 2; i <= 9; i++)

  9.              digitalWrite(i, LOW);

  10.       }



是的,for循环已被更改。之前我们让LED从2号开始发光,直到9号。但现在我们将从9号开始,一直减少到2号。这样我们就可以注意到开关是否被按下。


闪烁LED序列的硬件设置

好了,我们已经介绍完所有的理论和软件部分。让我们来看看一些组件,看看这个程序是如何运行的。该电路非常简单,因此可以很容易地在面包板上搭建。但是我已经焊接了LED和开关板,只是为了使它看起来整洁。我焊接的perf电路板如下所示。



正如您所看到的,我们将LED的输出引脚和开关作为连接器引脚取出。现在我们使用插孔到插孔的连接线将LED和开关连接到MSP430 LaunchPad板上,如下图所示。



上传和工作

硬件完成后,只需将MSP430开发板连接到您的计算机并打开Energia IDE,然后使用本页末尾提供的程序。确保在Energia IDE中选择了正确的电路板和COM端口,然后单击上传按钮。该程序应该编译成功,一旦上传将显示“完成上传”。


现在按下电路板上的按钮1,LED应按照下图所示顺序点亮:



您也可以按住第二个按钮来检查序列是否发生了变化。如果您对结果感到满意,您可以尝试对代码进行一些更改,例如更改延迟时间以更改序列等。这将帮助您更好地学习和理解。


关键字:MSP430G2  闪烁LED  数字读  写引脚 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic477964.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:使用Energia IDE开发MSP430G2微控制器入门指南 - 闪烁LED
下一篇:使用MSP430G2 LaunchPad开发板连接LCD液晶显示屏的方法

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430G2553与MSP430F5336系列单片机总结[4]——比较器B的使用
比较器B是什么,顾名思义,它其实就是用来比较模拟电压+输入端和-输入端的电压大小,然后设置输出信号CBOUT的值的,如果 + 端电压高于 - 端电压,则CBOUT置高,否则置低。主要的控制寄存器有CBCTL0,CBCTL1,CBCTL2,CBCTL3,CBINT,CBIV,在MSP430G2553中没有比较器B,但是F5336中有,所以接下来的代码全都是F5336的比较器B使用程序:1.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平
发表于 2019-11-06
MSP430G2553使用CCS8.0编程注意点总结
本文总结了在利用MSP430G2553做实验时的一些通用错误及注意点,用的软件为CCS8.0,供大家借鉴,具体工程不再给出,若有相似问题或本文有错误,可留言,我尽量回复。文末附有MSP430的用户手册、数据手册、学习笔记及《从零开启大学生电子设计之路》电子版及相关例程的下载地址,我也会尽量持续总结并更新。【错误1】:在“UART_Global.h“中已经定义全局变量“extern unsigned int CHANGE_MODE;”,然而编译时仍然出现错误,错误提示为:error #10234-D: unresolved symbols remain。【解决】:经过在网上查找并对比相关例程发现,在“.h”文件中定义后,仍需在相应
发表于 2019-10-30
使用MSP430G2 LaunchPad开发板连接步进电机的方法
在本篇文章中,我们将介绍如何使用MSP430 LaunchPad开发板连接一个步进电机。 MSP-EXP430G2是德州仪器(TI)提供的开发工具,又名LaunchPad,用于学习和练习如何使用他们提供的微控制器。该开发板属于MSP430产品线,我们可以使用它对所有MSP430系列微控制器进行编程。如果您是MSP430的新手,请查看MSP430 LaunchPad的入门教程。所需的材料●    MSP430 LaunchPad开发板●    35BYJ46或28-BYJ48步进电机●    ULN2003驱动芯片●    连接导线● 
发表于 2019-10-23
使用MSP430G2 LaunchPad开发板连接步进电机的方法
使用MSP430G2 LaunchPad开发板驱动伺服电机的方法
在本篇文章中,我们将主要介绍一些有关伺服电机的基础知识以及如何将伺服电机与MSP430G2 LaunchPad开发板进行连接。 MSP-EXP430G2是德州仪器提供的开发工具,也称为LaunchPad,用于学习和实践如何使用其微控制器。该开发板属于MSP430产品线类别,我们可以对所有MSP430系列微控制器进行编程。伺服电机和PWM在详细讨论之前,首先我们应该了解伺服电机。伺服电机包含了直流电机、位置控制系统和转动机构。伺服电机在现代世界有很多应用,因此它们有不同的形状和尺寸。我们将在本篇文章中使用的是SG90伺服电机,它是最流行且最便宜的电机之一。 SG90是一款180度伺服器。所以用这个伺服我们可以将轴从0-180度定位
发表于 2019-10-23
使用MSP430G2 LaunchPad开发板驱动伺服电机的方法
使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
本篇文章是MSP430G2 LaunchPad系列教程的一部分,我们正在学习使用德州仪器的MSP430G2 LaunchPad开发板。到目前为止,我们已经学习了开发板的基础知识,并介绍了如何读取模拟电压以及使用MSP430G2进行连接LCD等。现在我们继续了解MSP430G2单片机中的PWM模块。我们将通过改变电位器来控制LED的亮度,因此,将电位器连接到MSP430的模拟引脚,然后读取其模拟电压,因此建议在继续学习之前先了解ADC的文章。什么是PWM信号?脉宽调制(PWM)是控制电路中最常用的数字信号。该信号以预定的时间和速度设置为高电平(3.3v)和低电平(0v)。信号保持高电平的时间称为“开启时间”,信号保持低电平的时间称为
发表于 2019-10-22
使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
使用MSP430G2 LaunchPad开发板连接LCD液晶显示屏的方法
本篇文章是我们学习使用Energia IDE开发环境编程MSP430G2 LaunchPad的教程系列中的第三篇教程。在上一篇教程中,我们学习了如何控制MSP430G2 LaunchPad开发板上的数字输入和输出引脚。在本教程中,我们将学习如何将LCD与开发板连接,以便我们可以显示一些有用的信息。我们在这个项目中使用的LCD是最常用的16×2点阵式液晶显示器,也就是所谓的字符显示器。我们大多数人都会通过公共PCO或其他电子项目来接触到这一点。像这样的显示对于我们将来的教程中显示数据和其他调试信息将非常方便。由于提供了库,将该LCD与MSP430连接起来非常简单。所以让我们开始学习吧!所需材料●    德州仪器
发表于 2019-10-22
使用MSP430G2 LaunchPad开发板连接LCD液晶显示屏的方法
小广播
何立民专栏 单片机及嵌入式宝典

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

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