0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用来自PC的串行命令控制外部LED

454398 来源:网络整理 作者:网络整理 2019-12-05 15:53 次阅读

chipKIT Uno32板上的PIC32处理器提供两个硬件串行端口。板载FTDI芯片使用其中之一来创建USB-UART接口,该接口允许PC上运行的MPIDE工具通过USB端口与Uno32板进行通信。在本教程中,我们将使用相同的USB-UART接口来演示Uno32与PC之间的双向异步串行通信。 Uno32板通过PC的USB端口接收串行命令,以打开和关闭外部LED。作为回报,Uno32板通过发送LED的新状态来确认PC。

怎样使用来自PC的串行命令控制外部LED

理论

chipKIT Uno32板具有两个硬件串行端口: UART port1 和 UART端口2。引脚0和引脚1用作 UART端口1的 RX 和 TX 。 这些引脚也被板上的FT232R USB串行转换器使用。同样, UART端口2 分别使用引脚39和引脚40来实现 RX 和 TX 功能。我们将在本教程中使用 UART port1 ,因为它允许通过USB端口与PC进行串行通信。

MPIDE具有内置的串行监视工具,可让您进行以下操作:观察Uno32发送其串行端口的任何数据。它还使您可以通过同一串行接口将字符从PC发送回Uno32板。您可以通过单击工具栏中的串行监视器按钮来打开串行监视器窗口。在Windows版本的MPIDE中,串行监视器窗口如下所示。

MPIDE串行监视器窗口

其中有空白文本在顶部的方框中输入要发送到chipKIT Uno32板的文本。在下面的空白处,将显示Uno32板发送的串行数据。在右下角,您可以选择串行通信的波特率(速度)。波特率的默认设置为9600波特,但是您可以从下拉菜单中选择其他波特率。请注意,对于串行通信,必须将chipKIT板配置为相同的波特率。返回到MPIDE的编程模式之前,必须释放串行端口。您可以通过关闭串行监视器窗口来做到这一点。

电路设置

本教程的实验电路设置非常简单。您所需要的只是一个LED和一个220?串联电阻。将通过从PC接收到的串行命令来控制LED。下图显示了与Uno32板的LED连接。 LED连接到引脚2。请注意,在串行通信期间,数字引脚0(RX)和1(TX)被占用,不能用于其他I/O。该板已连接到USB端口并从USB接收电源

通过PC上的串行命令控制的外部LED

书写草图

在设置功能中,您需要告诉Uno32打开串行端口。这是通过 Serial.begin()命令完成的。括号内的数字设置串行通讯的波特率。与计算机通讯的典型波特率是9600,但也支持其他速度。接下来,您需要将Pin 2定义为输出,可以使用 pinMode()函数完成。

为了将数据从Uno32发送到PC,MPIDE主要提供了两个命令: Serial.print()和 Serial.println()。两者都通过串行端口将括号内的内容发送到PC。在PC端,接收到的数据显示在串行监视器窗口中。但是,使用 print 和 println 的区别在于它们从串行端口打印数据的方式。当您使用 Serial.print()时,光标将停留在刚打印的内容的末尾。因此,如果紧随其后的是另一个打印命令,则新数据将在同一行中先前接收到的数据的结尾处显示在串行监视器窗口中。另一方面, Serial.println()会在末尾带有换行符来打印数据,在打印完数据后,光标会向下移动到下一行。这两个命令可以采用多种形式,在Arduino串行库页面中对此进行了很好的描述。

这里是完整的程序,用于通过PC通过串行线路发送的命令字节来控制外部LED。如果Uno32从PC接收到“ 1”,则它将点亮LED。如果接收到“ 0”,则LED熄灭。响应该命令,Uno32将LED的新状态打印回PC。

/*

Tutorial 2: Serial interface between PC and chipKIT

Description: chipKIT UNO32 receives commands from a PC through serial port

and control an external LED connected to pin 2

Board: chipKIT UNO32

*/

