找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1556|回复: 3
收起左侧

单片机独立按键控制LED显示二进制

[复制链接]
ID:1046502 发表于 2022-10-2 22:23 | 显示全部楼层 |阅读模式
在独立按键控制LED显示二进制的程序中
#include <REGX52.H>

void Delay(unsigned int xms)               
{
        unsigned char i, j;
        while(xms)
        {
                i = 2;
                j = 199;
                do
                {
                        while (--j);
                } while (--i);
                xms--;
        }

}

void main()
{
        unsigned char LEDNUM=0;
        while(1)
        {
                if(P3_1==0)
                {
                        Delay(20);
                        while(P3_1==0);
                        Delay(20);
                        
                        LEDNUM++;
                        P2=~LEDNUM;
                }
        }
}

LEDNUM++;
P2=~LEDNUM;这是什么意思?LEDNUM是数字,P2可以是数字取反吗?
为什么LED就显示二进制了?




回复

使用道具 举报

ID:213173 发表于 2022-10-3 08:21 | 显示全部楼层
LEDNUM是字符型变量,数据范围二进制表示:00000000-11111111,假设LEDNUM=5,二进制表示:00000101,取反成11111010,赋值给P2,P2接有8个LED,P2.0、P2.2低电平点亮LED。不就显示二进制码了。
回复

使用道具 举报

ID:121859 发表于 2022-10-3 09:26 | 显示全部楼层
之所以这么处理,是与LED的接法有关的,在这里,点亮LED灯要送“低”电平,所以为了用点亮的LED灯来表示变量的“大小”状态,就需要取反了,比如,为1时,点亮第一个灯,那么需要送1111 1110,而数据时0000 0001。
回复

使用道具 举报

ID:123289 发表于 2022-10-8 10:40 | 显示全部楼层
取反是因为LED的接法是0亮1暗。而又想用1亮。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表