蜂鸣器响应

#include

 

// 定义数码管段选引脚

sbit SEG_A = P2^0;

sbit SEG_B = P2^1;

sbit SEG_C = P2^2;

sbit SEG_D = P2^3;

sbit SEG_E = P2^4;

sbit SEG_F = P2^5;

sbit SEG_G = P2^6;

sbit SEG_DP = P2^7;

 

// 定义按键引脚

sbit KEY1 = P3^0;

// 假设只有一个按键,若多个按键可继续扩展

 

// 定义D1灯引脚

sbit D1 = P1^0; 

// 定义蜂鸣器引脚

sbit Buzzer = P1^1; 

 

// 数码管0 - 9的段码表

unsigned char code SEG_CODE[] = {

    0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F

}; 

 

void delay(unsigned int time) {

    unsigned int i, j;

    for(i = 0; i < time; i++)

        for(j = 0; j < 1275; j++);

}

 

void main() {

    while(1) {

        if(KEY1 == 0) { // 检测按键是否按下

            delay(10); // 消抖

            if(KEY1 == 0) { 

                // 点亮D1灯

                D1 = ~D1; 

                // 蜂鸣器发声

                Buzzer = 0; 

                delay(100); 

                Buzzer = 1; 

                // 数码管显示按键编号(假设这里是1,若多个按键需区分)

                SEG_A = SEG_CODE[1] & 0x01;

                SEG_B = (SEG_CODE[1] >> 1) & 0x01;

                SEG_C = (SEG_CODE[1] >> 2) & 0x01;

                SEG_D = (SEG_CODE[1] >> 3) & 0x01;

                SEG_E = (SEG_CODE[1] >> 4) & 0x01;

                SEG_F = (SEG_CODE[1] >> 5) & 0x01;

                SEG_G = (SEG_CODE[1] >> 6) & 0x01;

                SEG_DP = (SEG_CODE[1] >> 7) & 0x01;

                while(!KEY1); // 等待按键释放

            }

        }

    }

}

 

 

 

 

#include
   sbit BEEP = P2^5;  // 蜂鸣器
   sbit D1 = P1^0;    // LED
   sbit KEY = P3^2;   // 按键

   void delay(unsigned int t) {
       while(t--);
   }

   void main() {
       while(1) {
           if(!KEY) {           // 检测按键按下
               D1 = ~D1;        // LED状态翻转
               BEEP = 1;        // 蜂鸣器响
               delay(50000);   // 延时控制“滴”声长度
               BEEP = 0;        // 关闭蜂鸣器
               // 此处添加数码管显示代码(如P0 = 0x06;显示“1”)
           }
       }
   }

 

 

你可能感兴趣的:(网络)