这是一篇 2017–2018 年的嵌入式学习笔记,保留当时的工具、代码和实验过程。 查看系列目录。
1
| 科普:LED的开启电压是2V,反向击穿电压是5v,工作电压约为3v,通常正向电流为10~20mA,当电流在3~10mA时,led亮度与电压成反比。电流超过30mA的时候,led会烧毁,一般串联300欧姆左右的电阻。
|
windows下仿真程序(proteus+keilc)
点亮一个灯
proteus的仿真图:
原图(暂不可用)
点亮一个灯
keilc的代码如下:
1 2 3 4 5 6
| #include <reg51.h> void main() { P1 = 0; while(1); }
|
led闪烁
原图(暂不可用)
led闪烁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <reg51.h>
#define uint unsigned int #define uchar unsigned char
sbit led P1^0
void delay(uint timer) { uchar j = 124; while(timer--) { while(j--); } }
void main() { while(1) { led = ~led; delay(100); } }
|
心形流水灯
原图(暂不可用)
心形流水灯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <reg51.h>
#define uint unsigned int #define uchar unsigned char
uchar code led[] = { 0xfe, 0xfd,0xfb,0xf7, 0xef, 0xdf,0xbf,0x7f};
void delay(uint timer) { uchar j = 124; while(timer--) { while(j--); } }
void main() { uchar i=0 ; while(1) { P1 = led[i]; i = (i+1)%8; delay(50); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <reg51.h>
#define uint unsigned int #define uchar unsigned char
uchar code led[] = { 0xfe, 0xfd,0xfb,0xf7, 0xef, 0xdf,0xbf,0x7f};
void delay(uint timer) { uchar j = 124; while(timer--) { while(j--); } }
void main() { uchar i=0 ; while(1) { for(i = 0; i<8;i++) { P1 = led[i]; delay(70); } } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <reg51.h>
#define uint unsigned int #define uchar unsigned char
void delay(uint timer) { uchar j = 124; while(timer--) { while(j--); } }
void main() { uchar i; while(1) { for(i = 0;i<8;i++) { P1 = ~(1<<i); delay(200); } } }
|
原图(暂不可用)