找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9012|回复: 10
收起左侧

单片机+无源蜂鸣器实现音乐—世上只有妈妈好 视频演示Proteus仿真程序

  [复制链接]
ID:564842 发表于 2019-6-17 18:00 | 显示全部楼层 |阅读模式
视频演示如下:
0.png

仿真原理图如上图(proteus仿真工程文件可到本帖附件中下载)

单片机源程序如下:
  1. #include <reg51.h>sbit speaker=P2^4;
  2. sbit key1=P3^4;
  3. unsigned char timer0h,timer0l,time,led=1,j=0;
  4. unsigned char flagd=0;
  5. //世上只有妈妈好数据表
  6. code unsigned char sszymmh[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
  7. 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
  8. 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
  9. 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
  10. 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0
  11. } ;
  12. // 音阶频率表 高八位
  13. code unsigned char FREQH[]={
  14. 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
  15. 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
  16. 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
  17. 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
  18. } ;
  19. // 音阶频率表 低八位
  20. code unsigned char FREQL[]={
  21. 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
  22. 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
  23. 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
  24. 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
  25. };

  26. void delay(unsigned char t)
  27. {
  28.          unsigned char t1;
  29.          unsigned long t2;
  30.          for(t1=0;t1<t;t1++)
  31.          {
  32.                 for(t2=0;t2<8000;t2++)
  33.                  {
  34.                          ;
  35.                  }
  36.          }
  37.          TR0=0;
  38. }

  39. void t0int() interrupt 1
  40. {
  41.          TR0=0;
  42.          speaker=!speaker;
  43.          TH0=timer0h;
  44.          TL0=timer0l;
  45.          TR0=1;
  46. }

  47. void song()
  48. {
  49.          TH0=timer0h;
  50.          TL0=timer0l;
  51.          TR0=1;
  52.          delay(time);
  53. }

  54. void main(void)
  55. {
  56.          unsigned char k,i;
  57.          TMOD=1; //置CT0定时工作方式1
  58.          EA=1;ET0=1;//IE=0x82 //CPU开中断,CT0开中断
  59.          while(1)
  60.          {
  61.                  i=0;
  62.                  time=1;
  63.                  while(time)
  64.                  {
  65.                          if(j==8)
  66.                          {
  67.                                  //led=1;
  68.                                  j=0;flagd=~flagd;
  69.                                  if(flagd)
  70.                                  {
  71.                                                  led=0x80;
  72.                                  }
  73.                                 else
  74.                             {
  75.                                                 led=1;
  76.                                 }
  77.                          }
  78.                          else
  79.                          {
  80.                                  P1=~led;
  81.                                  if(flagd)
  82.                                  {
  83.                                          led=led>>1;
  84.                                  }
  85.                                  else
  86.                                  {
  87.                                          led=led<<1;
  88.                                  }
  89.                                  j++;
  90.                          }
  91.                          k=sszymmh[i]+7*sszymmh[i+1]-1;
  92.                          timer0h=FREQH[k];
  93.                          timer0l=FREQL[k];
  94.                          time=sszymmh[i+2];
  95.                          i=i+3;

  96.                          if(key1==0){
  97.                                  song();
  98.                                 }
  99.                  }
  100.          }
  101. }
复制代码

0.png
全部资料51hei下载地址:
无源蜂鸣器-世上只有妈妈好.zip (3.39 MB, 下载次数: 144)

评分

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

查看全部评分

回复

使用道具 举报

ID:537038 发表于 2019-7-1 11:03 | 显示全部楼层
顶顶顶,谢谢楼主
回复

使用道具 举报

ID:575725 发表于 2019-7-1 15:46 | 显示全部楼层
真牛逼,学习了。
回复

使用道具 举报

ID:651111 发表于 2019-12-3 00:09 来自手机 | 显示全部楼层
为什么我用这个程序生成的.hex文件仿真响不了
回复

使用道具 举报

ID:656903 发表于 2019-12-6 17:05 | 显示全部楼层
巴巴 发表于 2019-12-3 00:09
为什么我用这个程序生成的.hex文件仿真响不了

请问解决了吗
回复

使用道具 举报

ID:653693 发表于 2019-12-6 22:27 来自手机 | 显示全部楼层
谢谢楼主,顶顶顶
回复

使用道具 举报

ID:79874 发表于 2019-12-10 18:38 来自手机 | 显示全部楼层
程序编译后不响骗人的
回复

使用道具 举报

ID:773295 发表于 2020-6-8 20:46 | 显示全部楼层
谢谢,楼主
回复

使用道具 举报

ID:774208 发表于 2020-6-9 17:40 | 显示全部楼层
wuyb2012 发表于 2019-7-1 15:46
真牛逼,学习了。

用的是什么?SRC89C52吗?
回复

使用道具 举报

ID:776404 发表于 2020-6-11 16:57 | 显示全部楼层
巴巴 发表于 2019-12-3 00:09
为什么我用这个程序生成的.hex文件仿真响不了

试着把两个引脚改成P3^1
回复

使用道具 举报

ID:910293 发表于 2021-5-6 14:34 | 显示全部楼层
想学习一下,下载一下.......
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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