const int LED_PIN = 2; // LED is connected to digital I/O pin 2

int SERIAL_DATA; // Variable to store incoming serial byte

void setup() {

Serial.begin(9600); // Sets the baud rate for serial transmission

pinMode(LED_PIN, OUTPUT);

// Send these messages to PC only once

Serial.println(“Serial interface between PC and chipKIT”);

Serial.println(“1: LED ON, 0: LED OFF”);

digitalWrite(LED_PIN, LOW); // LED is off initially

}

void loop() {

if(Serial.available()》0){ // Check if serial data is available.

SERIAL_DATA = Serial.read(); // If yes, read the incoming byte

if(SERIAL_DATA == ‘1’) { // Check if the received byte is ‘1’

digitalWrite(LED_PIN, HIGH); // If so, turn the LED ON

Serial.println(“LED is ON”); // and acknowledge.

}

if(SERIAL_DATA == ‘0’) { // If the received byte is ‘0’,

digitalWrite(LED_PIN, LOW); // turn the LED OFF and

Serial.println(“LED is OFF”); // acknowledge.

}

}

}

下载草图文件

Serial.begin(9600)打开序列号Uno32的端口,并设置9600的波特率。您可以看到在设置函数中有两个 Serial.println()命令。它们在串行线上打印两条文本消息,这些消息显示在串行监视器上。由于设置功能仅执行一次,因此这些消息在开始时也仅打印一次。在循环功能内部使用 Serial.available()命令,该命令检查PC是否已将任何字符发送到串行端口。它返回可从串行端口读取的字符数。一旦有可用数据,就可以使用 Serial.read()命令进行读取。然后Uno32将接收到的字节与“ 1”和“ 0”进行比较,以对LED采取适当的操作。

输出

验证并上传以上内容素描到Uno32板上。打开串行监视器窗口,并确保将其配置为使用9600的波特率。重置Uno32板,并等待其退出引导加载程序模式,以便它可以执行用户程序。您将在串行监视器上读到两条文本行(“ PC和chipKIT之间的串行接口”和“ 1:LED亮,0:LED灭”) Uno32。如果您在顶部的发送框中输入“ 1”,然后点击发送按钮,它将通过串行线路发送。 Uno32接收到命令字节后,将点亮LED。如果发送的是“ 0”,则LED将熄灭。 Uno32板通过在串行监视器上打印回新的LED状态来确认收到的命令。如果收到的字符不是‘0’和‘1’,则Uno32将忽略它。

通过串行命令控制LED

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23256

    浏览量

    660615
  • 串行
    +关注

    关注

    0

    文章

    237

    浏览量

    33837
