找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 37264|回复: 60
打印 上一主题 下一主题
收起左侧

蜂鸣器音乐源代码

  [复制链接]
跳转到指定楼层
#
亲,这是用单片机控制的可发出几种音乐的源代码,好好使用。



单片机源码:
  1. #include <reg52.h>
  2. sbit   speaker = P1^7;
  3. unsigned char timer0h, timer0l, time;
  4. //--------------------------------------
  5. //单片机晶振采用11.0592MHz
  6. // 频率-半周期数据表高八位     本软件共保存了四个八度的28个频率数据
  7. code unsigned char FREQH[] = {
  8.     0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,    //低音1234567
  9.     0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
  10.     0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            //高音 234567
  11.     0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};   //超高音 1234567

  12. // 频率-半周期数据表 低八位
  13. code unsigned char FREQL[] = {
  14.     0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,    //低音1234567
  15.     0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i
  16.     0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,             //高音 234567
  17.     0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};   //超高音 1234567
  18. //--------------------------------------
  19. //世上只有妈妈好数据表           要想演奏不同的乐曲, 只需要修改这个数据表
  20. code unsigned char sszymmh[] = {
  21. 6, 2, 3,  5, 2, 1,  3, 2, 2,  5, 2, 2,  1, 3, 2,  6, 2, 1,  5, 2, 1,
  22. 6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1, 5, 2, 2, 3, 2, 2, 1, 2, 1,
  23. 6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5, 2, 2,
  24. 5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4, 5, 2, 3, 3, 2, 1,
  25. 2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0};
  26. //--------------------------------------

  27. void t0int() interrupt 1         //T0中断程序,控制发音的音调
  28. {
  29.     TR0 = 0;                     //先关闭T0
  30.     speaker = !speaker;          //输出方波, 发音
  31.     TH0 = timer0h;               //下次的中断时间, 这个时间, 控制音调高低
  32.     TL0 = timer0l;
  33.     TR0 = 1;                     //启动T0
  34. }
  35. //--------------------------------------
  36. void delay(unsigned char t)     //延时程序,控制发音的时间长度
  37. {
  38.     unsigned char t1;
  39.     unsigned long t2;
  40.     for(t1 = 0; t1 < t; t1++)    //双重循环, 共延时t个半拍
  41.       for(t2 = 0; t2 < 8000; t2++); //延时期间, 可进入T0中断去发音
  42.     TR0 = 0;                        //关闭T0, 停止发音
  43. }
  44. //--------------------------------------
  45. void song()                      //演奏一个音符
  46. {
  47.     TH0 = timer0h;               //控制音调
  48.     TL0 = timer0l;
  49.     TR0 = 1;                     //启动T0, 由T0输出方波去发音
  50.     delay(time);                 //控制时间长度
  51. }
  52. //--------------------------------------
  53. void main(void)
  54. {
  55.     unsigned char k, i;
  56.     TMOD = 1;                    //置T0定时工作方式1
  57.     ET0 = 1;                     //开T0中断
  58.     EA = 1;                      //开CPU中断
  59.     while(1) {
  60.       i = 0;
  61.       time = 1;
  62.       while(time) {
  63.         k = sszymmh[i] + 7 * sszymmh[i + 1] - 1;
  64.                       //第i个是音符, 第i+1个是第几个八度
  65.         timer0h = FREQH[k];      //从数据表中读出频率数值
  66.         timer0l = FREQL[k];      //实际上, 是定时的时间长度
  67.         time = sszymmh[i + 2];   //读出时间长度数值
  68.         i += 3;
  69.         song();                  //发出一个音符
  70. }   } }

复制代码




蜂鸣器 音乐.zip

845.89 KB, 下载次数: 657, 下载积分: 黑币 -5

这是我整理的用单片机控制的可发出几种声音的源代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

来自 60#
ID:155070 发表于 2016-12-15 17:57 | 只看该作者
真是太棒了,非常好,不仅学会了这个东西,也见识了好的程序的注释及格式,感谢。
回复

使用道具 举报

来自 59#
ID:215978 发表于 2017-6-30 00:21 | 只看该作者
世上只有妈妈好的数据表是怎么写的?根据简谱在每两个音之间就有多余的两项2,1或2,2或1,1之类的,两个音之间的两个数字代表了什么?
回复

使用道具 举报

58#
ID:692350 发表于 2020-2-12 10:57 | 只看该作者
UCAS 发表于 2017-6-30 00:21
世上只有妈妈好的数据表是怎么写的?根据简谱在每两个音之间就有多余的两项2,1或2,2或1,1之类的,两个音 ...

第一个是音符 第二个是音高 第三个是拍子
回复

使用道具 举报

57#
ID:579046 发表于 2019-7-19 16:17 | 只看该作者
请问音长(发声的时间长度)是怎么看的?
回复

使用道具 举报

56#
ID:537732 发表于 2019-5-14 10:40 | 只看该作者
号,是否好, 真是太棒了,非常好,不仅学会了这个东西,也见识了好的程序的注释及格式,感谢。
回复

使用道具 举报

