LED(light-emitting diode),即发光二极管,俗称 LED 小灯。板子上一般用的是普通的贴片发光二极管,具有单向导电性。工作电流一般在 1mA~20mA 之间,电流越大LED小灯会越亮,若电流过大,会烧坏LED小灯。因此需要串联一个电阻,达到限流作用,这个电阻通常称为“限流电阻”。发光二极管通常又分为直插式(长脚为阳极,短脚为阴极
)和贴片式(彩色标记一端为阴极
)两种。
LED灯点亮原理
以清翔QX-mini51开发板
为例,流水灯模块为8个贴片LED灯。
根据提供的原理图可以看出,8个LED灯左侧接电源VCC(5V或3.3V),右侧接排阻和单片机P10~P17
引脚。因为单片机是可以编程控制的,如果让 P10
这个引脚输出一个高电平(1),则LED1
左右两侧电压相同,没有电压差就不会产生电流,所以LED1
小灯就不会亮;如果让P10
这个引脚输出一个低电平(0),电路导通就会有电流通过,LED1
小灯因为有了电流通过,所以就会直接发光。其它LED等同理。
点亮LED灯
单片机编程完成I/O口控制:
- 低电平:
0
;高电平:1
。单片机在一上电时,所有I/O口默认为高电平状态。 P1
为8个LED灯全部I/O口,P1^0 ~ P1^7
分别对应LED1 ~ LED8
的I/O口。- 可使用十六进制形式控制八个LED灯,例:
P1=0xaa(二进制:10101010)
表示LED1、LED3、LED5、LED7灭; LED2、LED4、LED6、LED8亮
1 | /********************************************************************************* |
流水灯
使用位移方法进行流水等控制
位移操作
<< 左移
最高位丢弃,最低位补0,其余位依次左移 移位前是:11110110,移位后:11011010>> 右移
最低位丢弃,最高位补0,其余位依次右移 移位前是:11110110,移位后:00111101
循环位移函数
_cror_(x,y)
含义是二进制数x右移动y位_crol_ 循环左移
最高位移入最低位,其余位依次左移 移位前是:11110110,移位后:11101101_cror_ 循环右移
最低位移入最高位,其余位依次右移 移位前是:11110110,移位后:01111011
while(1)循环用法
- C语言中,0为假,非0为真。所以while(1)判断表达式为真,会一直执行循环。
while(1) 后接循环体程序
一直执行循环体程序。while(1);放在程序最后
一直执行这条语句且无法跳出循环,从而达到程序停止效果。注意有分号;
1 | /********************************************************************************* |