网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 杭州晶控电子有限公司 >> 文章中心 >> 手把手学PIC单片机 >> 文章正文
  [组图]手把手教你使用PIC单片机点亮LED发光管           ★★★ 【字体:
手把手教你使用PIC单片机点亮LED发光管
作者:admin    文章来源:本站原创    点击数:    更新时间:2008-01-04    

手把手教你使用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();
 }
}

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    杭州晶控电子有限公司 版权所有 站长:hificat