Arduino Uno与ATmega328p芯片独立使用指南

如果已经熟悉Arduino,那么很可能已经使用过Arduino Uno板和它的ATmega328p微控制器。本文将指导如何将这个微控制器从Arduino Uno开发板上移除,并独立使用它来运行程序。

ArduinoUno编程基础

首先,让回顾一下如何为Arduino Uno编写程序。以下是一个简单的程序,用于在数字引脚5上闪烁一个LED灯:

void setup() { int LED = 5; pinMode(LED, OUTPUT); } void loop() { delay(500); digitalWrite(LED, HIGH); delay(500); digitalWrite(LED, LOW); }

这段代码首先定义了一个名为LED的变量,并将其设置为数字引脚5。然后,它将这个引脚设置为输出模式。在loop函数中,程序交替地将LED灯打开和关闭,每个状态持续500毫秒。

从Arduino Uno中移除ATmega328p芯片

当完成编程后,可能会考虑将ATmega328p芯片从Arduino Uno开发板上移除,因为开发板占用的空间较大,而芯片本身要小得多。这样,最终产品可以更加紧凑。

移除芯片后,会看到芯片比开发板小得多,这意味着最终产品可以更小。但是,如何让芯片运行程序呢?

构建电路为ATmega328p供电

将构建一个简单的电路来为ATmega328p芯片供电。电路包括一根接地线(GND)连接到芯片的第8引脚,以及一根5V线(来自面包板轨道)连接到第7引脚。

然后,将LED的阳极(正极)引脚连接到ATmega328p的PD5引脚,这与ArduinoUno上的数字引脚5相同。理论上,这就是需要的所有连接。但是,可能会发现LED并没有亮起。

ATmega328p在Arduino Uno上的设置

这与ATmega328p在Arduino Uno上的设置方式有关。制造商在为Uno设置芯片时,必须设置ATmega328p内部的一些开关,称为熔丝位,以便它能够与Arduino Uno硬件正确配合工作。

这些设置是约定俗成的(虽然是任意选择的,但Arduino用户期望它们是这样的)。除非有一个AVR(Atmel)ISP(In System Programmer/Programming),否则无法设置这些熔丝位。

ATmega328p可以以不同的速度运行

ATmega328p可以以不同的时钟速度运行。它可以以1MHz(每秒一百万次循环)、8MHz和16MHz运行。然而,它只能在附加外部晶体的情况下以16MHz运行。

ArduinoUno开发板确实有一个16MHz的晶体。

Arduino Uno板上的16MHz晶体

在下面的图片中,已经标出了晶体的位置:

由于制造商已经将这些芯片设置为与外部晶体(振荡器)一起运行,如果没有晶体,芯片将无法正常工作。

ATmega328p数据手册

如果查看ATmega328p的数据手册,并翻到第5.1节,会看到一个清晰的引脚图。

晶体引脚:可以看到第7引脚是VCC,第8引脚是GND,正如之前提到的。但现在,需要找到应该安装晶体的位置。如果仔细看,会看到第9引脚标有xtal1,第10引脚标有xtal2。xtal是晶体的缩写。

两个22pF电容器

然而,仅凭这个图,不会知道还需要在这些引脚上添加两个22pF的陶瓷(非极性)电容器。

将一个电容器的一个引脚连接到第9引脚,另一个引脚连接到地。然后,将另一个电容器的一个引脚连接到第10引脚,另一个引脚连接到地。然后,将16MHz晶体连接,使其一个引脚在第9引脚,另一个引脚在第10引脚。

这是在面包板上的快速快照(在本文底部,将为提供原理图,以便更容易地看到连接方式)。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485