声控拍手开关电路原理图

这个简单的拍击开关方案的完整电路图如下所示。内部比较器模块的正和负输入分别可通过GP0/CIN +和GP1/CIN-引脚从外部访问。由于正输入连接到内部基准电压源,因此GP1引脚可用作I/O引脚。传感器放大器的输出将到达GP0/CIN +引脚。LED连接到GP5引脚以指示单片机的开关动作。当单片机连续检测到两个拍手声时,它将在GP5引脚上切换逻辑输出。LED在这里用于说明目的,如果您想用它来控制电器,可以用机电继电器代替。

使用PIC单片机制的简单拍手开关

声控拍手开关程序

该程序用C语言开发,并使用MikroC Pro进行PIC编译器编译。程序以1.5秒的间隔连续寻找两个拍手声。如果发生这种情况,则将GP5引脚切换。当检测到拍手时,Timer1模块将打开以保持时间记录。 1.5秒后,它将生成一个超时信号。如果在此之前没有第二个拍手,则单片机将忽略第一个拍手,并返回到主程序。

sbit Output_LED at GP5_bit;

unsigned short i, TIME_UP;

void interrupt(void){

if(PIR1.TMR1IF) {

i ++;

if(i == 3) TIME_UP = 1; // Time Up in 1.5 sec

PIR1.TMR1IF = 0;

}

}

void main() {

TRISIO = 0b00000011 ;

ANSEL = 0x00;

INTCON = 0b11000000 ; // Enable GIE and PEIE for Timer1 overflow interrpt

PIE1 = 0b00000001 ; // Enable TMR1IE

// Configure Comparator module

// CIN- pin is configured as analog,

// CIN+ pin is configured as I/O,

// COUT pin is configured as I/O,

// Comparator output available internally,

// CVREF is non-inverting input

// CINV is set to 1

CMCON0 = 0b00010100;

VRCON = 0b10100011; // Vref is set to VDD/8

Output_LED = 0;

do{

TMR1H = 0x00;

TMR1L = 0x00;

TIME_UP = 0;

i = 0;

T1CON = 0b00110000; // Configure Timer 1

if(CMCON0.COUT){ // First clap detected

Delay_ms(100);

T1CON.TMR1ON = 1; // Start Timer1

while(!CMCON0.COUT && !TIME_UP); // Wait until second clap is

T1CON.TMR1ON = 0; // detected or Timer1 overflows

if(CMCON0.COUT && !TIME_UP) Output_LED = ~Output_LED;

Delay_ms(100);

}

} while(1);

}

关于电子制作就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查