单片机论坛

标题: 求助啊 [打印本页]

作者: 2613    时间: 2019-5-22 09:44
标题: 求助啊
要求如果按下两个按钮红灯亮数码管显示FF要怎么搞啊
#include <reg51.h>
char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char key_buf[]={0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0xe7,0xd7,0xb7};
sbit P3_0=P3^0;
sbit P3_1=P3^1;
void getKey() interrupt 0
{
char key_scan[]={0xef,0xdf,0xbf,0x7f};
char i=0,j=0,c=0;
  int a=0;
for(i=0;i<4;i++)
{
  P2=key_scan[i];
  for(j=0;j<12;j++)
  {
   if(key_buf[j]==P2)
   {
    P3_0=0;
    if(j<10)
    {
      P0=led_mod[0];
      P1=led_mod[j];
    }
    else if(j>=10)
    {
      P0=led_mod[j/10];
      P1=led_mod[j%10];
    }
    a++;
    break;
   }
  }
   if(a>1)
    {
     P3_0=1;
     P3_1=0;
     P0=0x71;
     P1=0x71;
     break;
         }
}
a=0;
P2=0x0f;
}
void main(void)
{
IT0=1;
EX0=1;
EA=1;
P2=0x0f;
P0=0x00;
P1=0x00;
P3_0=1;
P3_1=1;
while(1)
{
  if(P2==0x0f)P3_0=1;
  if(P2==0x0f)P3_1=1;
  }
}

批注 2019-05-22 093910.png (257.46 KB, 下载次数: 7)

批注 2019-05-22 093910.png

批注 2019-05-22 093910.png (257.46 KB, 下载次数: 6)

批注 2019-05-22 093910.png

作者: suncat0504    时间: 2019-5-28 21:47
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};,表示的是0-9的笔段对应,你最好加上A,b,C,d,E,F对应的。
作者: suncat0504    时间: 2019-5-28 21:49
我的这个;unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x10};设置的是0-9,A,b,C,d,E,F,-,_这几个字符的
作者: 2613    时间: 2019-5-29 08:12
suncat0504 发表于 2019-5-28 21:47
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0 ...

在那个if语句里面,我是单独赋值的没有加到数组里面
作者: ffggg    时间: 2019-6-7 22:46
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};,表示的是0-9的笔段对应,你最好加上A,b,C,d,E,F对应的。
作者: durantyin    时间: 2019-6-29 14:13
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};,表示的是0-9的笔段对应,你最好加上A,b,C,d,E,F对应的。
作者: matthewroy    时间: 2019-7-2 16:15
逻辑分析一下
作者: 1194783151    时间: 2019-7-12 12:31
可以用4*4的16位矩阵按键试试,F对应的数码管是0x71,0-F有16位,要是需要每个按键对应显示的话可以接矩阵按键试试




欢迎光临 单片机论坛 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1