找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2320|回复: 0
收起左侧

51单片机检测低电平时间

[复制链接]
ID:344365 发表于 2018-6-4 07:47 来自触屏版 | 显示全部楼层 |阅读模式
我在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;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表