zoukankan      html  css  js  c++  java
  • 控制LED灯发光

    LED:是发光二极管,一种半导体固体发光器件。对于普通发光二极管(又称LED)来说,红黄等暖色光LED一般是1.8至2.2V,蓝绿冷色光LED一般是3.0至3.6V。
    不过发光二极管一般需要注意的不是其工作电压,而是要限定工作电流。一般普通的指示用LED正常工作电流为5-10mA,过高的工作电流将会引起LED节温超限而烧坏。

    LED工作原理:LED的工作是有方向性的,只有当正极接到LED阳极,负极接到LED阴极的时候才能工作,如果接反是不能正常工作的。在开发板上面LED的原理图如下,LED的阳极串联一个电阻,然后连接到电源VCC,而LED的阴极连接到单片机的P2口,如果你想点亮一盏LED,就得把单片机相对应的IO赋为低电平。

    C语言程序简单框架:

    #include "reg52.h"
    //将P20口赋给led变量
    sbit led = P2^0;
    void main()
    {
        while(1)
        {
            //将P20端口置为低电平
            led = 0;
         }
     }

    程序书写完成,进行编译、生成hex文件;最后下载到开发板实际运行。

    #typedef的使用:typedef unsigned char u8;  typedef unsigned int u16;(后面要加分号)将unsigned char重命名为u8,将unsigned int重命名为u16。

                                重定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的位宽是不一样的。

     LED灯闪烁的简单程序:

    #include "reg52.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit led=P2^0; //D1
    void delay(u16 i)
    {
        while (i--);//循环一次大约10us
    }
    void main()
    {
        while(1)
        {
             led=0;
             delay(50000); //不可以超过65535
             led=1;
             delay(50000);
        }
    }

    利用仿真计算延时函数所用的时间:打开Target Options / Target / Xtal改为12.0(因为开发板上的晶振频率是12MHz),然后计算前后的时间差就可以了。

    C语言常用的预处理命令:#define A P0(即用A表示P0)

    循环左移右移函数:_crol_(a, b); 循环左移函数,a是左移的值,b是左移的位数。包含在instrins.h库函数里面。

                                    _cror_(a, b); 循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数里面。

    LED流水灯的简单程序:

    #include "reg52.h"
    #include <intrins.h> //这两种方式都可以
    
    typedef unsigned char u8; //占用一个字节
    typedef unsigned int u16; //占用两个字节
    
    #define led P2
    
    void delay(u16 i)
    {
        while(i--);
    }
    
    void main()
    {
        u8 i=0;
        led=0xfe;
        delay(50000);
        while(1)
        {
                for(i=0;i<7;i++)
            {
                 led=_crol_(led, 1);
                 delay(50000);
            }
            for(i=0;i<7;i++)
            {
                led=_cror_(led, 1);
                delay(50000);
            }
        }
    }
  • 相关阅读:
    hbase深入了解
    Android SDK安装与环境变量配置以及开发第一个Android程序
    Android平台架构及特性
    android Notification定义与应用
    Windows Phone 7 开发 31 日谈——第1日:项目模板
    MVC HtmlHelper类的方法总结(转)
    INotifyPropertyChanged的使用
    浅谈计算机软件的破解与保护(时间:20111224作者:李富云 来源:中国论文库)
    托管代码&非托管代码
    .net也疯狂:生成zip文件(转)
  • 原文地址:https://www.cnblogs.com/czz0508/p/10435755.html
Copyright © 2011-2022 走看看