GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。通过软件控制GPIO输出的高低电平,可以完成点亮LED等行为。
对于型号为STC89C52的51单片机,一共有40个引脚,其中有32个是GPIO引脚,分为4组,称作P0,P1,P2,P3,每组一共有8个引脚,可用Pi.j表示(i是组号,j是0-7)。每个引脚可以通过配置相应的寄存器来设置高低电平,实现其功能。同一时刻,一个引脚只能实现它的一个功能。
LED 即发光二极管。它具有单向导电性,通过 5mA 左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管。
在51单片机中,每个LED灯都有串联着一个电阻,用于限制电流。
单片机从左往右8个LED灯D1-D8,各自的阴极分别对应GPIO引脚P20-P27。当它们为低电平时,LED灯就会各自亮起来。
每一个引脚有自己的寄存器空间,当在寄存器中的值为0时,对应的引脚就是低电平,否则就是高电平。
在regx52.h头文件中,已经用变量P2定义了寄存器地址。P2刚好占1个字节,首地址(第一位)就是P20,以此类推,第i位就是P2(i-1)的值。
将此代码生成得到的hex文件下载至单片机,可以看见第一个led灯亮了。
因此得知,在代码层面,led的亮起由p2变量保存的值决定,它占一个字节,每位的0/1决定对应led负极的低/高电平。当负极为低电平时,led灯就会亮起。
还可以这样写,将P2的每一位用sbit类型取出来,单独控制:
这段代码与上面的代码现象一致。
注意,单片机在执行程序时,在main函数执行完成后,会重头再执行main函数。因此led灯会常亮。
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