51单片机蜂鸣器实现唱歌二个老虎(不用定时器的代码),有无人可以我这个cn给解答一下
3条回答 默认 最新
- qllaoda 2023-04-07 17:00关注
不用定时器就直接用空循环延时,也能达到这个效果,只是这样就不能干别的事情了,否则影响频率
当然,上面那个代码是不能用的,可以改成下面这样,当然,和频率有关的延时,还有持续时间对应的延时,需要根据具体硬件调整一下,这个就自己搞吧。
#include <reg51.h> // 定义蜂鸣器连接的IO口 #define BUZZER P1 // 定义延时函数 void delay(unsigned int ms) { unsigned int i; for (i = 0; i < ms; i++) } code int tone_table[] = {1,2,4....};//各个频率对应的延时 } // 发出一个声音tone,持续时间len void beep(unsigned int len, unsigned char tone) { int i; for(i = 0;i<len;i++){ BUZZER = 0x01; // 将蜂鸣器IO口置1 delay(tone_table[tone]); // 延时一定时间 BUZZER = 0x00; // 将蜂鸣器IO口置0 delay(tone_table[tone]); } void main() { // 唱歌二个老虎 beep(1000, 1);.........//谱子 while(1); // 程序停止,防止复读 }
解决 1无用
悬赏问题
- ¥15 ecplise在连接数据库时显示加载驱动成功但是数据库连接失败
- ¥15 visionmaster启动失败,提示为“机器不满足授权而被禁用”
- ¥50 用logisim设计16位单时钟周期cpu
- ¥15 IDEA中圈复杂度如何具体设置
- ¥50 labview采集不了数据
- ¥15 Multisim红外倒车雷达仿真中距离问题
- ¥15 请上面代码做什么处理或什么混淆
- ¥15 英雄联盟自定义房间置顶
- ¥15 W5500网线插上无反应
- ¥15 如何用字典的Key,显示在WPF的xaml中