找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机模拟音乐-世上只有妈妈好

[复制链接]
跳转到指定楼层
楼主
ID:191077 发表于 2017-6-18 17:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机 世上只有妈妈好:
实验4 模拟音乐-世上只有妈妈好.rar (30.97 KB, 下载次数: 14)


  1. /*********************************************************************************
  2. * 【实验平台】: QX-MCS51 单片机开发板
  3. * 【外部晶振】: 11.0592mhz       
  4. * 【主控芯片】: STC89C52RC
  5. * 【编译环境】: Keil μVisio4       
  6. * 【程序功能】: 无源蜂鸣器测试-世上只有妈妈好                                                                                           
  7. * 【使用说明】: 使用前请接上J1跳线帽
  8. **********************************************************************************/

  9. #include <reg52.h>   
  10. #define uchar unsigned char
  11. sbit      beep=P3^6;          //定义蜂鸣器输出端口
  12. uchar timer0h,timer0l,time;

  13.                          //世上只有妈妈好  数据表
  14. code uchar sszymmh[]={6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,
  15.                       6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,
  16.                       6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,
  17.                       5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,
  18.                       2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0
  19.                                       };
  20.                          // 音阶频率表 高八位
  21. code uchar FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
  22.                     0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
  23.                     0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
  24.                     0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;
  25.                          // 音阶频率表 低八位
  26. code uchar FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
  27.                     0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
  28.                     0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
  29.                     0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};
  30. void delay(uchar t)                  // 延时函数
  31. {
  32.         uchar t1;
  33.         unsigned long t2;
  34.         for(t1=0;t1<t;t1++)
  35.         {
  36.                 for(t2=0;t2<8000;t2++);
  37.         }
  38.         TR0=0;
  39. }
  40. void song()                                 //  音乐处理函数
  41. {
  42.         TH0=timer0h;
  43.         TL0=timer0l;
  44.         TR0=1;
  45.         delay(time);                       
  46. }
  47. /******************************************************************
  48.                                           主函数                                      
  49. ******************************************************************/
  50. void main(void)
  51. {
  52.         uchar k,i;
  53.         TMOD=1;                         //置CT0定时工作方式1
  54.         EA=1;
  55.         ET0=1;                                //IE=0x82 //CPU开中断,CT0开中断
  56.         while(1)
  57.         {
  58.                 i=0;  
  59.                 while(i<100)                                  //音乐数组长度 ,唱完从头再来  
  60.                 {              
  61.                         k=sszymmh[i]+7*sszymmh[i+1]-1;
  62.                         timer0h=FREQH[k];
  63.                         timer0l=FREQL[k];
  64.                         time=sszymmh[i+2];
  65.                         i=i+3;
  66.                         song();
  67.                 }
  68.         }
  69. }
  70. void t0int() interrupt 1                //定时器中断函数
  71. {
  72.         TR0=0;
  73.         beep=!beep;
  74.         TH0=timer0h;
  75.         TL0=timer0l;
  76.         TR0=1;
  77. }
复制代码


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

使用道具 举报

沙发
ID:773295 发表于 2020-6-11 11:19 | 只看该作者
为什么仿真图打不开
回复

使用道具 举报

板凳
ID:231922 发表于 2024-4-12 20:38 | 只看该作者
感谢楼主分享,下载下来学习一下。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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