3回答

0收藏

【课程1】 学习I/O控制,控制LED灯

#开源分享 #开源分享 3763 人阅读 | 3 人回复 | 2013-10-20

本帖最后由 ETRH Studio 于 2013-11-24 11:59 编辑

目的:初步了解LED驱动原理,初步了解单片机控制I/O口方式。
内容:利用学习板上的四个LED灯,单片机控制其亮灭。
预备知识:LED工作原理,Keil C51编程方式。

LED,俗称发光二极管,发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。




上面将的有些专有名称了,如图所示,当给LED正端加上正电压,另外一端接电源负端(0),在实际设计电路中,需要考虑到LED的最大工作电流,需要串接一个电阻限流,阻值请参考LED指标。板子上面的电路如下图所示。




上图可知,LED负向端接GND,GND即0V,当另外一端接1(5V),则发光二极管亮,由此可知,当我们用单片机的I/O接到二极管的正向端,并将此端口电平设置为高电平,二极管则会亮起来了。
程序:
#include <reg52.h>    //?单片机头文件,定义单片机特殊功能和I/O口定义
void delay(unsigned int i);  //延时程序,意思是等待多久才做下面的事情
void main()//主函数,void 无返回值
{

P1  = 0x00; //P1口置为全低电平,此时LED灯不亮
delay(600); // 调用延时程序,延时约600毫秒
P1  = 0xff; //P1口置为全高电平,此时LED灯亮
delay(600); //调用延时程序,延时约600毫秒
}

/*******延时函数*************/
void delay(unsigned int i) 调用延时程序,延时约i毫秒
{
   unsigned char j;
   for(i; i > 0; i--)   
       for(j = 255; j > 0; j--);
}   
    程序如上所示,将P1口接到P16,控制P1口的电平就可以控制LED的亮灭。
单片机是顺序执行语句,执行主函数main(),一直重复主函数里面的动作,程序里P1即代表P1口,8位(这在头文件已经定义了,暂时只做了解),需要对P1口赋值,只需将8位二进制每四位用16进制表示即可,并加上前缀0x,例如需要将P1口全部置高电平,即P1=11111111(先高位,后低位),每四位一组转为16进制,则为F F, 加上前缀 就是P1=0xFF(不区分大小写,注意P1中P必须大写,0x中的0是数字0).但如果我只需要控制P1口的第一位怎么办?在51单片机c语言编程中,可以直接对I/O口曹植,只需要在头文件下面定义下即可,例如定义P1的第一位(即P10)为LED灯控制端口,则可以这样定义,sbit LED=P1^0; 这样在主程序里面直接用LED代替对P10口的操作。例程如下:

#include <reg52.h>    //?单片机头文件,定义单片机特殊功能和I/O口定义
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
void delay(unsigned int i);  //延时程序,意思是等待多久才做下面的事情
void main()//主函数,void 无返回值
{

  LED0=0;LED1=0;LED2=0;LED3=0; //将LED控制口全部设为低电平,此时LED灯不亮
  delay(600); // 调用延时程序,延时约600毫秒
  LED0=1;LED1=1;LED2=1;LED3=1; //将LED控制口全部设为高电平,此时LED灯亮
  delay(600); //调用延时程序,延时约600毫秒
}

/*******延时函数*************/
void delay(unsigned int i) 调用延时程序,延时约i毫秒
{
    unsigned char j;
    for(i; i > 0; i--)  
        for(j = 255; j > 0; j--);
}   

关于延时函数,下次在说,接下来你能否完成这样的任务呢??

LED灯花样显示,广告灯?让LED灯按照你的想法亮起来?






分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

QQ哥

发表于 2013-10-20 21:28:27 | 只看该作者

我就是QQ哥,QQ哥就是我!
https://www.cirmall.com/bbs/?fromuser=QQ%E5%93%A5
板凳

bowei181

发表于 2013-10-21 08:50:05 | 只看该作者

地板

fj1161

发表于 2013-10-21 09:47:33 | 只看该作者

顶一个~~~~~~~~~~~~··
第五年了,这次一定要坚持到底,不留遗憾!!!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条