独立按键控制LED灯显示二进制数

1.构思;

八个流水灯,每个灯的亮灭刚好对应八位二进制数的0、1,也就是两位十六进制数

灯亮,表示1,灯灭,表示0

2.原理图:

由于单片机共四个IO口,每个IO口八个引脚,默认为高电平,直接给IO口整体赋值,刚好对应八位二进制数,即两位十六进制数

如果要满足亮灯表示1,灭灯表示0,就需要对初值进行取反操作

用八个LED能显示出他的状态

3.代码实现:
#include <REGX52.H>
#define uint unsigned int
#define uchar unsigned char


//延时函数
void delay(uint xms)
{
	uint x,y;
	for(x=xms;x>0;x--)
	{
		for(y=0;y<110;y++);
	}
}


void main()
{
	uchar num=0x00;//也可以为num=0,或者不进行赋值,num默认为0
	while(1)
	{
		if(P3_1==0)
		{
			delay(10);//按键按下消抖
			while(P3_1==0);
			delay(10);//按键松手消抖
			
			num++;
			P2=~num;
            //对初值进行取反,满足1亮0灭
            //如果在计数前取反,因为num初始值为0,所以第一下按钮没有反应
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值