加入收藏夹
域名:www.kincony.com    www.hificat.com       数据资料站 || 公司简介|| 汇款须知 || 汇款确认及留言 || 论坛 || 淘宝网店

PIC单片机快速入门(C语言版)——站长原创,如需引用请注明出处

    笔者曾经在2004年—2008年写下51单片机综合学习系统系列教程文章数十篇,很多读者朋友通过学习之后已经顺利地跨入了51单片机的大门,受到了广大读者朋友的好评,也让笔者感觉非常高兴,在学完了51单片机之后,笔者将为大家介绍一系列PIC单片机基础知道与入门学习教程,为此特地写下“PIC单片机快速入门”一文,配合文中所讲的单片机学习、开发设备,提供给学习者一个理论与实践相结合的平台,使广大单片机初学者朋友能够以最快的速度跨入PIC单片机的大门,文中讲述一些单片机常用的开发设备,我们应该如何去使用、操作它们。

    首先,我们先来看一看,在下面的学习过程中将要用到的硬件设备有哪些,它们分别是:PIC编程器,ICD2仿真烧写器和增强型PIC实验板,实物如图所示,你只需要有一台电脑就可以进行学习和开发了。三板在手,可谓是资源足矣,学习起来够你用的了。至于一些难度较高的应用我们在此先不作介绍,说多了,反而会使问题复杂化。

pic programmer图1

    PIC编程器:如图1所示,用来将我们在PC机上编好的程序烧写至单片机芯片中去,以完成程序的固化工作,通过我们也称其叫“烧写器”,讲的是同一个东西,我们要使用的PIC编程器支持市面常见的芯片型号,如PIC16F877A,PIC16F876,PIC16F54,PIC12C508,PIC12F508,PIC16C65,PIC18F452,PIC18F6720等百余种PIC单片机芯片,相对于市场上出售的编程器,其价格已经非常低廉了。

icd2.5图2

     ICD2仿真烧写器:如图2所示,用来提高我们的软件开发效率,实现芯片的在线仿真,一听到仿真器大家都会想到一个贵字,但我们提供的仿真器相信大部分朋友都可以承受,所以推荐给大家。我们在MPLAB IDE编程软件中设置好要仿真的芯片型号即可。

pic demo图3

    增强型PIC实验板(与PIC编程器、ICD2仿真烧写器配合使用):如图3所示,方便我们完成各种单片机实验,如流水灯,数码管显示,继电器控制,发声实验,IIC总线通信等等,应该说足够学习使用的了。

    我们准备好了学习PIC单片机的硬件设备后还需要准备好哪些软件平台呢?我们完成软件开发又需要完成哪些步骤呢?

    我们需要安装的软件主要有两个,分别是“MPLAB 集成开发环境”和“PIC编程器烧写软件”。

    MPLAB 集成开发环境(IDE)是一个综合性的设计平台界面,适用于使用Microchip PICmicro 和dsPIC 单片机进行嵌入式设计的应用开发。我们在这个软件界面中编写程序代码,并通过它将写好的源程序代码编译成目标代码,即HEX文件,同时配合硬件调试器、开发板完成软件程序的调试工作,最终通过编程器将定型的目标代码写入到开发板的单片机芯片中去。。

    首先,在配套光盘中找到MPLAB IDE安装文件,该文件也可以从Microchip网站下载,双击Install.exe文件根据向导安装完成即可。注意:此时MPLAB IDE软件只支持使用汇编语言进行编程,我们准备使用C语言来进行程序编缉,所以,还需要为MPLAB IDE软件安装一下C编译器插件,其具体安装方法由于文章篇幅有限,详见光盘内说明文件。

    其次,将光盘“PIC编程器驱动软件”目录复制到计算机硬盘上,这是我们一会要使用的烧写软件,用来将我们编好的程序烧入PIC单片机芯片内。现在,我们将PIC编程器插上USB线与电脑连接,系统提示发现新硬件,要求用户指定驱动程序所在路径,我们将其指定到配套光盘“USB驱动程序”目录,点击确定按钮后,系统完成了编程器USB驱动程序的安装。安装好后你的电脑会增加一个串口,如图4所示,这时编程器硬件就连接在这个USB转成的串口上。

