我在P3^2接了一个声音传感器模块,有声音时就会输出低电平,平时数码管不亮,有声音是数码管就显示45116然后不断闪烁,没有后又熄灭,该怎么解决?诚心求教,程序如下。
#include<reg52.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA = P0^0;
sbit LSB = P0^1;
sbit LSC = P0^2;
#define LED P1
sbit Get = P3^2;
unsigned long count = 0;
bit testswitch = 0;
unsigned long time;
u8 smg[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴
u8 DisplayData[8];
void delay(u16 i)
{
while(i--);
}
void start()
{
TMOD=0x50;
TH1=0x3C;
TL1=0xB0;
EX0=1;
ET1=1;
IT0=0;
EA=1;
}
void Display()
{
u8 i;
for(i = 0;i < 8;i++)
{
switch(i)
{
case(0):
LSA = 0;LSB = 0;LSC = 0;break;
case(1):
LSA = 1;LSB = 0;LSC = 0;break;
case(2):
LSA = 0;LSB = 1;LSC = 0;break;
case(3):
LSA = 1;LSB = 1;LSC = 0;break;
case(4):
LSA = 0;LSB = 0;LSC = 1;break;
case(5):
LSA = 1;LSB = 0;LSC = 1;break;
case(6):
LSA = 0;LSB = 1;LSC = 1;break;
case(7):
LSA = 1;LSB = 1;LSC = 1;break;
}
LED = DisplayData[i];
delay(100);
LED = 0x00;
}
}
void main()
{
start();
while(1)
{
TR1 = 0;
if(testswitch == 1)
{
time = count*50000;
time += TL1;
time += (TH1*256);
DisplayData[0] = smg[time%100000000/10000000];
DisplayData[1] = smg[time%10000000/1000000];
DisplayData[2] = smg[time%1000000/100000];
DisplayData[3] = smg[time%100000/10000];
DisplayData[4] = smg[time%10000/1000];
DisplayData[5] = smg[time%1000/100];
DisplayData[6] = smg[time%100/10];
DisplayData[7] = smg[time%10];
TL1 = 0x3C;
TH1 = 0xB0;
}
Display();
}
}
void Timer() interrupt 3
{
TH1 = 0x3C;
TL1 = 0xB0;
count++;
}
void Test() interrupt 0
{
delay(1000);
TR1 = 1;
count = 0;
while(Get == 0);
TR1 = 0;
testswitch = 1;
} |