C语言程序如何让蜂鸣器开口说话
大小:0.1 MB 人气: 2017-09-06 需要积分:0
简易电子琴实验
/* ch09-5-1.c- 简易电子琴实验 */#include
#define LED P1 // 定义LED位置
#define SW_Port P2 // 定义按键位置
sbit buzzer=P3^7; // 声明蜂鸣器位置
unsigned char keys; // 声明变量
/* 声明音阶阵列 -- Do Re Mi Fa So La Si Do_H */
unsigned char code tone[]= {115, 102, 91, 86, 77, 68, 61, 57 };
void sound(unsigned char); // 声明发声函数
void delay8us(unsigned char);// 声明延迟函数
//====主程序=====================================
main() // 主程序开始
{ while (1) // while循环
{ LED=SW_Port = 0xff; // 将LED关闭,SW_Port规划成输入埠
keys=~SW_Port; // 读取按键
switch (keys) // 判读
{ case 0x01:sound(0);break; // 按下S1,发Do音
case 0x02:sound(1);break; // 按下S2,发Re音
case 0x04:sound(2);break; // 按下S3,发Mi音
case 0x08:sound(3);break; // 按下S4,发Fa音
case 0x10:sound(4);break; // 按下S5,发So音
case 0x20:sound(5);break; // 按下S6,发La音
case 0x40:sound(6);break; // 按下S7,发Si音
case 0x80:sound(7);break; // 按下S8,发高音Do音
}
} // while循环结束
} // 主程序结束
//=====发声函数=============================
void sound(unsigned char x) // 发声函数开始
{ unsigned char i; // 声明变量
LED=SW_Port; // 点亮LED
for (i=0;i<60;i++) // 执行60次
{ buzzer=0; delay8us(tone[x]); // 蜂 器动作
buzzer=1; delay8us(tone[x]);} // 蜂 器不动作
LED=0xff; // 关闭LED
} // 结束
//======延迟函数==============================
void delay8us(unsigned char x) // 延迟函数开始
{ unsigned char i,j; // 声明变量
for (i=0;i
} // 结束
非常好我支持^.^
(1) 100%
不好我反对
(0) 0%