如果是STC89C52单片机,led接在P2口,低电平点亮,那么初始化P2=0XFF; 此时用>>1的方法,是不是就把led依次点亮了,并保持亮了呢。
数码管结构分:
段 (由abcdefgh 8个LED组成的图形,如1,2,3,4,5,6,7,8,9,A,B,C,D,E,F等等图形)和 位 (其实就是数码管的共阳或共阴的公共点)。数码管极性分:共阴(位共低电平),共阳(位共高电平)
如果是共阳数码管,那么位就是阳极(电源正极或单片机IO输出高电平),段就是8个LED的阴极,如果把段接到P1口(abcdefgh->P10~P17),P1=0X00; 数码管就是显示一个8,并且右下角有个小数点。如果要显示一个8,不显小数点,那么就是给h段一个高电平,P1=0x80;(1000 0000),一个数码管显示8的数码管就亮了。代码实现就是:
P37=1;// (接通数码管位电源) P1=0X80;// (给段数据显示8) 。然后延时一下,保持数码管亮1MS左右,P37=0;//位关闭,消除鬼影。
要其它数码管亮起来,根据数码管数量就不停地重复上面的代码,每个数码管都会显示8。
不同的IO控制不同的位为1就显示对应的一位数码管,给段不同的数据,那么数码管就显示不同的图形了。
|