用单片机采集空调数码管的内容

2019-07-15 18:37发布

想用单片机采集数码管显示的内容,并且用串口传给PC,谁有类似案例提供,不甚感激!!本人自己也写了一个,但是一直调试不出显示内容。(P1口接三个片选,P0口接7段数码管,数码管为共阳极)。QQ:81484302


#include <AT89X52.H>
#include "UART.h"
#define  PData  P0   //数码管内容检测信号
#define  Power1  P1^0  //A1-G1电源检测信号
#define  Power2  P1^1  //A2-G2电源检测信号
#define  Power3  P1^2  //L1-L7电源检测信号
void delay(uint16 loop)
{for(;loop--;);}
void InitPort()
{
   PData=0xFF;
   P1=0xff;
}
code uint8 Wenzi[7][10]={"百分比","摄氏度","制冷","制热","健康","除湿","定时"};
void main()
{
uint8 i;
bit Flag1,Flag2,Flag3,Send_flag;
uint8 Dat1,Dat2,Dat3;
uint8 Last1,Last2,Last3;
delay(10000);
InitUART();       //串口初始化
InitPort();       //管脚初始化
Flag1=Flag2=Flag3=1;
Prints("Here we go");
while(1)
{
Flag1=Flag2=1;Send_flag=0;
while(Flag1|Flag2|Flag3)
while(Flag1|Flag2)
{
  if((~Power1)&&Power2) {Flag2=0;Dat2=PData;}
  if(Power1&&(~Power2)) {Flag1=0;Dat1=PData;}
//  if(~Power3)         {Flag3=0;Dat3=PData;}
// }
    Send_flag=1;
// if(Last1!=Dat1)  {Send_flag=1;Last1=Dat1;}
// if(Last2!=Dat2)  {Send_flag=1;Last2=Dat2;}
// if(Last3!=Dat3)  {Send_flag=1;Last3=Dat3;}

if(Send_flag)
{   
   switch(Last1)
  {
   case 0xBF : Dat1=0;
       break;
  
   case 0x86 : Dat1=1;
       break;
   case 0xDB : Dat1=2;
       break;
   case 0xCF : Dat1=3;
       break;
   case 0xE6 : Dat1=4;
       break;
   case 0xED : Dat1=5;
       break;
   case 0xFD : Dat1=6;
       break;
   case 0x87 : Dat1=7;
       break;
   case 0xFF : Dat1=8;
       break;
   case 0xEF : Dat1=9;
       break;
   default  : Dat1=8;
       break;
  }
  
  switch(Last2)
  {
   case 0xBF : Dat2=0;
       break;
  
   case 0x86 : Dat2=1;
       break;
   case 0xDB : Dat2=2;
       break;
   case 0xCF : Dat2=3;
       break;
   case 0xE6 : Dat2=4;
       break;
   case 0xED : Dat2=5;
       break;
   case 0xFD : Dat2=6;
       break;
   case 0x87 : Dat2=7;
       break;
   case 0xFF : Dat2=8;
       break;
   case 0xEF : Dat2=9;
       break;
   default  : Dat2=8;
       break;
  }
  }
  PrintLongInt(Dat1*10+Dat2);
  
/*  for(i=8;i>1;i--)
  {
   Dat3<<i;
   if(CY==0) Prints(Wenzi[8-i]);
  }
*/ }
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。