微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机键盘输入数码管循环显示

51单片机键盘输入数码管循环显示

时间:10-02 整理:3721RD 点击:
望高人指点一下,该程序如何来编写,谢谢啦!

【要求】键盘编码排列如图所示,当首次键按下按键时,在第一位LED数码管中显示出键盘编码值,当第二次按下键时,前一次键移动到第二个数码管显示,本次键值在第一个数码管显示,以此类推。当输入数据超过6个时,最先输入的数据抛弃。


哈哈,这个好办,我原来写过这样的程序,下面是我的程序,相信你看一下程序就知道思路了
       DisTable[5]=DisTable[4];
       DisTable[4]=DisTable[3];
       DisTable[3]=DisTable[2];
       DisTable[2]=DisTable[1];   
       DisTable[1]=DisTable[0];
       DisTable[0]=InNumber;
InNumber就是你输入的数字,这样就实现了你要求的功能了

这么好 可是图呢

我也想做这个

也在学习中啊!

void diszf()          //处理转换给数码管显示字符
{
int freq;          
bit nums=1;
unsigned long tmp;
l_tmpdate[0]=freq/10000000;
tmp=freq/10000000;
if(tmp==0 && nums)l_tmpdate[0]=12;
else
{
nums=0;
}
tmp=freq%10000000;
l_tmpdate[1]=tmp/1000000;
if(l_tmpdate[1]==0 && nums)l_tmpdate[1]=12;
else
{
nums=0;
  }
tmp=tmp%1000000;
l_tmpdate[2]=tmp/100000;
if(l_tmpdate[2]==0 && nums)l_tmpdate[2]=12;
else
  {
nums=0;
  }
tmp=tmp%100000;
l_tmpdate[3]=tmp/10000;
if(l_tmpdate[3]==0 && nums)l_tmpdate[3]=12;
else
  {
nums=0;
  }
tmp=tmp%10000;
l_tmpdate[4]=tmp/1000;
if(l_tmpdate[4]==0 && nums)l_tmpdate[4]=12;
else
  {
nums=0;
  }
tmp=tmp%1000;
l_tmpdate[5]=tmp/100;
if(l_tmpdate[5]==0 && nums)l_tmpdate[5]=12;
else
{
nums=0;
}
tmp=tmp%100;
l_tmpdate[6]=tmp/10;
if(l_tmpdate[6]==0 && nums)l_tmpdate[6]=12;
  else
  {
nums=0;
  }
tmp=tmp%10;
l_tmpdate[7]=tmp%10;
}
怎么解释?
谢谢

能不能详细点!
谢谢!
还有就是你帮我解释一下下边的程序么?
针对51开发板的。
void diszf()          //处理转换给数码管显示字符
{
int freq;          
bit nums=1;
unsigned long tmp;
l_tmpdate[0]=freq/10000000;
tmp=freq/10000000;
if(tmp==0 && nums)l_tmpdate[0]=12;
else
{
nums=0;
}
tmp=freq%10000000;
l_tmpdate[1]=tmp/1000000;
if(l_tmpdate[1]==0 && nums)l_tmpdate[1]=12;
else
{
nums=0;
  }
tmp=tmp%1000000;
l_tmpdate[2]=tmp/100000;
if(l_tmpdate[2]==0 && nums)l_tmpdate[2]=12;
else
  {
nums=0;
  }
tmp=tmp%100000;
l_tmpdate[3]=tmp/10000;
if(l_tmpdate[3]==0 && nums)l_tmpdate[3]=12;
else
  {
nums=0;
  }
tmp=tmp%10000;
l_tmpdate[4]=tmp/1000;
if(l_tmpdate[4]==0 && nums)l_tmpdate[4]=12;
else
  {
nums=0;
  }
tmp=tmp%1000;
l_tmpdate[5]=tmp/100;
if(l_tmpdate[5]==0 && nums)l_tmpdate[5]=12;
else
{
nums=0;
}
tmp=tmp%100;
l_tmpdate[6]=tmp/10;
if(l_tmpdate[6]==0 && nums)l_tmpdate[6]=12;
  else
  {
nums=0;
  }
tmp=tmp%10;
l_tmpdate[7]=tmp%10;
}

二楼说出思路了………………

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top