找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2868|回复: 0
收起左侧

蜂鸣器唱歌单片机源码

[复制链接]
ID:113177 发表于 2016-4-9 21:49 | 显示全部楼层 |阅读模式
蜂鸣器唱歌源码
  1. #include <reg51.h>
  2. sbit      speaker=P3^6;
  3. unsigned char timer0h,timer0l,time;
  4.         //生日歌
  5. code unsigned char sszymmh[]={

  6. 5,1,1, 1,2,3, 3,2,1, 5,2,3, 1,2,1, 7,1,3,
  7. 3,2,1, 5,2,2,  5,2,1, 6,2,1, 7,2,2, 1,3,3,
  8. 6,2,1, 6,2,1, 5,2,1, 5,2,6, 3,2,1, 2,2,1,

  9. 1,2,3, 1,2,1, 1,2,2, 3,2,1, 2,2,1, 1,2,3, 1,2,1,
  10. 1,2,2, 2,2,1, 3,2,1, 2,2,2, 1,2,1, 6,1,2, 2,2,1,
  11. 3,2,1, 2,2,6,  5,1,1,


  12. 2,2,3, 6,1,1, 7,1,2, 1,2,1, 2,2,1, 1,2,6, 3,2,1,
  13. 5,2,1, 3,2,3, 2,2,1, 1,2,2, 5,2,2, 7,1,6, 6,1,1,
  14. 7,1,1, 6,1,3, 7,1,1, 6,1,2, 5,1,2, 3,2,6, 5,2,2,


  15. 3,2,3, 2,2,1, 1,2,2, 5,2,2, 7,1,6, 6,1,1, 7,1,1,
  16. 1,2,3, 1,2,1, 1,2,2, 2,2,1, 3,2,1, 2,2,6,
  17. 5,1,1, 1,2,3, 3,2,1, 5,2,3, 1,2,1,


  18. 7,1,3, 3,2,1, 5,2,3, 5,2,2, 6,2,3, 7,2,1, 1,1,3,
  19. 6,2,1, 6,2,1, 5,2,1, 5,2,4, 3,2,1, 2,2,1, 1,2,3,
  20. 1,2,1, 1,2,2, 3,2,1, 2,2,1,


  21. 1,2,3, 1,2,1, 1,2,2, 2,2,1, 3,2,1, 2,2,3, 6,1,1,
  22. 7,1,2, 1,2,1, 2,2,1, 1,2,6
  23. };
  24.        // 音阶频率表 高八位
  25. code unsigned char FREQH[]={
  26.                                 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
  27.                                 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
  28.                                 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
  29.                                 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
  30.                                } ;
  31.          // 音阶频率表 低八位
  32. code unsigned char FREQL[]={
  33.                                  0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
  34.                                  0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
  35.                                  0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
  36.                                  0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
  37.                                 };
  38. void delay(unsigned char t)
  39.    {
  40.    unsigned char t1;
  41.    unsigned long t2;
  42.    for(t1=0;t1<t;t1++)
  43.    {
  44.     for(t2=0;t2<8000;t2++)
  45.        {
  46.         ;
  47.         }
  48.    }
  49.    TR0=0;
  50. }
  51. void t0int() interrupt 1
  52. {
  53. TR0=0;
  54. speaker=!speaker;
  55. TH0=timer0h;
  56. TL0=timer0l;
  57. TR0=1;
  58. }
  59. void song()
  60. {
  61. TH0=timer0h;
  62. TL0=timer0l;
  63. TR0=1;
  64. delay(time);                       
  65. }

  66. void main(void)
  67. {
  68. unsigned char k;
  69. unsigned long i;
  70. TMOD=1; //置CT0定时工作方式1
  71. EA=1;
  72. ET0=1;//IE=0x82 //CPU开中断,CT0开中断
  73. while(1)
  74.       {
  75.        i=0;  
  76.        while(i<324){         //音乐数组长度 ,唱完从头再来        
  77.        k=sszymmh[i]+7*sszymmh[i+1]-1;
  78.        timer0h=FREQH[k];
  79.        timer0l=FREQL[k];
  80.        time=sszymmh[i+2];
  81.        i=i+3;
  82.        song();
  83.         }
  84.       }
  85.   }
复制代码


蜂鸣器唱歌.zip

25.8 KB, 下载次数: 6, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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