跪求高手单片机做声控灯程序!!谢谢!!!

跪求高手单片机做声控灯程序!!谢谢!!!,第1张

给你个程序

#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 Program

while(1)

{

  if(sound>threshold)

  {

    LED_Close()

  }

  else

  {

    LED_Open()

  }

  delay_second(10)

}

你的声音过来是什么值,AD采集到的模拟量还是IIS之类的数字量,驱动那部分肯定要你自己写,官网里面肯定有例程,MPLAB里面应该也有驱动生成工具。

灯是开关量控制,IO口高低电平驱动三极管或者MOS或者继电器来驱动灯。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7871651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存