usb图4

    “MPLAB 集成开发环境”和“PIC编程器烧写软件”都安装完成后,我们就可以进行程序编写和烧录工作了,以下我们将与这些单片机开发设备相结合来讲述具体的实践学习过程。

    我们的第一个实验是要用PIC单片机点亮实验板上的其中一只LED发光管。想用单片机来完成一些智能化的控制,这个是最简单的一个程序例子,以给大家一个感性的认识。在此,出于通俗易懂的角度出发,我们使用PIC编程器与增强型PIC实验板配合来完成本次实验,力求用最简洁的代码,最方便的操作方式,让大家了解到底该如何让单片机工作。本次实验,我们使用的芯片为PIC16F877A,它涵盖了PIC16F***子系列的所有功能,特别适合初学者使用,它在PIC家族中的地位类似51家族中的S51或者S52,不过内部包含了更多的功能,比如内部集成了AD等特殊单元。

sch图5

    图5是跟增强型PIC实验板上跟LED控制相关部分的电路,我们可以看到LED上串接的电阻是470欧姆,如果此时LED上的电压是2.0V,那么此时通过LED的电流则为(5V-2V)/470Ω=6.38mA,如果需要提高亮度,一般会电流控制在10mA左右,则此时电阻应该选择(5V-2V)/10mA=300Ω,所以可以就近选择330Ω。

    电路已经确定,然后就是连接到单片机的I/O口上,见图5,我们可以看到LED的正极通过限流电阻连接到PIC单片机的I/O口,负极连接到了GND地线,因此要使LED发光,也就是使电流流过LED,只需要把I/O口置成高电平即可,所以最终我们对LED的控制变成了对一个I/O口的控制,比如要点亮标号为“D11”的LED,就是把RC1口设置成高电平而已,这就是实现方法。

    下面就开始写程序了,打开MPLAB IDE软件,选择File(文件)>New(新建),出现一个文本编辑窗口,在该窗口中输入以下C语言源程序:

#include <pic.h>

main()

{

TRISC=0X00; /*TRISC寄存器被赋值,PORTC每一位都为输出*/

while(1) /*循环执行点亮发光二极管的语句*/

{

PORTC=0X02; /*向PORTC送数据,点亮第二个LED发光管*/

}

}

    这是一个最简单的PIC点LED的C程序代码,也希望能给初学者朋友们一个感性的认识,我已把能省略的语句尽量都省去了,能把每句话都看懂了,PIC的C程序最小框架你也就明白了。

    第一行 #include <pic.h> 用于加载标准库函数,如51单片机中的 reg51.h 库文件一样。

    main()是C语言中的主函数,一个C程序代码中,也只有一个main()主函数,程序就是从这里开始执行的。

    语句“TRISC=0X00;”用来设置RC口的输入、输出状态。

    while(1) 是死循环语句,即周而复始地执行{ }内的语句体,如我们现在的程序中的作用即是不停地执行 PORTC=0X02; 这条语句。

    语句“ PORTC=0X02;”的功能则是给RC口赋值,即第二个引脚RC1为高电平,用“1”来表示。

    说明:PIC系列单片机各类数据存储器都是以寄存器方式工作和寻址的。专用寄存器包括了定时寄存器TMRO、选择寄存器OPTION(又称为项选寄存器)、程序计数器PCL、状态寄存器STATUS、间接寻址寄存器INDF和FSR、端口I/O寄存器(如PORTA、PORTB…)和相对应的端口I/O控制寄存器(又称为端口I/O数据方向寄存器,如TRIAS、TRISB…)、保持寄存器PCLATH和中断控制寄存器INTCON等。我们现在暂时只用到了TRISC和PORTC口寄存器。

    先创建文件夹D:\FirstPro,然后将上面输入的源程序保存到该文件夹,注意文件名为led.c。文件保存完成后,我们可以发现源程序编辑窗口中的程序字体颜色改变了,这些颜色能帮助我们更好地阅读源程序,快速发现输入错误的命令。文件保存后,我们需要进行项目的创建,项目将文件组织起来以便进行编译,我们选择菜单Project(项目)>new(新建),出现New Project(新项目)对话框,在对话框中,我们将项目命名为MyPro,使用Browse 按钮,将项目放在刚才创建的FirstPro文件夹中。单击OK按钮,在MPLAB IDE 界面中我们会看到已创建项目的的项目窗口,如果项目窗口未打开,请选择菜单View->Project。现在,我们需要将刚才创建好的源程序文件追加到项目中去,在此,源文件是必须添加的。其他文件,如头文件、库文件、链接描述文件,视项目的具体情况来确定是否追加。我们现在只需要将源文件led.c追加即可,在屏幕左面的项目窗口中找到Source Files节点,点击鼠标右键,在弹出菜单中选择Add Files,双击要添加的文件led.c 即可。

    项目和源程序创建完成后,我们需要给项目设置好目标芯片型号和配置位。

    选择菜单Configure>Select Device ,在Select Device 对话框中,点device栏右边的下拉箭头,选择器件为PIC16F877A,注意后面带有字母“A”。(提醒:PIC16F877A和PIC16F877是两个内部结构和功能不同的芯片,两个芯片不能直接替换)。设置完成后,点击“OK”即可,如图6所示。

