mxxddi 2021-06-24 09:31 采纳率: 50%
浏览 17
已采纳

51单片机用4*4键盘跟8位数码管相接,怎么改变键值输入的方向,现在是从左至右要改成从右至左

#include <reg51.h>
#include "intrins.h"
#define LBIT P0     
#define LNUM P2     
#define IO_KEY P1   
unsigned char code ledTab[]={0x3F,0x06,0x5B,0x4F,
	                           0x66,0X6D,0X7D,0X07,
	                           0X7F,0X6F,0X77,0X7C,
                             0x39,0x5E,0x79,0x71,
                             0x76,0x73,0x38,0x3e,0x00};//´æ·ÅLEDµÄµãÕóÂë
unsigned char code tabIndex[]={0xfe,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsigned char Num[8]={20,20,20,20,20,20,20,20};

void Delay_us(unsigned int time)
{
	while(time--);
}
void dynamicLed(unsigned char Counter,unsigned char Ligh)
{
	unsigned char i;
	for(i=0;i<Counter;i++)
	{
		LBIT=tabIndex[i%8];
		LNUM=ledTab[Num[i]%21];
		Delay_us(Ligh);
		LNUM=0x00;
	}
}
unsigned char scanKey()
{
unsigned char temp,tempCode,i=0;
unsigned char LastCode=0;
tempCode=0x00;
IO_KEY=0x0F;
temp=IO_KEY;
if((temp&0x0F)!=0x0F)
{
	Delay_us(200);
	
  temp=0xF7;
  while(i<4)
		{
			temp=_crol_(temp,1);
      IO_KEY=temp;
      tempCode=IO_KEY&0x0f;
			if(tempCode!=0x0F)
				{
					switch(tempCode)
						{
							case 0x0E:
			        LastCode=LastCode+0;
		          break;
		          case 0x0D:
			        LastCode=LastCode+1;
		          break;
		          case 0x0B:
			        LastCode=LastCode+2;
		          break;
		          case 0x07:
			        LastCode=LastCode+3;
		          break;
		          default:
			        LastCode=LastCode+0;
		          break;
						}
						IO_KEY=0x0F;
						temp=IO_KEY;
						while((temp&0x0F)!=0x0F)
							{
								IO_KEY=0x0F;
								temp=IO_KEY;
	            }
							break;
				}
				i++;
				LastCode+=4;
		}
}
else
	LastCode=16;
  return LastCode;         
}
void main(void)
{
	unsigned char tempkey,i;
	while(1)
	{
		tempkey=scanKey();
		if(tempkey!=16)       
		{
			for(i=0;i<7;i++)
			{
				Num[i]=Num[i+1];
			}
			Num[7]=tempkey;
		}
		dynamicLed(8,10);
	}
}

展开全部

  • 写回答

1条回答 默认 最新

  • 智者知已应修善业 2021-06-24 10:02
    关注

    简单得很把键值头尾对调即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部