LED闪烁是您要开始使用电子产品的第一步。在本教程中,我们将连接LED与ATmega32,这是AVR系列微控制器。我们将以半秒的速度闪烁LED。
所需组件
硬件:
ATmega32A微控制器
电源(5v)
AVR-ISP编程器
100uF电容器
LED
220Ω电阻
软件
爱特梅尔工作室6.1
Progisp或闪光魔术
电路及工作说明
如以上用于将LED与AVR微控制器接口的电路图所示,此处无需连接外部晶振。因为默认情况下ATMEGA可在内部1MHz电阻电容振荡器上工作。仅在需要时钟精度的情况下,作为高精度计数的应用,需要附加外部晶体。首次购买控制器时,默认情况下将其融合以在内部晶体上工作。
此处连接了电阻,以限制从LED汲取的电流。请记住,控制器不能在端子上提供超过30mA的电流。
编程说明
ATmega32微控制器使LED闪烁的程序如下所示。代码中的注释说明了代码各行的目的。
#include //标头以启用对引脚的数据流控制
#define F_CPU 1000000 //告诉控制器晶振频率
#包括
int main(无效)
{
DDRD = 0xFF; //(或0b1111 1111)在AVRSTUDIO中,为了告诉控件使用端口的某个位作为输入,我们使用“零”,告诉它使用端口的某个位作为输出,我们使用“ ONE”。由于我们放置了八个“ 1”,因此PORTD的所有引脚都被使能为输出。如果我们将零设为“ 0b1111 0111”,那么现在所有引脚0、1、2、4、5、6、7都被启用为输入,而PIN 3被启用为输入。
while(1)//循环永远进行,LED永远闪烁
{
PORTD = 0xFF; //据说PORTD的所有引脚都提供5v输出或被告知拉高(LED亮)
_delay_ms(220); //延迟200ms
_delay_ms(220); ); //延迟200ms
PORTD = 0x00; //据说PORTD的所有引脚都在输出端接地或下拉
_delay_ms(220); ); //延迟200ms
_delay_ms(220); ); //延迟200ms
}
}