单片机-点亮小灯

2019-04-15 18:18发布

#include ”reg52.h“        //包含特殊功能寄存器定义的头文件(52系列)sbit LED =  P2^0 ;             //位地址声明,(s小写,P大写)void main()                       //主函数 ( 对于任何一个C程序必须有且仅有一个main函数){     LED = 0;                       //给低电位}

小灯为什么不亮呢?这是因为单片机默认高电位,给P2^0附上低电位,和地没有电势差,不导电,LED就不会亮。把LED = 0;        改成LED=1;
但是在实际应用中会产生问题。可能程序空间的代码容量很大,但是实际上代码没用那么多行,再继续运行下去,是未知的内容,一旦执行下去就会出错,从而导致单片机自动复位,所以通常在程序中加入一个死循环,避免让程序乱运行。#include ”reg52.h“       sbit LED =  P2^0 ;             void main()              或者             void main(){                                               {     while(1)                                     LED = 1;      {                                                while(1);     LED = 1;                              }      }                   }如果想让LED = 0时让小灯亮,这时候就需要外部供电。
但在仿真中,这都是理想化的。当时我学的时候直接给小灯供电,烧坏了不少小灯。目前主流的单片机的电源一般是5V和3.3V。一般的LED正向导通电压是1.8~2.2V,工作电流一般在1~20mA之间,当电流超过20mA时,LED就可能烧坏了。电流越大,烧坏的可能越大。所以常加一电阻,限制整条通路的电流大小。用I=U/R计算。