51瞎搞系列---独立键盘+数码管

瞎写着玩玩。。。

/*******************************************************************************
* 实 验 名		 : 数码管+独立键盘实验
* 使用的IO	     : 数码管使用P0 独立键盘开关K1使用P3.1
* 实验效果       : 按开关K1使数码管从左侧由数字1亮至右侧8
* 注    意		 :
*******************************************************************************/
#include <reg52.h>
#include <intrins.h>
#define GPIO_LED P2
#define GPIO_DIG P0
#define uint unsigned int
#define uchar unsigned char
sbit K1=P3^1;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
void DIG_DISPLAY(uchar n,uchar num);
void Delay10ms();
void GO();
uint m=0,n=0,num=1;
void main()
{
	while(1)
	{
		GO();
	}
}
void Delay10ms()  
{  
    uchar i=38,j=130;  
    while(i--)  
        while(j--);  
}  
void DIG_DISPLAY(uchar n,uchar num)
{
	switch(n)
	{
		case 0:LSA=0;LSB=0;LSC=0;break;
		case 1:LSA=1;LSB=0;LSC=0;break;
		case 2:LSA=0;LSB=1;LSC=0;break;
		case 3:LSA=1;LSB=1;LSC=0;break;
		case 4:LSA=0;LSB=0;LSC=1;break;
		case 5:LSA=1;LSB=0;LSC=1;break;
		case 6:LSA=0;LSB=1;LSC=1;break;
		case 7:LSA=1;LSB=1;LSC=1;break;
	}
		GPIO_DIG=DIG_CODE[num];
}
void GO()
{
		DIG_DISPLAY(m,num);
		if(K1==0)
		{
			Delay10ms();
			if(K1==0)
			{
				++m;++num;
				if(m==8)m=0;
				if(num==9)num=1;
				while((n<50)&&(K1==0))
				{
					Delay10ms();
					++n;
				}
				n=0;
			}
		}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值