1. 为什么单片机上第一个发光二极管是0xfe还有其他的灯呢分别是什么
和发光二极管的接法有关,二极管阴极端连单片机,输出低电平0就会点亮,0xfe对应的引脚信号为11111110,其中的0就是输出给第一个发光二极管阴极端的低电平信号。其他的灯对应的输出低电平编码信号同样点亮。
例如:假设单片机的P0口接了八个LED,其中JPP0接的是高电平5V,而L0.0到L0.7接的分别是P0.7到P0.0这样的话如果P0.7到P0.0上电平是高电平,那么这个led的压降就是0,led不亮,如果P0.7到P0.0上电平是低电平,那么led上就会产生压降,led就会亮。
#include<reg51.h> /*包含单片机寄存器的头文件*/
void main(void){while(1){P0=0xfe; /*第一个灯亮*/ P0=0xff; /*第一个灯灭*/}}
P0=0xfe,相当于P0=11111110,这时候P0.0=0,灯L0.7亮,然后P0=0xff,相当于P0=11111111,这时候P0.0=1,灯L0.7灭,然后由于这两句是放在while(1)中的由于其中1是while{}中的语句执行的条件,由于1始终为真,所以这两句循环执行。灯L0.7就在不断闪烁,亮灭。
(1)单片机fe什么意思扩展阅读:
相关发光二极管引脚点亮编码:
原理:给二极管阳极和阴极加上正向电压时,二极管导通。 当给阳极和阴极加上反向电压时,二极管截止。 因此,二极管的导通和截止,则相当于开关的接通与断开。
0XFE=1111 1110 表示一个灯亮。0xfd = 1111 1101 第二个灯亮。0xfb = 1111 1011 第三个灯亮。0xf7 = 1111 0111 第四个灯亮。0xef = 1110 1111 第五个灯亮。0xdf = 1101 1111 第六个灯亮。0xbf = 1011 1111 第七个灯亮。0x7f = 0111 1111 第八个灯亮。
2. 单片机矩阵按键扫描为什么用if判断两次
好好看书,这是延时消抖,按键刚按下时会有一个不稳定过程,似接非接,会出现高低电平的几次跳变,如果只检测一次低电平就认为按键按下了,会出现两种情况,一是按一次被当作多次,二是某些偶尔的干扰也可能被当作按键按下。延时10到20ms,真正按下按键就稳定了,如果是干扰第二次判断不可能仍是低电平。
3. 单片机中为什么 P1=0xfe,中的f是P1^0-p1^3,
P1口8条线,P1^0到P1^7,0xfe是16进制表示:1111 1110 前面4位是f,后面4位是e,8421原则