硬件电路
软件编写
①发出声音
#include "reg52.h"
typedef unsigned int u16; // 重新定义 类型
typedef unsigned char u8; // 重新定义 类型
sbit BEEP = P2^5; //定义 P2第五个管教 为BEEP
// 延时函数
void delay_time(u16 times)
{
while(times--);
}
void main()
{
u16 i = 2000; // 为什么定义这个 i , 这个i 是 执行多少次频率
while(1)
{
while(i--) // i 递减2000次 发出声音的时长
{
BEEP =!BEEP;
// ! 逻辑非运算 BEEP默认有上拉电阻,P2^5 是高电平 使用非运算 BEEP为0 低电平 ,等下一次循环还是为低 ,
// 低-高,一次循环 循环2000 次
delay_time(200); // 延时100ms
}
i =0;
// 2000次循环结束 将 i 清零
BEEP = 0;
// 循环结束 将BEEP 为低电平 关闭蜂鸣器
}
}
BEEP =! BEEP 为何使用 非运算,这里面 P2 的管脚默认 有上拉电阻,P2^5 输出高电平
每次循环 非运算一下 为低电平 ,产生那种评率 0 1 0 1 0 1 循环下去
②改变音色
BEEP = 0;
delay_time(100);
BEEP = 1;
delay_time(200);
// 改变音色 修改它的频率
// 改变频率 周期的 高低的周期 就是 高低电平的时间