微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > printf函数输出的值怎么不对(按键数码管显示)

printf函数输出的值怎么不对(按键数码管显示)

时间:10-02 整理:3721RD 点击:

#include <AT89X51.H>
#include <stdio.h>
#define datepart  P0
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
sbit key5=P3^4;
sbit key6=P3^5;
sbit key7=P3^6;
sbit key8=P3^7;
sbit latchwei=P2^1;
sbit latchduan=P2^0;
unsigned char duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned tempdate[8];
void init_timer0(void);
void display(unsigned char firstbit,unsigned char Num);
void delay(unsigned int t);
unsigned char keyscan(void);
void init_uart();
//////////////主函数
void main(void)
{
unsigned char num,i,j;
unsigned char temp[8];
init_uart();
init_timer0();

while(1)
{
num=keyscan();
   
delay(20000);
if(num)    //每个此语句下执行一次
{
  if(i<8)
  {
   temp=duan[num];//把第一个数字放在第一位
   tempdate[7-i]=temp;
      
   }
   i++;

  if(i==9)
  {
   i=0;
   for(j=0;j<8;j++)
   {
   tempdate[j]=0;
   }
   
  }
  TI=1;
printf("the number is %d\n",num);  ///////此句在串口通信上输出的值怎么是256.。1280.。而不是1.2.3  ?
TI=0;
  }

}
}
/////////////////延时函数
void delay(unsigned int t)
{
  for(;t!=0;t--);
  }
void init_timer0()
{
TMOD|=0X01;
EA=1;
ET0=1;
TR0=1;
}
///////////////////定时器中断函数
void timer_int()interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
display(0,8);
}
/////////////////按键扫描函数
unsigned char keyscan(void)
{
//1
if(!key1)
{
delay(1000);
if(!key1)
{
  while(!key1);
  return 1;
  }
  }
//2
else if(!key2)
{
delay(1000);
if(!key2)
{
  while(!key2);
  return 2;
  }
  }
//3
else if(!key3)
{
delay(100);
if(!key3)
{
  while(!key3);
  return 3;
  }
  }
//4
else if(!key4)
{
delay(1000);
if(!key4)
{
  while(!key4);
  return 4;
  }
  }
//5  
else if(!key5)
{
delay(1000);
if(!key5)
{
  while(!key5);
  return 5;
  }
  }
  
  //6
  else if(!key6)
{
delay(1000);
if(!key6)
{
  while(!key6);
  return 6;
  }
  }
//7   
else if(!key7)
{
delay(1000);
if(!key7)
{
  while(!key7);
  return 7;
  }
  }
  
//8
  else if(!key8)
{
delay(1000);
if(!key8)
{
  while(!key8);
  return 8;
  }
  }
else
  return 0;
  }
////////////////////显示函数
void display(unsigned char firstbit,unsigned char Num)
{
  static unsigned char i=0;
  datepart=0;
  latchduan=1;
  latchduan=0;
  datepart=wei[i+firstbit];
  latchwei=1;
  latchwei=0;
  datepart=tempdate;
  latchduan=1;
  latchduan=0;
i++;
if(i==Num)
i=0;
}
////////串口初始化函数
void init_uart(void)
{
SCON=0x50;
TMOD|=0X20;
TH1=0XFD;
TL0=0XFD;
TR1=1;
}



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top