第1步:材料
注意: 材料以星号列出的内容可以替换,具体取决于您可能提供的内容。本教程中用于该类别的组件列在括号中。请注意,替换可能会使本指南的部分内容无关(即如果使用不同的微控制器,则部分代码可能无效)。
软件:
MPLAB X IDE(免费提供:http://www.microchip.com/pagehandler/zh-cn/family 。..
MPLAB XC8(免费提供:http://www.microchip.com/pagehandler/en_us/devtoo 。..
硬件:
香蕉电缆
面包板
电线
USB 2.0电缆[包含在MPLAB ICD 3中]
PIC单片机*(PIC18F4520) - 务必使用 DIP 微控制器,以便它可以放入面包板。
带旋转编码器的设备*(Pololu项目#2269)
10欧姆电阻器
RJ-11到面包板适配器(DigiKey#H11394-ND)
示波器探头x 2(可选)
万用表(可选) - 有助于调试问题
步骤2:电源设置
获得必要的设备后,我们的下一个任务是设置面包板并为PIC微控制器(MCU)供电。这意味着是时候连接直流电源了。
电源: 正如您将在此步骤中所示的Acopian直流电源的图片中看到的那样每个电源通道都有三个彩色连接器,香蕉电缆可以连接到这些连接器上。就本教程而言,我们需要电源提供+ 5V和+ 0V(接地)。为了提供+ 5V和+ 0V,将电源的负极和接地端子连接在一起(图中提供的绿色和黑色端子)。然后,将香蕉电缆连接到将要连接到面包板的正极(红色)端子和接地(绿色)端子上。在面包板上找到的这些端子在步骤3中显示为连接的香蕉电缆。
步骤3:面包板设置
面包板: 是时候设置面包板了。经过我自己的许多布线灾难后,我建议你保持线颜色一致。在本教程中,您将看到红色的+ 5V电线和绿色的+ 0V电线,以及RJ-11到面包板连接器(已布线)的电线的 exception 由一家公司)。另请注意,在面包板的端子排上设置+ 5V和+ 0V会很有帮助。
注意:上面提供的图片显示了下面提到的相同连接和帮助解释下面的说明。
引脚号: 确定连接+ 5V和+ 0V(接地)的位置就像打开此链接一样简单(包含数据表)并向下滚动到第四页:http://microchip.com/downloads/en/DeviceDoc/39631E 。..。在那里你会发现需要进行以下连接:
Pin 11至+ 5V
Pin 12至+ 0V
Pin 31至+ 0V
Pin 32至+ 5V
Pin 1至 一侧 100欧姆电阻(数据表中未提及)
此外,需要使用 RJ-11到面包板适配器(以下简称RJ-11)进行以下连接适配器)。与该步骤相关的适配器的图片还显示了要连接的对象。
RJ-11适配器黄线:至+ 5V
RJ-11适配器蓝线:至 10Ohm电阻器
RJ-11适配器:绿线:到+ 0V
RJ-11适配器红色线:到插针40
RJ-11适配器黑线:到插针39
RJ-11适配器白线是 不 已连接
作为经验法则您可以记住,集成电路芯片始于引脚1位于左上角,然后向下移动左侧,然后向上备份编号最高的引脚(右上角)。要从下往上看,通常在芯片的顶部有一个凹痕或圆点。
还要注意 VDD = + 5V 和 VSS = + 0V (地面)
第4步:编码器设置
接下来,将带有编码器的电动机添加到电路中,并连接到微控制器。如果您订购了材料页面上列出的电动机,则它带有6针适配器,可用于将编码器插入面包板(参见图1)。
电路连接:电动机&编码器需要下面列出的连接。包括三张图片,每张图片在电路上都有不同的视图,以帮助进行编码器连接过程。
红线:至+ 5V
黑线:至+ 0V
绿线:至+ 0V
蓝线:至+ 5V
黄线:至Pin 33(微控制器上)
白线:至Pin 34(微控制器上)
您可能希望连接红线 仅在测试 电机时,因为当前配置会使电机不断运转。或者,可以使用电机驱动器来打开和关闭电机(本教程未介绍)。
步骤5:编程设置
在电路调试器中:要完成此项目的硬件设置,请使用RJ-11电缆将ICD3连接到电路。最后,使用USB 2.0电缆将ICD3连接到计算机。
MPLAB X配置:至此,我们准备打开MPLAB X并设置我们的项目。请参阅以下步骤:
文件》新建项目》独立项目
选择设备:PIC18F4520
选择硬件工具:ICD3
选择编译器:XC8
名称并保存您的项目
注意: :如果您在使用这些说明时遇到任何困难,请从起始页中选择“快速入门”,这将打开一个网页,该网页将指导您完成与图像相同的步骤。为了本项目的目的,我们只关注该页面上的前五个步骤。
第6步:编程
此时,我们将专门使用MPLAB X IDE。要开始使用,请注意MPLAB IDE窗口左侧标题为 Projects 的面板。在此面板中,创建代码:
右键单击 项目下方列出的“源文件”文件夹》新建》 C主文件
无需任何操作根据需要命名(‘Main’很好)现在您将看到MPLAB X创建了一个 主文件 ,在中心面板中可见。
代码: 就本教程而言,我将提供必要的代码,您可以将其复制并粘贴到该中心窗口中(删除文件中的所有其他文本之后)。让您了解代码的作用,我在下面简要介绍了实际代码本身的评论(粘贴在下面)
概述: 对PIC单片机进行编程的代码有几个不同的部分,概述如下。
定义语句: 定义语句允许程序员使用可能对计算机有意义的单词。例如,我们可以将单词OFF定义为二进制“0”。因此,当我们看到“ off”一词使代码更易于理解时,计算机将读取二进制“ 0”。
Include语句: Include语句告诉编译器执行以下操作:包括各种头文件。这些外部文件可能包含定义输入/输出函数(stdlib.h)或各种标准C函数(stdio.h)等的文件。
编译指示: Pragma用于设置微控制器上的配置位,用于控制振荡器选择,代码保护等方面。请选择窗口》 PIC存储器视图》配置位
《随意检查配置位。 strong》函数:函数是执行特定任务的程序部分。主要功能是程序开始执行。
程序:
/***************** ************************************************** *
如何编程PIC和读取编码器程序
最近修订:1/3/14
作者:Carson Miller
撰写:PIC18F4525(当前版本)
**** ************************************************** ***************/
#define INPUT 1
#define OUTPUT 0
#define _XTAL_FREQ 4000000//由XC8使用delay_ms(x)宏
//PIC18F25K22配置位设置
#include //包括PIC硬件映射
#include“ GenericTypeDefs.h”//包括标准变量类型
//#pragma config语句应位于
//使用项目枚举代替#define进行ON和OFF。 CONFIG1H
#pragma config OSC = INTIO7//振荡器选择位(内部振荡器模块,RA6的CLKOUT功能) ,RA7上的端口功能)
#pragma config FCMEN = OFF//故障保护时钟监视器使能位(故障保护时钟监视器禁用)
#pragma config IESO = OFF//内部/外部振荡器切换位(禁用振荡器切换模式)
//CONFIG2L
#pragma config PWRT = OFF//上电定时器使能位(PWRT禁止)
#pragma config BOREN = SBORDIS//欠压复位使能位(仅在硬件中使能欠压复位(SBOREN禁用))
#pragma config BORV = 3//欠压复位电压位(最小设置)
//CONFIG2H
#pragma config WDT = OFF//看门狗定时器使能位(WDT使能)
#pragma config WDTPS = 32768//看门狗定时器后置选择位(1:32768)
//CONFIG3H
#pragma config CCP2MX = PORTC//CCP2 MUX位(CCP2输入/输出与RC1复用)
#pragma config PBADEN = ON//PORTB A/D使能位(PORTB 《4:0》引脚在复位时配置为模拟输入通道)
#pragma config LPT1OSC = OFF//低功耗Timer1振荡器使能位(Timer1配置为更高功率运行)
#pragma config MCLRE = ON//MCLR Pi n使能位(MCLR引脚使能; RE3输入引脚已禁用)
//CONFIG4L
#pragma config STVREN = ON//堆栈满/下溢复位使能位(堆栈满/下溢将导致复位)
#pragma config LVP = OFF//单 - 供应ICSP使能位(单电源ICSP使能)
#pragma config XINST = OFF//扩展指令集使能位(指令集扩展和索引寻址模式禁用(传统模式))
//CONFIG5L
#pragma config CP0 = OFF//代码保护位(块0(000800-003FFFh)未受代码保护)
#pragma config CP1 = OFF//代码保护位(块1(004000-007FFFh)不代码 -
#pragma config CP2 = OFF//代码保护位(块2(008000-00BFFFh)没有代码保护)
//CONFIG5H
#pragma config CPB = OFF//引导块代码保护位(引导块(000000-0007FFh)没有代码保护)
#pragma config CPD = OFF//数据EEPROM代码保护位(数据EEPROM没有代码保护)
//CONFIG6L
#pragma config WRT0 = OFF//写保护位(块0(000800) -003FFFh)没有写保护)
#pragma config WRT1 = OFF//写保护位(块1(004000-007FFFh)没有写保护)
#pragma config WRT2 = OFF//写保护位(块2(008000-00BFFFh)没有写保护)
//CONFIG6H
#pragma config WRTC = OFF//配置寄存器写保护位(配置寄存器(300000-3000FFh)没有写保护)
#pragma config WRTB = OFF//引导块写保护位(引导块(000000-0007FFh)未写保护)
#pragma config WRTD = OFF//数据EEPROM写保护位(数据EEPROM未写保护)
//CONFIG7L
#pragma config EBTR0 = OFF//表读保护位(块0(000800-003FFFh)不受其他块中执行的表读操作的保护)
#pragma config EBTR1 = OFF//表读保护位(块1(004000-007FFFh)不受其他块中执行的表读操作的保护)
#pragma config EBTR2 = OFF//表读保护位(块2(008000-00BFFFh)未受保护
//CONFIG7H
#pragma config EBTRB = OFF//引导块表读取保护位(引导块(000000-0007FFh)不受其他块中执行的表读取的保护)
》//虚拟变量设置
UINT距离= 0;
CHAR方向= 0;
CHAR错误= 0;
void configure(void)
{
//ADC Setup
ADCON1bits.PCFG = 1111;//关闭所有模拟输入(参见数据表第224页)
//振荡器设置
OSCCONbits.IRCF = 110;//将振荡器设置为4MHz
//中断设置
INTCONbits.GIE = 1;//启用所有未屏蔽或高优先级的中断(取决于IPEN)
INTCONbits.PEIE = 1;//启用所有未屏蔽的外设中断或低优先级中断(取决于IPEN)
INTCONbits.INT0IF = 0;//清除中断0标志位(必须在启用中断之前发生)
INTCONbits.INT0IE = 1;//启用INT0外部中断
INTCON2bits.INTEDG0 = 1;//将外部中断0设置为在上升沿中断
RCONbits.IPEN = 0;//禁用中断优先级
TRISBbits.TRISB0 = INPUT;//将INT0设置为输入
TRISBbits.TRISB1 = INPUT;//将INT1设置为输入
}
void main()
{
configure();
while(1)
{
//Program Loop
}
}
//主中断服务程序(ISR)
void中断ISR()
{
//检查它是否是中断0
(INTCONbits.INT0IF = = 1)
{
distance ++;
INTCONbits.INT0IF = 0;//清除中断标志
错误= 1;
}
步骤7:运行程序和调试
使用MPLABX IDE的注意事项: 添加该程序后,您可以按以下方式运行该程序调试项目按钮。调试项目按钮看起来像一段破碎的代码,旁边有一个播放按钮,位于上方工具栏(文件工具栏下方)。按下此按钮后,您将可以使用上方工具栏中的按钮暂停和播放程序。
检查编码器值: 要检查编码器值,必须在MPLAB IDE窗口左侧的面板中添加变量“watch”。只需单击“输入新手表”的位置,然后键入方向或距离。然后,您将可以通过该窗口跟踪这些变量。请注意,必须暂停程序才能看到变量监视中的值发生变化。此外,如果变量监视中的值以不正确的格式显示,请右键单击不正确的值并将鼠标悬停在“显示值列为”上,以便您可以选择正确的格式。
项目完成!
如果你已经到了最后并且没有工作项目,请不要担心。有许多事情要尝试:
万用表:检查以确保您的微控制器和电机/编码器在适当的位置接收+ 5V和+ 0V(接地)
示波器:检查以确保编码器正在发送与该步骤相关的示波器图像中所示的信号。编码器应该从黄色和白色线中放出两个90度异相的方波。
MPLAB X:检查以确保您的微控制器设置正确,确保您的特殊功能寄存器具有适当的二进制值(在步骤6的代码中设置)。要在调试会话期间暂停后,要查看特殊功能寄存器,请转到窗口》 PIC内存视图》 SFR。从那里你可以检查INT0(引脚33)的引脚是否设置为输入,例如,将光标悬停在TRISB寄存器上。
责任编辑:wv
-
单片机
+关注
关注
6039文章
44583浏览量
636519 -
编码器
+关注
关注
45文章
3651浏览量
134772 -
编程
+关注
关注
88文章
3628浏览量
93817
发布评论请先 登录
相关推荐
评论