第二节 LED模块
目录
一、LED介绍
二、设计程序
1、点亮一个led灯。
2、LED闪烁(500毫秒闪一次)
3、流水灯
4、改进流水灯
三、参考文献
一、LED介绍
1、用途:照明、广告灯、指示灯、屏幕。
2、发光二极管:只有正极接正极,负极接负极才有电流通过。
3、如何区分LED的正负极?
1)、电极:小的是正极,大的是负极;
2)、引脚:长的是正极,短的是负极(长正短负)
4、LED模块原理图
注:
- 电阻大小的读法:102 = 10 00=1k;473 = 47 000 = 47k;1001 = 100 0=1k。
- 电阻的作用:是用来限流。
- 使用TTL来表示高低电平。高电平:5V,低电平:0V。
5、单片机控制硬件(单片机)的原理
CPU通过配置控制的寄存器P2(0/1)来控制硬件电路(高低电平),(PS:该过程还要经过驱动器驱动)
2、如下图所示:我们给P2第0个位置0,对应低电平,LED低接低高接高,第一个D1 LED灯亮,其余不亮。
6、进制转换
二、设计程序
1、点亮一个led灯。
#include <REGX52.H>void main()
{P2=0x55; //1111 1110while(1){// 停在这里了}}
2、LED闪烁(500毫秒闪一次)
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){P2 = 0xFE;Delay500ms();P2 = 0xFF;Delay500ms();}
}
3、流水灯
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){P2=0xFE; // 1111 1110Delay500ms();P2 = 0xFD; // 1111 1101Delay500ms();P2=0xFB; // 1111 1011Delay500ms();P2 = 0xF7; // 1111 0111Delay500ms();P2=0xEF; // 1110 1111Delay500ms();P2 = 0xDF; // 1101 1111Delay500ms();P2 = 0xBF; // 1011 1111Delay500ms();P2 = 0x7F; // 0111 1111Delay500ms();}
}
4、改进流水灯
#include <REGX52.H>
void Delay1ms(unsigned int xms) //@12.000MHz
{unsigned char i, j;while(xms){i = 12;j = 169;do{while (--j);} while (--i);xms = xms -1;}}void main()
{while(1){P2=0xFE; // 1111 1110Delay1ms(1000);P2 = 0xFD; // 1111 1101Delay1ms(100);P2=0xFB; // 1111 1011Delay1ms(1000);P2 = 0xF7; // 1111 0111Delay1ms(100);P2=0xEF; // 1110 1111Delay1ms(1000);P2 = 0xDF; // 1101 1111Delay1ms(100);P2 = 0xBF; // 1011 1111Delay1ms(1000);P2 = 0x7F; // 0111 1111Delay1ms(100);}
}
三、参考文献
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)-腾讯云开发者社区-腾讯云