【发布时间】:2010-09-17 14:23:03
【问题描述】:
用 C/C++ 程序制作带有 LED 闪光灯的小电路最简单的步骤是什么?
我希望所需的依赖项和软件包数量最少。
- 我会将某些东西连接到哪个端口?
- 我会使用哪个编译器?
- 如何将数据发送到该端口?
- 我需要一个微处理器吗?如果不是,我不想在这个简单的项目中使用它。
编辑:对任何特定于操作系统的解决方案感兴趣。
【问题讨论】:
用 C/C++ 程序制作带有 LED 闪光灯的小电路最简单的步骤是什么?
我希望所需的依赖项和软件包数量最少。
编辑:对任何特定于操作系统的解决方案感兴趣。
【问题讨论】:
这里有一个使用parallel port 的教程。
虽然我会推荐一个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
}
【讨论】:
哪个端口? 并行端口是我最喜欢的选择,因为它输出 +5V(TTL 逻辑电平)并且编程非常简单。大多数并行端口都有足够的功率来驱动 LED。请务必记住,计算机端口通常仅设计用于输出信号电压,而不会产生足够的电流来实际为大多数设备供电。
哪个编译器?没关系。不过,这种硬件破解在 Linux 下更有趣、更容易,所以 GCC 是一个不错的选择。
如何发送数据?取决于端口和操作系统。 USB 对于一个简单的项目来说非常复杂,所以忘记它吧。串行和并行端口可以通过各种不同的接口进行控制。我的偏好是在 Linux 下使用ioctl() 系统调用来直接控制并口引脚。以下是有关如何执行此操作的信息:http://www.linuxfocus.org/common/src/article205/ppdev.html
我需要微处理器吗? 不,您不需要外部设备中的微处理器(显然您的计算机有微处理器:-P)。如果您使用并行或串行端口,您可以只使用 LED 和一个或两个电阻以及必要的部件来直接连接 LED。
(另外:Linux 设备驱动程序手册,可在线免费获得,其中包含有关将简单电子设备连接到并行端口并为它们编写内核驱动程序的信息。)
编辑:在这个线程中似乎对 OP 的意思有很大的困惑,“我需要一个微处理器吗?”强调一下,单独的并行端口可以驱动一个基于软件计算机的LED。设备中不需要微处理器。但是,如果您希望设备能够在不连接到计算机的情况下自行控制,则需要微处理器或其他一些数字逻辑。
【讨论】:
如果您想在没有微处理器的情况下使 LED 闪烁(这意味着没有 C/C++),使用 555 定时器 IC 的简单电路就可以解决问题。这些是初学者爱好者电子书籍或工具包中的常见项目,因为它们非常简单,您可以在任何 Radio Shack 类型的地方获得零件:
如果你想用软件来做,就像Vlion mentions,一切都取决于所使用的硬件和连接 LED 的电路设计。
如果您想尝试在您的 PC 上弄乱一些东西,这里有一篇关于如何闪烁连接到 PC 并行端口上的引脚的 LED 的文章:
【讨论】:
您可以尝试将一个 LED 和一个 300 欧姆电阻器放在串行端口传输(引脚 3)到接地(引脚 5)。然后发送数据开启。
串口大概只能输出10mA。
祝你好运。
【讨论】:
对于快速而肮脏的操作,您有 2 个简单的选择:串行或并行端口。 串口比较简单,但是LED数量有限。
要连接 LED,您需要一个正确性别的外壳连接器 (DB25/DB9)、LED 和一个电阻器。您必须自己查找电阻器的值。
串行端口具有受程序员控制的控制流信号。将正确的位输出到 MCR 寄存器是一件简单的事情(在打开串行端口之后)。
并口要难一些,因为握手要多一些,但通常与写入寄存器的原理相同。
您可能必须与您的操作系统抗争才能获得对端口的控制权。
使用 Tx 线有点复杂,因为输出的信号是写入发送寄存器的数据的串行比特流。我会坚持 CTS 和 DSR 信号。
为了快速调试,我刚刚写入了寄存器并观察了调制解调器的指示灯。
【讨论】:
这也取决于操作系统。在 Linux 上,您可以将 LED 直接连接到并行端口(当然,使用适当的限流电阻)并简单地使用 C 函数“outb()”来打开和关闭它。
在 Windows 上,这要复杂得多,因为操作系统不允许用户应用程序直接与端口通信。
【讨论】:
最简单的端口是串行或并行。永远记得在 LED 上串联一个电阻,否则会烧坏它。
【讨论】: