| 希望大神帮我看看程序啥问题?还不怎么会发帖子  
 /*矩阵按键通过读取按键值表来分析出按键值并送去显示*/
 #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);/*这个延时可以加,也可以不加,加上仿真,
 用肉眼可以看出程序在不断扫描,不加就看不出来,
 但是实际还是在扫描 */
 }
 }
 }
 
 }
 |