55#
ID:73182 发表于 2019-3-23 10:26 | 只看该作者
真是太棒了
回复

使用道具 举报

54#
ID:477983 发表于 2019-3-23 09:53 | 只看该作者
非常好,
回复

使用道具 举报

53#
ID:382367 发表于 2018-8-3 04:05 | 只看该作者
学习了
回复

使用道具 举报

52#
ID:343102 发表于 2018-8-2 22:07 | 只看该作者
谢谢分享,下来玩玩
回复

使用道具 举报

51#
ID:95072 发表于 2018-8-2 17:46 | 只看该作者
赞一个
回复

使用道具 举报

50#
ID:342711 发表于 2018-6-4 20:16 | 只看该作者
真是太棒了,非常好,不仅学会了这个东西,也见识了好的程序的注释及格式,感谢
回复

使用道具 举报

49#
ID:318304 发表于 2018-5-20 00:47 来自触屏版 | 只看该作者
楼主讲讲数据表是怎么用的吧
回复

使用道具 举报

48#
ID:269181 发表于 2017-12-30 13:45 | 只看该作者
很6  一再在做这种
回复

使用道具 举报

47#
ID:269091 发表于 2017-12-30 10:45 | 只看该作者
很好,可以发声,就是那个数据表不知道怎么弄,楼主可以解释一下吗?
回复

使用道具 举报

46#
ID:269036 发表于 2017-12-30 00:30 来自触屏版 | 只看该作者
感觉挺有用。。自己试试
回复

使用道具 举报

45#
ID:268805 发表于 2017-12-29 12:55 | 只看该作者
厉害厉害,简单实用
回复

使用道具 举报

44#
ID:236254 发表于 2017-12-25 21:18 | 只看该作者
什么情况?
回复

使用道具 举报

43#
ID:1 发表于 2017-6-30 00:31 | 只看该作者
GUOPK 发表于 2016-12-16 21:12
请问是有源的还是无源蜂鸣器???

都可以发声但是无源的蜂鸣器效果更逼真,本人亲测的。
回复

使用道具 举报

42#
ID:193296 发表于 2017-4-25 09:48 | 只看该作者
为什么要加前面两个的低音和高音啊
回复

使用道具 举报

41#
ID:183845 发表于 2017-3-27 16:12 | 只看该作者
非常棒
回复

使用道具 举报

40#
ID:165930 发表于 2017-2-22 12:44 | 只看该作者
非常感谢,好资料!!
回复

使用道具 举报

39#
ID:155348 发表于 2016-12-16 22:24 | 只看该作者
认真思考,你可以
回复

使用道具 举报

38#
ID:60515 发表于 2016-12-16 21:12 来自触屏版 | 只看该作者
请问是有源的还是无源蜂鸣器???
回复

使用道具 举报

37#
ID:89286 发表于 2016-12-10 11:22 | 只看该作者
thans for sharing
回复

使用道具 举报

36#
ID:152442 发表于 2016-12-5 23:01 | 只看该作者
非常感谢分享,正是需要的时候
回复

使用道具 举报

35#
ID:99130 发表于 2016-12-5 21:25 | 只看该作者
软件不错 正好需要
回复

使用道具 举报

34#
ID:152133 发表于 2016-12-4 22:15 | 只看该作者
谢谢分享
回复

使用道具 举报

33#
ID:147796 发表于 2016-11-16 20:37 | 只看该作者
下不了
回复

使用道具 举报

32#
ID:147796 发表于 2016-11-14 19:58 | 只看该作者
硬件怎么联啊
回复

使用道具 举报

31#
ID:143374 发表于 2016-10-19 11:23 来自触屏版 | 只看该作者
谢谢楼主,刚好需要
回复

使用道具 举报

30#
ID:143297 发表于 2016-10-18 20:24 | 只看该作者
电路板就是最小系统加蜂鸣器吗?
回复

使用道具 举报

29#
ID:143297 发表于 2016-10-18 20:24 | 只看该作者
mark。谢谢分享
回复

使用道具 举报

28#
ID:140769 发表于 2016-10-18 19:27 | 只看该作者
声音有噪声怎么回事???
回复

使用道具 举报

27#
ID:128831 发表于 2016-7-1 16:51 | 只看该作者
谢楼主
回复

使用道具 举报

26#
ID:128797 发表于 2016-7-1 11:14 | 只看该作者
课设要用,拿来看看,谢谢楼主了
回复

使用道具 举报

25#
ID:79544 发表于 2016-6-7 21:46 | 只看该作者
楼主你好:取音软件怎么用啊?谢谢指教!
回复

使用道具 举报

24#
ID:125427 发表于 2016-6-7 09:08 | 只看该作者
感谢楼主分享
回复

使用道具 举报

23#
ID:120040 发表于 2016-5-11 14:49 | 只看该作者
感谢分享,我试试先 哈哈 ,谢谢了  
回复

使用道具 举报

22#
ID:113905 发表于 2016-4-13 10:34 | 只看该作者
没有金币怎么办
回复

使用道具 举报

21#
ID:113905 发表于 2016-4-13 10:33 | 只看该作者
发帖子有金币,下载附件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表