//在数码管上显示字符6,按下外部按键中断0(S5)则8左移动,按下外部按键中断1(S4)则8右移动。
#include<reg52.h>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char key,keyvalue,y,adress;
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
//			       0	1     2   3    4     5    6    7   8
void delay(unsigned char n) 
{
	unsigned char j;
	while(n--)
	{
		for(j=0;j<123;j++);
	}	
}
void init0()
{
	IT0=1;
	EX0=1;
	IT1=1;
	EX1=1;
	EA=1;		
} 
void keyscan(void)//按键扫描
{
	key=0x0f;
	if(key!=0x0f)
	{
		delay(10);
		if(key!=0x0f)
		{
			key=0x0f;
			switch(key)//line
			{
				case(0x07):keyvalue=0;break;
				case(0x0b):keyvalue=1;break;
				case(0x0d):keyvalue=2;break;
				case(0x0e):keyvalue=3;break;
			}
			key=0xf0;
			switch(key)//
			{
				case(0x70):keyvalue=keyvalue;break;
				case(0xb0):keyvalue=keyvalue+4;break;
				case(0xd0):keyvalue=keyvalue+8;break;
				case(0xe0):keyvalue=keyvalue+12;break;
			}
			while((y<30)&&(key!=0xf0))
			{
				delay(10);y++;
			}
	
		}
			 		 	
	}		   
}
void weizhi(void)//数码管位选
{
	switch(adress)
	{
		case(0):LSC=0;LSB=0;LSA=0;break;
		case(1):LSC=0;LSB=0;LSA=1;break;
		case(2):LSC=0;LSB=1;LSA=0;break;
		case(3):LSC=0;LSB=1;LSA=1;break;
		case(4):LSC=1;LSB=0;LSA=0;break;
		case(5):LSC=1;LSB=0;LSA=1;break;
		case(6):LSC=1;LSB=1;LSA=0;break;
		case(7):LSC=1;LSB=1;LSA=1;break;
	}
}
void int0() interrupt 0	   //s5左移
{
	EX0=0;
	if(keyvalue==4)
	{
		delay(1);
		if(keyvalue==4)
		{
			adress++;	
		}
	}
	EX0=1;	
}
void int1() interrupt 2	   //s4右移
{	
	EX1=0;
	if(keyvalue==3)
	{
		delay(1);
		if(keyvalue==3)
		{
			adress--;	
		}
	}
	EX1=1;
}
void main()
{	
	
	init0();
	adress=0;
	while(1)
	{	
		keyscan();
		weizhi();
		P0=smgduan[6];	
	}	
}共5条
1/1															1							跳转至页
		求助!按键不能实现数码管卫位移
 
					
				只看楼主 1楼
                               							共5条
1/1															1							跳转至页
		回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |


 
			
			
			
						
			 
					
				 
					
				
 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