setup图6

    设置配置位,选择菜单Configure->ConfigurationBits。通过点击 “Settings”栏中的文本,可以更改这些配置位,我们将其做如图7所示配置。

mplab ide图7

    接下来,我们要为源程序做一项编译工作,即产生目标文件,等会我们要把该文件烧入到我们的PIC16F877A单片机芯片中去。选择菜单中Project->Build All项,或者按快捷键Ctrl+F10就可以完成编译工作了,这时,你会在led.c文件所在目录下发现一个名为“led.hex”的文件,这就是我们所用来完成烧写芯片工作时使用到的目标程序文件,该文件为16进制文件。

    咱们继续讲,我们现在已经完成了软件程序的编制工作,下面我们就来讲一讲,咱们的最后一道工序,即程序定形后,我们如何将其烧到我们的单片机芯片中去。

    打开PIC编程器烧写软件,软件运行前,应该先连接好编程器硬件,即插入USB线。退出运行时先关闭软件,再拔出 USB 线。首先,在第一次使用前需要进行端口配置。通过“我的电脑-->硬件-->设备管理器”查看使用了哪个端口,然后在软件菜单中选择“文件”-->“选择端口”,输入端口号,如COM3,选择好以后,这时屏幕的中下方其中一栏显示连接的串口好以及软包装执行状态。

    然后在软件窗口右下角选择芯片型号为“16F877A”,点击“载入”按钮,选择刚才我们已经生成等待烧写的led.hex文件,按软件窗口右边的芯片插放图片,在锁紧座上插好目标器件。点击窗口下方“编程”按钮,开始编程,烧写完成后,弹出下面的窗口表示烧写成功,否则会弹出相应的错误提示。OK,大功告成。至此,我们已经完成了从软件编写,直到烧写芯片的全部步骤。一定很辛苦了吧:)下面就让我们来看看我们的成果吧,把刚才烧写好的PIC16F877A芯片插在增强型PIC实验板上,并接上外接电源,来看看板上的一个LED发光管是不是亮了。结果如图8所示,板上的一个LED发光管点亮,现在我们已经脱离了我们的仿真器而使用的是单片机芯片。

demo图8

    笔者写到这里,整个实验、开发步骤已经全部完成,虽然这是一个很简单的实验,但很大复杂的例子都是基于各种简单的原理之上。所有的实验方法、步骤完全一样,只是程序代码变了。

    最后,笔者写下此文,希望能够帮助广大单片机初学者可以尽快入门,给大家一个感性的认识,最重要的是能够提供给大家一个实验的硬件环境以及软硬件相结合的实践性描述,以使增加单片机初学者的实践动手能力。我们提供的试验板上资源非常丰富,可以做流水灯、数码管、蜂鸣器、键盘、继电器控制、IIC总线通信等实验,光盘上也都配有例程、实验中的一些视频操作录像及编程器、仿真器的全部驱动程序,以供大家方便学习,实验中的一些视频录像请见光盘“实验录像”下的视频文件。因此,你只要有一台电脑就可以进行学习、开发了,相信只要你发挥你的想象,一定可以将单片机发挥出它更大的潜力。

以上部分内容转载于网上,如有涉及到版权问题,请即通知本人删除 ICP备05019516号
联系地址:浙江省杭州市拱墅区普金家园11-3-702 徐玮 邮政编码:310015 Email:hificat@163.com xu169@sina.com
电话:0571-85956028 传真:0571-88230070 手机:13185018567 QQ:420951892 MSN:hificat@hotmail.com
杭州晶控电子有限公司 版权所有 COPYRIGHT2003——2007 HANGZHOU KinCony ELECTRONICS CO.,LTD All rights reserved