PIC18F单片机的入门

电子说

1.2w人已加入

描述

在编写了很多关于PIC16F系列微控制器的实验教程之后,我想到了继续发展到PIC18F的增强范围的PIC系列微控制器系列PIC18F。尽管PIC16F系列是出色的通用单片机,但仍出现了某些限制,例如,程序和数据存储器有限,堆栈尺寸小以及所有中断源必须共享一个中断向量。其有限的指令集也无法直接支持USB和CAN等更高级的外围设备接口。 PIC18F系列的基础是要解决限制PIC16F系列的问题。 PIC18F系列单片机具有更大的指令集,更多的内存,更大的堆栈,更多的外部中断,更高的速度,增强的I/O端口架构以及我们将在接下来的教程中探索的更多功能。我已经决定,我不会像在PIC16F上那样花很多时间在焊接和制作自己的PIC18F微控制器原型板上。我将使用mikroElektronika的PIC板的StartUSB编写这些教程。

mikroElektronika的PIC板的StartUSB

那么PIC的StartUSB是什么?

PIC的StartUSB 是一个小型开发板,具有具有快速USB 2.0支持的PIC18F2550单片机。它具有用于所有MCU引脚的连接垫以及两个用于放置附加组件的附加原型设计区域。该板的最大优点是,该微控制器已使用快速USB引导加载程序进行了预编程,因此无需任何外部编程器。您可以使用mikroBootloader将与应用程序相关的HEX文件从PC传输到PIC的程序存储器。 MikroBootloader是mikroElektronika为其USB HID Bootloader开发的PC应用程序。板载miniUSB连接器,振荡器(8.0 MHz晶体),复位电路,电源指示灯LED以及另外两个LED提供了快速启动所需的一切。另外两个LED通过跳线连接到PIC18F2550的RA1和RB1引脚。上图显示了具有所有组件和其他原型制作区域的StartUSB for PIC板。

今天的教程很重要,因为我们将讨论有关PIC板的StartUSB的完整设置,这将使您开始探索PIC18F系列单片机的世界。您需要安装的第一件事是mikroC Pro for PIC,这是由mikroElektronika为PIC12,PIC16和PIC18系列微控制器开发的C编译器。您可以下载该软件的演示版本,该版本将允许您编译最多2 K程序字的程序。安装编译器后,下载mikroBootloader,这是PC的应用程序,可与存储在StartUSB板上PIC18F2550单片机中的Bootloader程序进行通信。可以从以下链接下载用于PIC和mikrobootloader的StartUSB用户指南。

StartUSB板的用户手册提供了该板的电路图以及有关如何将其连接到PC以便使用mikroBootloader下载应用程序HEX文件的说明。在继续前进之前,请先阅读手册中的这些详细信息。

用于USB的PIC板的StartUSB电路图,其中两个LED连接到RA1和RB1

使用“ Hello World”测试板

我们将通过一个简单的测试程序开始我们的旅程,该程序将确保一切设置正确且我们将准备使用PIC18F2550进行更高级的实验。该程序将以500 ms的持续时间交替闪烁两个板上LED(连接到RA1和RB1引脚)。在mikroC Pro for PIC中,以项目形式开发应用程序。如果您以前从未使用过mikroC Pro for PIC,那么mikroElektronika的文件“在mikroC Pro for PIC中创建第一个项目”将指导您创建第一个项目。遵循这些步骤时,选择单片机为PIC18F2550,将器件时钟选择为8.0 MHz。在主程序窗口中,键入以下程序。

/*

用于PIC板的StartUSB测试程序

说明:两个板上LED交替闪烁500 ms

MCU:PIC18F2550,外部晶振= 8.0 MHz,PLL的实际时钟= 48.0 MHz

版权@ Rajendra Bhatt

2011年3月29日

*/

//定义LED连接

sbit LED1 at RA1_bit;

sbit LED2 RB1_bit;

void main(){

CMCON = 0x07;//禁用比较器

ADCON1 = 0x0F;//禁用模拟功能

TRISA = 0x00;

TRISB = 0x00;

LED1 = 0;

LED2 = 1;

做{

LED1 =〜LED1;

LED2 =〜LED2;

Delay_ms(500);

} while(1);

}

下载mikroC项目文件

编译程序以获取HEX文件,然后使用mikroBootloader应用程序将其加载到PIC18F2550单片机中。请按照StartUSB板用户手册中提到的说明进行操作。加载程序后,请重置板并等待5秒钟,直到微控制器退出引导加载程序模式并开始执行新加载的应用程序。您将看到两个板载LED交替闪烁。等一下,它们被编程为以0.5秒的持续时间闪烁,但是您会看到它们的运行速度快得多。看来微控制器时钟比所应用的外部振荡器(8.0 MHz)快得多。由于存在内置的PLL电路,因此在PIC18F2550中是可能的。

用于PIC板的StartUSB上的LED闪烁

PIC18F2550板上的USB模块需要48.0 MHz的时钟才能全速运行。该时钟由内置96 MHz PLL模块通过将其输出除以2得到。PLL本身由来自主时钟源的4 MHz输入信号驱动,在本例中为8.0 MHz晶体。因此,可以通过使用PLL预分频器值2从8.0 MHz的源中获得驱动PLL所需的4.0 MHz。然后,将PLL(96 MHz)的输出除以2,以获得USB操作所需的48 MHz时钟。微控制器内核和其他外设也可以使用此时钟速度,但不是必须的。还有其他选项可以满足USB模块的时钟要求,并且仍然为从主振荡器源为其余器件提供时钟提供了灵活性。这些详细信息可在PIC18F2550的数据手册中找到。但是,对于用于PIC板的StartUSB,由于需要USB自举程序,USB模块和微控制器内核,两者都使用源自PLL的48.0 MHz时钟。不幸的是,引导加载程序不允许用户更改时钟设置,因此,它始终为48.0 MHz,除非您先擦除引导加载程序,然后使用外部编程器修改时钟设置的配置寄存器。因此,板载PIC18F2550单片机实际上以48.0 MHz而不是8.0 MHz运行。这就是LED闪烁快得多的原因。为了解决这个问题,请从mikroC的“项目”菜单中打开“编辑项目”窗口,并确保时钟设置与下面显示的匹配。

正确的时钟下一步,保存项目,再次编译,然后将HEX文件重新加载到PIC18F2550中。现在,您将看到LED以正确的速率闪烁。因此,您已经准备好使用PIC18F微控制器。请继续关注有关PIC18F的更多高级实验教程。

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分