P1.5接蜂鸣器,P3.2接按键K1,开启外部中断,利用定时器T0在蜂鸣器引脚上产生一千赫兹和两千赫兹的方波,使蜂鸣器发出两种不同音调的声音,两种音调各持续0.1秒,初始状态蜂鸣器安静,按下K1蜂鸣器开始发声,再按下按键,蜂鸣器安静,以此反复
时间: 2023-06-13 19:02:17 浏览: 101
以下是基于8051单片机的C语言程序实现:
```c
#include <reg52.h> //头文件
sbit buzzer = P1^5; //定义蜂鸣器引脚
sbit key = P3^2; //定义按键引脚
void delay(int time) //延时函数
{
int i, j;
for(i = 0; i < time; i++)
for(j = 0; j < 110; j++);
}
void buzzerOn(int frequency) //打开蜂鸣器函数
{
int i;
TMOD = 0x01; //定时器0工作在模式1
TH0 = 256 - (11059200 / frequency / 12); //计算定时器初值
TL0 = TH0; //初值赋给低8位
TR0 = 1; //启动定时器0
for(i = 0; i < 10; i++) //持续0.1秒
{
while(!TF0); //检测定时器溢出标志
TF0 = 0; //清除定时器溢出标志
TH0 = 256 - (11059200 / frequency / 12); //重新赋初值
TL0 = TH0; //初值赋给低8位
}
TR0 = 0; //关闭定时器0
}
void main()
{
while(1)
{
if(key == 0) //按键被按下
{
delay(10); //去抖动
if(key == 0) //再次检测按键状态
{
buzzerOn(1000); //打开1000赫兹蜂鸣器
delay(100); //延时100毫秒
buzzerOn(2000); //打开2000赫兹蜂鸣器
delay(100); //延时100毫秒
}
while(key == 0); //等待按键释放
}
else
buzzer = 0; //关闭蜂鸣器
}
}
```
程序运行时,单片机检测按键状态,如果按键被按下,蜂鸣器会发出1000赫兹和2000赫兹的方波声音,各持续0.1秒,然后等待按键释放,否则蜂鸣器保持静音状态。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)