想用
单片机采集数码管显示的内容,并且用串口传给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]);
}
*/ }
}
}
一周热门 更多>