[51单片机]

数码管显示,其他都正常,第十二个显示不正常?

[复制链接]
674|2
手机看帖
扫描二维码
随时随地手机跟帖
黄华南同学|  楼主 | 2019-5-25 22:08 | 显示全部楼层 |阅读模式
希望大神帮我看看程序啥问题?还不怎么会发帖子

/*矩阵按键通过读取按键值表来分析出按键值并送去显示*/
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit dula=P2^0;
sbit wela=P2^1;
uchar code key_table[]={0xee,0xde,0xbe,0x7e,        //按键键值表
                        0xed,0xdd,0xbd,0x7d,
                                                0xeb,0xdb,0xbb,0x7d,
                                                0xe7,0xd7,0xb7,0x77};

uchar code table[]={0x3f,0x06,0x5b,0x4f,    //定义一个阴极数码管的编码表。
                    0x66,0x6d,0x7d,0x07,
                                0x7f,0x6f,0x77,0x7c,
                                        0x39,0x5e,0x79,0x71};
void delayms(uint xms)                        //延时子程序
{
uint i,j;
for(i=xms;i>0;i--)
    for(j=110;j>0;j--);
}
void display(uchar y)           //显示子程序
{
P0=table[y];
dula=1;
dula=0        ;
}
main()
{
uchar  temp,key,num,x;
P0=0x00;
dula=1;
dula=0;
P0=0x00;
wela=1;
wela=0;
while(1)
{
  P3=0xf0;
  if(P3!=0xf0)
  {
   delayms(10);
   if(P3!=0xf0)
   {
        temp=P3;
        P3=0x0f;
        key=temp|P3;
             for(x=0;x<16;x++)
                 if(key==key_table[x])
                 {
                  num=x;
                 break;
                 }
                display(x);
                delayms(100);/*这个延时可以加,也可以不加,加上仿真,
                              用肉眼可以看出程序在不断扫描,不加就看不出来,
                                          但是实际还是在扫描 */
   }
  }
}

}

使用特权

评论回复

相关帖子

黄华南同学|  楼主 | 2019-5-25 22:10 | 显示全部楼层
发帖带图片,我还不会,会的可以教我一下

使用特权

评论回复
叶春勇| | 2019-5-26 17:06 | 显示全部楼层
发帖,有个高级模式,在右下角,进入后,点附件。就可以。记得要上传。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

15

帖子

0

粉丝