关于51单片机小程序的问题

2019-03-24 18:15发布

我写的这个程序是  在4*4键盘上 通过按前三个键,来控制自加的函数  暂停和清零    但是按键始终不起作用;这是为什么   我刚学。大神给看一看.
这是程序
#include<reg52.h>
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条回答
常见泽1
1楼-- · 2019-03-24 20:17
keypeizhiyinjiaole???
曾经in
2楼-- · 2019-03-25 00:12
 精彩回答 2  元偷偷看……
就说忘了
3楼-- · 2019-03-25 00:37
曾经in 发表于 2014-7-21 19:53
switch(P1)
                                  {        
                                            ...

为什么是0xef     0xee不是4*4键盘的第一个键吗?
就说忘了
4楼-- · 2019-03-25 02:02
常见泽1 发表于 2014-7-21 13:37
keypeizhiyinjiaole???

什么引脚?
exiao
5楼-- · 2019-03-25 02:14
 精彩回答 2  元偷偷看……
曾经in
6楼-- · 2019-03-25 05:36
就说忘了 发表于 2014-7-22 20:12
为什么是0xef     0xee不是4*4键盘的第一个键吗?

好吧没看清
程序里好像没给temp赋值?

一周热门 更多>