#include <reg51.h>
sbit LED_PORT = P1^0
void InitialMain(void)
void Delay1s(void)
int main(void)
{
InitialMain()
while (1)
}
void InitialMain(void)
{
LED_PORT = 0
EX0 = 1
EA = 1
}
void EX0_INT(void) interrupt 0
{
EA = 0
LED_PORT = 1
Delay1s()
Delay1s()
Delay1s()
Delay1s()
Delay1s()
LED_PORT = 0
EA = 1
}
void Delay1s(void)
{
unsigned char h, i, j, k
for (h = 5h >0h --)
for (i = 4i >0i --)
for (j = 116j >0j --)
for (k = 214k >0k --)
}
说明:声音传感器我没用过,不知道它是怎么工作的。这个程序的功能是,当P3.0k口来一个低电平时,P1.1口的LED灯就亮5秒(12MHZ)然后熄灭。
假设你有XPT2046的源程序,且上面这段代码可以正常采集AD则只需修改main函数
sbit led=//引脚定义
#define VALUE//某个经验值
void main(void)
{
uint temp,count
while(1)
{
if(count==50)
{
count=0
temp = Read_AD_Data(0xE4) // AIN3 外部输入
if(temp>VALUE)led=0;//判断大于某个分贝则led亮,否则灭
else led=1;
}
count++
DisplayData[0]=DIG_CODE[0]
DisplayData[1]=DIG_CODE[0]
DisplayData[2]=DIG_CODE[0]
DisplayData[3]=DIG_CODE[0]
DisplayData[4]=DIG_CODE[temp%10000/1000]
DisplayData[5]=DIG_CODE[temp%1000/100]
DisplayData[6]=DIG_CODE[temp%100/10]
DisplayData[7]=DIG_CODE[temp%10/1]
DigDisplay()
}
}
//Demo Programwhile(1)
{
if(sound>threshold)
{
LED_Close()
}
else
{
LED_Open()
}
delay_second(10)
}
你的声音过来是什么值,AD采集到的模拟量还是IIS之类的数字量,驱动那部分肯定要你自己写,官网里面肯定有例程,MPLAB里面应该也有驱动生成工具。
灯是开关量控制,IO口高低电平驱动三极管或者MOS或者继电器来驱动灯。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)