13

从 C/C++ 程序制作带有 LED 闪光灯的小电路最简单的步骤是什么?

我希望所需的依赖项和软件包数量最少。

  • 我会将某些东西连接到哪个端口?
  • 我会使用哪个编译器?
  • 如何将数据发送到该端口?
  • 我需要有一个微处理器吗?如果不是,我不想在这个简单的项目中使用一个。

编辑:对任何操作系统特定的解决方案感兴趣。

4

7 回答 7

17

这是使用并行端口进行操作的教程。

虽然我会推荐一个可以非常便宜地购买并且只涉及以下代码的Arduino :

/* Blinking LED
 * ------------
 *
 * turns on and off a light emitting diode(LED) connected to a digital  
 * pin, in intervals of 2 seconds. Ideally we use pin 13 on the Arduino 
 * board because it has a resistor attached to it, needing only an LED

 * 
 * Created 1 June 2005
 * copyleft 2005 DojoDave <http://www.0j0.org>
 * http://arduino.berlios.de
 *
 * based on an orginal by H. Barragan for the Wiring i/o board
 */

int ledPin = 13;                 // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}

替代文字

http://www.arduino.cc/en/Tutorial/BlinkingLED

于 2008-10-16T18:11:54.890 回答
6

哪个港口? 并行端口是我最喜欢的选择,因为它输出 +5V(TTL 逻辑电平)并且编程非常简单。大多数并行端口都有足够的功率来驱动 LED。重要的是要记住,计算机端口通常设计为仅输出信号电压,而不是产生足够的电流来实际为大多数设备供电。

哪个编译器? 没关系。不过,这种硬件黑客在 Linux 下更有趣、更容易,所以 GCC 是一个不错的选择。

如何发送数据? 取决于端口和操作系统。USB 对于一个简单的项目来说非常复杂,所以忘记它吧。串行和并行端口可以通过各种不同的接口进行控制。我的偏好是使用ioctl()Linux 下的系统调用来直接控制并口引脚。以下是有关如何执行此操作的信息:http ://www.linuxfocus.org/common/src/article205/ppdev.html

我需要微处理器吗? 不,您不需要外部设备中的微处理器(显然您的计算机有微处理器:-P)。如果您使用并行或串行端口,您可以只使用 LED 和一个或两个电阻器以及直接连接 LED 的必要部件。

(另外:可在线免费获得的Linux 设备驱动程序书,其中包含有关将简单电子设备连接到并行端口并为它们编写内核驱动程序的信息。)

编辑:这个线程似乎对OP的含义有很大的困惑,“我需要微处理器吗?” 强调一下,单独的并口可以驱动基于计算机中的软件的LED 。设备中不需要微处理器。但是,如果您希望设备能够在不连接到计算机的情况下自行控制,需要微处理器或其他一些数字逻辑。

于 2008-10-16T18:16:59.950 回答
2

如果您想在没有微处理器的情况下使 LED 闪烁(这意味着没有 C/C++),使用 555 定时器 IC 的简单电路就可以了。这些是初学者爱好者电子书籍或工具包中的常见项目,因为它们非常简单,您可以在任何 Radio Shack 类型的地方获得零件:

如果你想用软件来做,正如Vlion 提到的,一切都取决于所使用的硬件和连接 LED 的电路的设计。

如果您想尝试在您的 PC 上弄乱一些东西,这里有一篇关于如何闪烁连接到 PC 并行端口上的引脚的 LED 的文章:

于 2008-10-16T18:25:00.420 回答
1

您可以尝试在串行端口传输(引脚 3)上放置一个 LED 和一个 300 欧姆电阻器到接地(引脚 5)。然后发送数据将其打开。

串口可能只能提供 10mA 的电流。

祝你好运。

于 2008-10-16T18:10:28.887 回答
1

对于快速和肮脏的操作,您有 2 个简单的选择:串行或并行端口。串口更简单,但受 LED 数量限制。

要连接 LED,您需要一个正确性别的外壳连接器 (DB25/DB9)、LED 和一个电阻器。您必须自己查找电阻器的值。

串行端口具有受程序员控制的控制流信号。将正确的位输出到 MCR 寄存器是一件简单的事情(在打开串行端口之后)。

并行端口有点难,因为要进行更多的握手,但通常与写入寄存器的原理相同。

您可能必须与您的操作系统抗争才能获得对端口的控制权。

使用 Tx 线有点复杂,因为输出的信号是写入发送寄存器的数据的串行比特流。我会坚持 CTS 和 DSR 信号。

为了进行快速而肮脏的调试,我刚刚写入了寄存器并观察了调制解调器的指示灯。

于 2008-10-16T18:19:19.680 回答
0

它还取决于操作系统。在 Linux 上,您可以将 LED 直接连接到并行端口(当然,使用适当的限流电阻)并简单地使用 C 函数“outb()”来打开和关闭它。

在 Windows 上,它要复杂得多,因为操作系统不允许用户应用程序直接与端口通信。

于 2008-10-16T18:09:43.273 回答
0

最简单的端口是串行或并行。永远记得在 LED 上串联一个电阻器,否则会烧坏它。

于 2008-10-16T18:11:34.517 回答