在前两个教程中,我们讨论了如何使用MPLABX和XC8编译器入门PIC,我们还制作了第一个使用PIC的LED闪烁程序,并通过仿真对其进行了验证。现在是时候开始使用硬件了。在本教程中,我们将在Perf板上构建一个小电路,以使用PIC来使LED闪烁。我们将程序转储到PIC微控制器并验证LED闪烁。要对PIC MCU进行编程,我们将使用MPLAB IPE。
所需材料:
如上一教程中所述,我们将需要以下材料:
- PicKit 3
- PIC16F877A集成电路
- 40-引脚IC支架
- 穿孔板
- 20 MHz晶振OSC
- 男性和男性Male子针
- 33pf电容器-2号,100uf和10uf电容器。
- 680欧姆,10K和560欧姆电阻
- 任何颜色的LED
- 1焊接套件
- IC 7805
- 12V适配器
当我们“烧录”一个单片机时会发生什么!
通常的做法是将代码上传到MCU中并使之在MCU内部运行。
为了了解这一点,让我们看一下我们的程序
如我们所见,此代码是用C语言编写的,对我们的MCU没有意义。这是我们编译器的一部分。编译器是将代码转换成机器可读形式的编译器。这种机器可读的形式称为HEX代码,我们创建的每个项目都会有一个HEX代码,该代码将位于以下目录中
**您的位置** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
如果您有兴趣知道此十六进制代码的样子,只需使用记事本将其打开。对于我们的Blink程序,十六进制代码如下所示:
:060000000A128A11FC2F18:100FAA00831603138606018312031386018312031324:100FBA0086150D30F200AF30F100C130F000F00BB00:100FCA00E42FF10BE42FF20BE42F0000831203133A:100FDA0086110D30F200AF30F100C130F000F00A42F10F43A1F1F1F1F1F1F1F3F1F1F3F1F3F1F3F3F3F1F3F1F3F1F3F1F3F1F3F1F1F3F6F1F3F2F1F3F1F3F1F3F2F1F3F1F3F2F1F3F1F3F1F3F1F3F2F1F3F1F3F1F3F2F1F3F3F1F3D1
有很多方法可以阅读,也可以理解和逆转为汇编语言,但这完全超出了本教程的范围。因此,简而言之:十六进制是我们编码的最终软件结果,这就是MPLAB IPE发送给烧录MCU的结果。
闪存:
在十六进制代码存储到MCU在一个叫闪存的地方。闪存是我们的程序将存储在MCU内并从那里执行的地方。在MPLABX中编译该程序后,我们将在Output控制台上获得有关内存类型的以下信息。
由于我们刚刚编译了一个小的LED闪烁程序,因此内存摘要显示我们仅消耗了0.5%的可用程序空间和1.4%的数据空间。
PIC16F877微控制器的存储器基本上分为3种类型:
程序存储器:刻录后,该存储器包含程序(已编写)。提醒一下,程序计数器一个接一个地执行存储在程序存储器中的命令。由于我们编写了一个非常小的程序,因此仅消耗了总空间的0.5%。这是一个非易失性存储器,意味着在断电后不会丢失存储的数据。
数据存储器: 这是RAM存储器类型,其中包含特殊寄存器,如SFR(特殊功能寄存器),其中包括看门狗定时器,欠压复位等;以及GPR(通用寄存器),其中包括TRIS和PORT等。所存储的变量关闭MCU后,程序中的数据存储器中的数据被删除。程序中声明的任何变量都将位于数据存储器中。这也是易失性存储器。
数据EEPROM(电可擦可编程只读存储器):一种内存,用于存储由于刻录程序而导致的变量。例如,如果我们分配一个变量“ a”以在其中保存值5并将其存储在EEPROM中,即使关闭电源,该数据也不会丢失。这是非易失性内存。
程序存储器和EEPROM是非易失性存储器,被称为 闪存或EEPROM。
ICSP(在线串行编程):
我们将使用MCU中可用的ICSP选项对PIC16F877A进行编程。
现在,什么是ICSP?
ICSP是一种简单的方法,即使将它放在我们的项目板上也可以帮助我们对MCU进行编程。无需单独的编程器板即可对MCU进行编程,我们所需要的只是从PicKit3编程器到板子的6条连接,如下所示:
1个 |
VPP(或MCLRn) |
进入编程模式。 |
2 |
Vcc |
电源 引脚11或32 |
3 |
地线 |
接地PIN 12或31 |
4 |
PGD-数据 |
RB7。PIN40 |
5 |
PGC-时钟 |
RB6。PIN 39 |
6 |
PGM-LVP使能 |
RB3 / RB4。不是强制性的 |
ICSP适用于所有PIC封装;我们所需要做的就是将这五个引脚(第六引脚PGM是可选的)从MCU拔出到Pickit3,如下图所示。
电路和硬件:
现在,我们已经准备好十六进制代码,并且我们还知道如何使用ICSP将PicKit 3连接到PIC MCU。因此,让我们继续以下电路图的焊接电路:
在上面的电路中,我使用了7805来调节PIC MCU的输出5V。该稳压器将由12V沃尔玛适配器供电。RED Led用于指示PIC是否已上电。连接器J1用于ICSP编程。引脚的连接如上表所述。
默认情况下,第一引脚MCLR必须在10k的帮助下保持高电平。这样可以防止MCU复位。为了复位MCU,必须将MCLR引脚接地,这可以借助开关SW1来完成。
The LED is connected to the pin RB3 through a resistor of value 560 ohms (See LED resistor calculator). If everything is proper once our program is uploaded this LED should blink based on the program. Whole circuit is built on Perfboard by soldering all the components on it as you can see in the image at the top.
Burning the Code using MPLAB IPE:
To burn the code, follow below steps:
- Launch the MPLAB IPE.
- Connect one end of your PicKit 3 to your PC and other end to your ICSP pins on perf board.
- Connect to your PIC device by clicking on the connect button.
- Browse for the Blink HEX file and click on Program.
If, everything goes as planned you should get the success message on the screen. Check the Code and Video below for Full demonstration and use the comment section if you have any doubt.
Thank you!!!
让我们在下一个教程中见面,我们将使用更多的LED和一个开关。