这是我们PIC教程系列的第二篇教程。在之前的教程《 PIC单片机入门:PIC和MPLABX入门》中,我们了解了有关PIC单片机的基本知识,还安装了必需的软件并购买了新的PicKit 3编程器,我们将很快使用它。现在,我们准备开始使用PIC16F877A的第一个LED闪烁程序。我们还将在本教程中了解配置寄存器。
本教程希望您已在计算机上安装了必需的软件,并且了解有关PIC MCU的一些基本知识。如果没有,请跳回上一个教程并从那里开始。
准备编程:
既然我们决定使用PIC16F877A,那么通过XC8编译器就可以开始使用它们的数据手册。我建议每个人都下载《 PIC16F877A数据表》和《 XC8编译器》手册,因为在学习本教程时,我们将经常参考它们。在实际开始使用它进行编程之前,阅读所有MCU的完整数据表总是一个好习惯。
现在,在我们打开MPLAB-X并开始编程之前,您需要了解的基本知识很少。无论如何,由于这是我们的第一个程序,所以我不想对有很多理论的人进行抨击,但是我们在编程时将在这里和那里停下来,我将向您解释这样的事情。如果您没有足够的时间阅读所有这些内容,那么请看一眼并跳至页面底部的视频。
使用MPLAB-X创建一个新项目:
第1步:启动我们在上一类中安装的MPLAB-X IDE,一旦加载,它应该看起来像这样。
第2步:单击文件->新建项目,或使用热键Ctrl + Shift + N。您将获得以下POP-UP,必须从中选择 Standalone Project ,然后单击Next。
步骤3: 现在我们必须为项目选择设备。因此,在“ 选择器件” 下拉部分中键入PIC16F877A 。完成后应该是这样,然后单击“下一步”。
步骤4:下一页将允许我们为项目选择工具。这将是我们项目的PicKit 3。选择PicKit 3,然后单击下一步
步骤5:下一页将要求选择编译器,选择XC8编译器,然后单击下一步。
步骤6:在此页面中,我们必须命名我们的项目并选择必须保存该项目的位置。我已将该项目命名为Blink,并将其保存在桌面上。您可以用自己喜欢的方式命名和保存它。我们的项目将保存为扩展名为.X的文件夹,该文件夹可以由MAPLB-X直接启动。完成后,单击完成。
步骤7:就这样!!!我们的项目已经创建。最左侧的窗口将显示项目名称(此处闪烁),单击它,以便我们可以查看其中的所有目录。
为了开始编程,我们需要在源文件目录中添加一个C Main文件。为此,只需右键单击源文件,然后选择“新建”->“ C主文件”,如下图所示。
步骤8:将出现以下对话框,其中必须提及C文件的名称。我再次用眨眼命名,但选择权留给您。在“文件名”列中将其命名,然后单击“完成”。
第9步: 创建C主文件后,IDE将为我们打开它并带有一些默认代码,如下所示。
步骤10:就这样,现在我们可以开始在C-main文件中编写代码了。默认代码不会在我们的教程中使用。因此,让我们将其完全删除。
认识配置寄存器:
在开始对任何微控制器进行编程之前,我们必须了解其配置寄存器。
那么这些配置寄存器是什么,为什么以及为什么要设置它们呢?
PIC器件具有多个位置,其中包含配置位或熔丝。这些位指定了基本的器件操作,例如 振荡器模式,看门狗定时器,编程模式和代码保护。 必须正确设置这些位才能运行代码,否则我们将无法运行device 。 因此,即使在我们开始使用Blink程序之前,了解这些配置寄存器也非常重要。
为了使用这些配置寄存器,我们必须通读数据表并了解可用的不同类型的配置位及其功能。可以根据我们的编程要求使用配置实用程序来设置或重置这些位。
语用具有以下形式。
#pragma配置设置=状态值#pragma配置寄存器=值
其中 setting 是配置设置描述符(例如WDT),state是所需状态的文本描述,例如OFF。考虑以下示例。
#pragma config WDT = ON //打开看门狗定时器#pragma config WDTPS = 0x1A //指定定时器的后分频值
放松!!…..放松!!….放松!!…...
我知道它已经变得太多了,对于新手来说,设置这些配置位似乎有些困难!但是,绝对不是我们的MPLAB-X。
设置MPLAB-X中的配置位:
Microchip通过使用不同类型的配置位的图形表示,简化了此累赘过程。因此,现在为了设置它们,我们只需要遵循以下步骤。
步骤1: 单击窗口-> PIC存储器视图->配置位。如下所示。
步骤2:这将打开IDE底部的Configuration Bits窗口,如下所示。在这里,我们可以根据需要设置每个配置位。在我们逐步执行这些步骤时,我将解释每个细节及其目的。
步骤3:第一位是振荡器选择位。
PIC16F87XA可以在四种不同的振荡器模式下工作。可以通过编程两个配置位(FOSC1和FOSC0)来选择这四种模式:
- LP低功耗晶体
- XT晶体/谐振器
- HS高速晶体/谐振器
- RC电阻/电容
对于我们的项目,我们使用的是20Mhz Osc,因此我们必须从下拉框中选择HS。
步骤4: 下一位将是我们的看门狗定时器使能位。
看门狗定时器是一个自由运行的片上RC振荡器,不需要任何外部组件。该RC振荡器与OSC1 / CLKI引脚的RC振荡器是分开的。这意味着即使器件的OSC1 / CLKI和OSC2 / CLKO引脚上的时钟已停止,WDT仍将运行。在正常操作期间,WDT超时会产生器件复位(看门狗定时器复位)。看门狗定时器超时后,状态寄存器中的TO位将被清除。如果没有在软件代码中清除定时器,则每次WDT定时器溢出时,整个MCU都会复位。通过清除配置位可以永久禁用WDT。
我们没有在程序中使用WDT,因此让我们通过从下拉框中选择OFF来清除它。
步骤5: 下一位将是上电定时器位。
上电延时定时器仅在上电时从POR提供固定的72 ms标称超时。上电延时定时器在内部RC振荡器上运行。只要PWRT有效,芯片就保持复位状态。PWRT的时间延迟允许VDD上升到可接受的水平。提供一个配置位来启用或禁用PWRT。
我们不需要程序中的此类延迟,因此让我们也将其关闭。
步骤6:下一位将是低压编程。
配置字的LVP位使能低压ICSP编程。该模式允许在工作电压范围内使用VDD源通过ICSP对微控制器进行编程。这仅意味着VPP不必带到VIHH,而可以留在正常工作电压下。在这种模式下,RB3 / PGM引脚专用于编程功能,不再是通用I / O引脚。在编程期间,VDD被施加到MCLR引脚。要进入编程模式,必须将LVP位置1,并将VDD施加到RB3 / PGM。
让我们关闭LVP,以便我们可以将RB3用作I / O引脚。为此,只需使用下拉框将其关闭即可。
步骤7:接下来的位将是EEPROM和程序存储器保护位。如果将此位打开,则一旦对MCU进行编程,就不会有人从硬件中检索我们的程序。但是现在让我们将所有三个都关闭。
按照说明完成设置后,对话框应如下所示。
步骤8:现在单击Generate Source Code to Output,现在将生成我们的代码,只需将其与头文件一起复制并粘贴到我们的Blink.c C文件中,如下所示。
就是这样,我们的配置工作已经完成。我们可以为所有项目使用此配置。但是,如果您有兴趣,可以稍后与他们讨论。
编程PIC使LED闪烁:
在此程序中,我们将使用PIC单片机使连接到I / O引脚的LED闪烁。让我们看一下PIC16F877A上可用的不同I / O引脚。
如上所示,PIC16F877具有5个基本输入/输出端口。通常用PORT A(RA),PORT B(RB),PORT C(RC),PORT D(RD)和PORT E(RE)表示。这些端口用于输入/输出接口。在此控制器中,“ PORT A”只有6位宽(RA-0至RA-5),“ PORT B”,“ PORT C”,“ PORT D”只有8位宽(RB-0至RB-7) ,RC-0至RC-7,RD-0至RD-7),“ PORT E”只有3位宽(RE-0至RE-2)。
所有这些端口都是双向的。端口的方向通过使用TRIS(X)寄存器(用于设置PORT-A的方向的TRIS A,用于设置PORT-B的方向的TRIS B等)控制。将TRIS(X)位置1会将相应的PORT(X)位置1作为输入。将TRIS(X)位清零时,会将相应的PORT(X)位设置为输出。
对于我们的项目,我们必须将PORT B的RB3引脚作为输出,以便我们的LED可以连接到它。这是PIC微控制器LED闪烁的代码:
#包括
首先,我们使用 #define _XTAL_FREQ 20000000 指定了外部晶振频率。然后在 void main() 函数中,我们指示MCU将RB3用作输出 (TRISB = 0X00;) 引脚。然后,最后一个无限的 while 循环被使用,以使LED闪烁一直持续下去。为了使LED闪烁,我们必须简单地以明显的延迟打开和关闭它。
编码完成后,使用运行->构建主项目命令构建项目。这应该编译您的程序。如果一切正常(应该如此),则在屏幕底部的输出控制台将显示BUILD SUCCESSFUL消息,如下图所示。
电路图和Proteus仿真:
一旦我们构建了一个项目并且 构建成功, 一个HEX文件将在我们的IDE后台生成。可以在以下目录中找到此十六进制文件
如果您保存在其他位置,它可能会因您而异。
现在,让我们快速打开之前安装的Proteus并为该项目创建原理图。我们不会在此项目的范围之外解释如何执行此操作。但不必担心,下面的视频对此进行了解释。按照说明进行操作并构建原理图后,它应该看起来像这样
要模拟输出,请在加载十六进制文件后单击屏幕左下角的播放按钮。它应该闪烁连接到MCU的RB3的LED。如果您有任何问题,请观看视频,如果仍无法解决,请在评论部分寻求帮助。
现在,我们使用PIC微控制器完成了第一个项目,并使用仿真软件验证了输出。继续调整程序并观察结果。直到我们见面我们的下一个项目。
哦,等等!
在我们的下一个项目中,我们将学习如何在实际的硬件上运行它。为此,我们将需要以下工具使其保持就绪状态。在那之前,快乐学习!
- PicKit 3
- PIC16F877A集成电路
- 40针IC座
- 穿孔板
- 20Mhz晶体OSC
- 男性和男性Male子针
- 33pf电容器-2个
- 680欧姆电阻
- 任何颜色的LED
- 焊接套件。