插手珍藏夹

手把手教你使用PIC单片机点亮LED发光管(C言语版)——站长原创,如需引用请说明出处

    发光二极管,也叫做LED,是种很是常用的唆使器件,比如电源唆使、工作唆使等,即便你不怎样留神,生怕仍是在不少场所见到过的,比如各类充电器,它们用亮或者灭告诉你电源能否曾经接通,用颜色的变化告诉你电池能否曾经充满,再比如有不少设备,往往采用发光二极管的明灭来暗示系统正在一般工作。同时,由于它的节制比力简单风趣,所以咱们的测验考试就选择从这里起头。

    起首咱们需要晓得若何让一个发光二极督工作。发光二极管有良多类,如图1-1所示的是几种直径3mm的通俗亮度发光二极管,电器道理图则如图1-2所示,当在它的A和K两个电极加上合适的电压的时候,它就会亮起来。说“合适的电压”,是由于不合的发光二极督工作电压并不不异,一般是在1.6V到2.8V之间,而工作电流则一般在2到30mA之间,可是现实工作的选择范畴一般是4到10mA之间。
  图1-1、发光二极管实物图 图1-2、发光二极管道理图

    这里之所以要说这些参数,现实是为领会释LED上串接电阻大小的选择。图1-4是跟加强型PIC测验考试板上跟LED节制相关部门的电路,咱们能够看到LED上串接的电阻是470欧姆,若是此时LED上的电压是2.0V,那么此时经由LED的电流则为(5V-2V)/470Ω=6.38mA,若是需要提高亮度,一般会电流节制在10mA摆布,则此时电阻该当选择(5V-2V)/10mA=300Ω,所以能够就近选择330Ω。
    电路曾经确定,然后便是连接到单片机的I/O口上,见图1-4,咱们能够看到LED的A极经由限流电阻连接到PIC单片机的I/O口,K极连接到了GND地线,因而要使LED发光,也便是使电流流过LED,只需要把I/O口置成高电平即可,所以最终咱们对LED的节制变成为对一个I/O口的节制,比如要点亮标号为“D10”的LED,便是把RC0口设置成高电平罢了,这便是完成方式。

图1-3、加强型PIC测验考试板实物照片 图1-4、单片机节制LED显示的道理图

    先把“ICD2 PIC仿真烧写器”与“加强型PIC测验考试板相连”,插上所需要的连接线缆并与PC机相连,后面部门咱们曾经学会了搭建PIC进修和斥地的硬件与软件环境。此刻,咱们只需在这些环境底子上编写法式代码实施验证即可,注:在当前的系列教程中,咱们仍将以这些软硬件环境为底子进行讲述。

    咱们建立落成程后,编写一个点亮LED发光管的法式代码如下:

#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口寄放器。

   该法式测验考试成果如下:



    此刻咱们晓患了,能够经由改变PORTC口的数据来获得不合的花腔灯成果,因而,咱们只需按本人的意想来改变法式代码即可,下面是一些改制实例:


点亮第八个LED发光管的法式


花腔流水灯运转眼间截图之一


花腔流水灯运转眼间截图之二


花腔流水灯运转眼间截图之三

以下是一段让测验考试板上一个LED发光管闪亮的C法式,大师能够现实编译运转一下看看最终成果:
#include <pic.h>
void delay()
{
unsigned int k;
for(k=0;k<6000;k++);
}
void main()
{
TRISC=0X00; /*TRISC寄放器被赋值,PORTC每一位都为输出*/
while(1) /*轮回施行点亮发光二极管的语句*/
 {
  PORTC=0X01; /*向PORTC送数据,点亮LED发光管*/
  delay();
  PORTC=0X00;
  delay();
 }
}

以下是部门测验考试源法式演示测验考试视频录像

加强型PIC测验考试板点亮LED发光管测验考试演示录像之一

>>>点击此处下载RM视频文件 ——2007年02月21日 制造插手

加强型PIC测验考试板点亮LED发光管测验考试演示录像之二

>>>点击此处下载RM视频文件 ——2007年02月21日 制造插手