打印

请高手帮忙看看这程序

[复制链接]
1982|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fantasy_cz|  楼主 | 2007-4-26 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是8952单片机,这个程序的功能是实现键盘输入显示功能,像电话机那样,P0口是键盘口,P1口是段码口,P2.0~ P2.3是动态扫描口,共用了四个数码管,
问题在于我将它放入proteus中仿真时,所有的管子只显示同一个数字,不知道问题在哪???请高手指点迷津。小弟先行谢过了。
#include<reg51.h>
#include<stdio.h>
Uart_Init();
int nKeyNumber;
sbit P00=0x80;
sbit P01=0x81;
sbit P02=0x82;
sbit P03=0x83;
sbit P04=0x84;
sbit P05=0x85;
sbit P06=0x86;
sbit P07=0x87;
sbit P32=0xb2;
char Table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};段码
sbit P20=0xa0;
sbit P21=0xa1;
sbit P22=0xa2;
sbit P23=0xa3;
char TelephoneNu[12]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a};初始号码
 Updata_led(nKeyNumber);有键按下时运行函数
void Data_led();显示函数
main()
{   
    while(1)
    {      nKeyNumber=0xff;
        P2=0x00;
        P00=0;
        P01=0;
        P02=0;
        P03=0;
        EX0=1;
        EA=1;
         if(nKeyNumber==0xff)
         Data_led();
           else
          {  Updata_led(nKeyNumber);
            Data_led();
            nKeyNumber=0xff;
          }
       }
}
  
  void int0()  interrupt 0  using 0    中断
  {   
       int  i,j;
       int Pin1;
           EX0=0;
           for(i=0;i<4;i++)
              for(j=0;j<4;j++)
                {
                  P0=0xff&(~(0x01<<(3-i)));
                    Pin1=P0;
                     if(((Pin1>>(4+j))&0x01)==0)
                     {nKeyNumber=i+j*4;
                       return;
                      }
                 }
        EX0=1;
    }
     Updata_led(nKeyNumber)有键按下时将第一位放入TelephoneNu[0]中其于的依次移位
    {   int k,n;
              n=10;        
        for(k=11;k>0;k--)
          {   TelephoneNu[n+1]=TelephoneNu[n];
              --n;
           }
          TelephoneNu[0]=nKeyNumber;
    }
          void Data_led()   动态扫描显示
        { int Number;
          P20=1;
          Number=TelephoneNu[0];
          P1=Table[Number];
          P20=0;
          P21=1;
          Number=TelephoneNu[1];
          P1=Table[Number];
          P21=0;
          P22=1;
          Number=TelephoneNu[2];
          P1=Table[Number];
          P22=0;
          P23=1;
          Number=TelephoneNu[3];
          P1=Table[Number];
          P23=0;
       }

相关帖子

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

本版积分规则

2

主题

4

帖子

0

粉丝