[求助] 关于51单片机小程序的问题

就说忘了   2014-7-19 22:06 楼主
我写的这个程序是  在4*4键盘上 通过按前三个键,来控制自加的函数  暂停和清零    但是按键始终不起作用;这是为什么   我刚学。大神给看一看.
这是程序
#include
unsigned char duan_xuan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char wei_xuan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xbf,0xdf,0x7f};
char temp,key;
int m,n,l,s;
void delay(unsigned int i)
{
        unsigned int j;
        while(i--)
        {
                for(j=0;j<125;j++)       
                {
                        ;
                }
        }               
}
        void key_scan()
        {       
               
                {
                        if(temp!=0xf0)
                          {               
                                          delay(10);
                                        if(temp!=0xf0)
                                       
                                        {
                                                  switch(P1)
                                  {       
                                                  case 0xee:           //0按下//
                                                        key=0;                                                          
                                                        break;                                               
                                                case 0xde:
                                                        key=1;       
                                                        break;
                                                case 0xbe:
                                                        key=2;
                                                        break;
                                   }                       
                                       
                                        }
                          }
               
                }
       
        }

void display(int s)
       
        {  
                switch (key)
{       
                case 0:
                for(s=0;s<1000;s++)
               
                {
               
                        m=s/100;                  //   显 示 要 求 数字
                        n=s%100/10;
                        l=s%10;
                        P2=wei_xuan[2];
                        P0=duan_xuan[m];               
                        delay(1);
                        P2=wei_xuan[1];
                        P0=duan_xuan[n];          
                        delay(1);
                        P2=wei_xuan[0];
                        P0=duan_xuan[l];               
                        delay(1);
                        if(key==1)
                                {
                                        break;
                                }                                                 
                 }
                 break;

        case 1:
                        while(1)
                 {
                         P2=wei_xuan[2];
                        P0=duan_xuan[m];
                        delay(1);
                        P2=wei_xuan[1];
                        P0=duan_xuan[n];          
                        delay(1);
                        P2=wei_xuan[0];
                        P0=duan_xuan[l];
                        delay(1);       
                         if(key==2) break;                 
                }
                  break;
        case 2:
                        while(1)
                        {
                                P2=wei_xuan[2];
                                P0=duan_xuan[0];
                                delay(1);
                                P2=wei_xuan[1];
                                P0=duan_xuan[0];          
                                delay(1);
                                P2=wei_xuan[0];
                                P0=duan_xuan[0];
                                delay(1);
                        }
                        break;       
           }
        }
        void main()
        {
                  while(1)
                {
                         key_scan();
                        display(key);               
                }
        }
               
         
                 
               

回复评论 (6)

keypeizhiyinjiaole???
点赞  2014-7-21 13:37
switch(P1)
                                  {        
                                                  case 0xee:           //0按下//这里不是0xef?下面也是
                                                        key=0;                                                         
                                                        break;                                                
                                                case 0xde:
                                                        key=1;        
                                                        break;
                                                case 0xbe:
                                                        key=2;
                                                        break;
                                   }                        
点赞  2014-7-21 19:53
引用: 曾经in 发表于 2014-7-21 19:53
switch(P1)
                                  {        
                                            ...

为什么是0xef     0xee不是4*4键盘的第一个键吗?
点赞  2014-7-22 20:12
引用: 常见泽1 发表于 2014-7-21 13:37
keypeizhiyinjiaole???

什么引脚?
点赞  2014-7-22 20:13
电路和程序能对应吗?
昵称:灰小子
点赞  2014-7-23 08:17
引用: 就说忘了 发表于 2014-7-22 20:12
为什么是0xef     0xee不是4*4键盘的第一个键吗?

好吧没看清
程序里好像没给temp赋值?
点赞  2014-7-23 08:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复