收藏 人收藏

    评论

    相关推荐

    UART通信协议介绍和数据传输工作流程

    UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可实现全双工传输和接收。UART通常用来实现与PC之间数据通信,命令控制信息
    的头像 发表于 10-24 14:20 604次阅读
    UART通信协议介绍和数据传输工作流程

    如何实现51单片机与PC机的串行通信

    51单片机与PC机的串行通信是一种常见的通信方式,它允许单片机通过串行接口与PC机进行数据交换。这种通信方式在嵌入式系统、工业控制、物联网等
    的头像 发表于 10-21 11:35 790次阅读

    外部端口和内部端口是什么意思

    在计算机网络和网络安全领域,"外部端口"和"内部端口"这两个术语通常用来描述网络通信中的端口配置和访问控制外部端口(External Port)
    的头像 发表于 10-17 10:50 702次阅读

    PC9248双向降压-升压控制器中文手册

    和升压模式之间无缝转换。 PC9248 集成了高侧和低侧栅极驱动器,并为两个驱动轨提供 UVLO 保护。它还支持非同步降压操作。它提供可编程输入电流限制和精确的LED 电流调节。 LED 开路和短路检测功能可保护设备免受
    发表于 08-23 14:28 1次下载

    PC8655同步四开关升降压LED专用控制器_恒流恒压输出_支持PWM调光功能

    都很高,高达96%±3%LED电流精度 高侧PMOS调光FET栅极驱动器 开关频率范围为200 kHz至700 kHz具有自动扩频功能 模拟和PWM调光(嵌入式或外部)LED和输入电流
    发表于 07-31 15:09

    通过串行和AT命令使用wps8266,是否可以使用WPS PBC功能和AT命令

    我正在通过串行和 AT 命令使用 wps8266,是否可以使用 WPS PBC 功能和 AT 命令
    发表于 07-16 07:35

    SM5266PC高集成度LED显示驱动控制芯片中文手册

    电子发烧友网站提供《SM5266PC高集成度LED显示驱动控制芯片中文手册.pdf》资料免费下载
    发表于 07-13 11:05 0次下载

    YXC可编程晶振,频点2.4576MHz,CMOS输出,应用于LED控制

    一些LED控制器具有通信接口,可以通过外部设备或者网络进行远程控制。而晶振用于同步通信接口的数据传输,确保LED
    的头像 发表于 06-25 16:00 362次阅读
    YXC可编程晶振,频点2.4576MHz,CMOS输出,应用于<b class='flag-5'>LED</b><b class='flag-5'>控制</b>器

    TM1680存储器交换LED显示控制的驱动芯片规格书

    的脉宽调制控制输出, 可以调整 LED 循环显示的亮度。利用串行接口(I2C通信接口)串行输入的方式,可以便捷地进入命令 模式(COMMAN
    发表于 06-14 16:59 4次下载

    TM1681存储器交换LED显示控制的驱动芯片规格书

    的脉宽调制控制输出, 可以调整 LED 循环显示的亮度。利用串行接口串行输入的方式,可以便捷地进入命令模式 (COMMAND、 MDOE )
    发表于 06-14 16:58 0次下载

    使用USBUART组件与主机PC通信,如果在串行端口打开的情况下终止固件,主机端为什么会报错?

    我正在使用 USBUART 组件与主机 PC 通信,我一直在寻找某种机制来关闭 MCU 端的串行端口,或者至少通知主机我将关闭端口。 我遇到过这样一个问题:如果在串行端口打开的情况下终止固件(如重置
    发表于 06-03 08:41

    stm8外部中断用来脉冲计数,外部中断开始计数,LED灯就不正常了的原因?

    外部中断用来脉冲计数。不计数时,定时器正常,每秒翻转一次LED灯。外部中断开始计数,LED灯就不正常了,有时两三秒,有时五六秒才翻转。一开始
    发表于 04-22 07:29

    串行PCMCIA控制器的双插槽PC卡电源接口开关TPS2206数据表

    电子发烧友网站提供《串行PCMCIA控制器的双插槽PC卡电源接口开关TPS2206数据表.pdf》资料免费下载
    发表于 03-15 14:55 0次下载
    <b class='flag-5'>串行</b>PCMCIA<b class='flag-5'>控制</b>器的双插槽<b class='flag-5'>PC</b>卡电源接口开关TPS2206数据表

    用于串行PCMCIA控制器的双插槽PC卡电源接口交换机数据表 (Rev. D)

    电子发烧友网站提供《用于串行PCMCIA控制器的双插槽PC卡电源接口交换机数据表 (Rev. D).pdf》资料免费下载
    发表于 03-15 14:46 0次下载
    用于<b class='flag-5'>串行</b>PCMCIA<b class='flag-5'>控制</b>器的双插槽<b class='flag-5'>PC</b>卡电源接口交换机数据表 (Rev. D)

    串行PCMCIA控制器的PC卡电源接口开关TPS2204A和TPS2206A数据表

    电子发烧友网站提供《串行PCMCIA控制器的PC卡电源接口开关TPS2204A和TPS2206A数据表.pdf》资料免费下载
    发表于 03-15 14:44 0次下载
    <b class='flag-5'>串行</b>PCMCIA<b class='flag-5'>控制</b>器的<b class='flag-5'>PC</b>卡电源接口开关TPS2204A和TPS2206A数据表