找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16003|回复: 11
收起左侧

基于51单片机的无线音乐门铃设计

  [复制链接]
ID:347935 发表于 2018-6-8 23:36 | 显示全部楼层 |阅读模式
  采用STC89C51单片机作为主控制器,外部加上三极管驱动放音设备,超再生无线模块实现无线的链接。

制作出来的实物图如下:
0.png 0.png 0.png

0.png
遥控器采用PT2262编码芯片对信号编码,由超再生无线模块发射信号。

遥控器结构图:
0.png

电路原理图如下:
1437142_201408111828220423.png 1437142_201408111828200892.png

◆发射器采用电池供电,静态电流小;
◆采用无线电进行遥控,具有一定的遥控距离;
◆在同一区域范围内能有多套系统同时工作而相互间不影响;
◆门铃按键按下有音乐响起;
◆主机有复位按键,可以随时关闭音乐;
◆门铃的音乐为3首以上,可以通过程序更改。


pt2262与pt2272无线模块的焊接:
  • 将模块引脚的黑色塑料用偏口钳子剪掉
  • 将引脚折弯。这样就可以焊接在板子上了。
3、模块焊接好后,每个模块的ANT都要接一个23cm长的天线(导线就可以)。这样遥控距离更远!


无线音乐门铃元件清单:

接收:
1.7*9万用板
2.8欧喇叭
3.自锁开关
4.12m晶振
5.10k电阻
6.1k电阻*2
7.820k(振荡电阻)
8.30pf电容*2
9.22uf电容
10.40脚IC座
11.18脚IC座
12.PT2272-M4
13.3MM红色LED灯
14.stc89c51
15.315接收模块
16.4P母座
17.8550三极管
18.usb电源线+DC插头
发射:
1.    7*9万用板
2.18脚ic插座
3.PT2262
4.4.7m电阻(振荡电阻)
5.10k*2
6.3mm红色led灯
7.轻触按键
8.SIP3母座
9.315发射
10.电池
11.电池盒

单片机源码:
  1. include<REG51.H>
  2. #define sound_amount 5 // 歌曲的数量
  3. sbit pause=P2^5; // 播放 暂停
  4. sbit speaker=P2^7; // 无源蜂鸣器
  5. //////////////////////////////////////////////
  6. unsigned char timer0h,timer0l,time;//timer0h,timer0l 为定时器 T0的高低位初
  7. 值,time 为对应的节拍时间
  8. unsigned char music_num,num; //music_num 为歌曲编号 ,music_num=0表示刚
  9. 开机时的状态 ,num 是查找歌曲数据表的地址
  10. signed char fre; // 对应频率数据表的地址
  11. bit play_enable; // 歌曲播放的使能标志位 , 用于播放 暂停
  12. void delay(unsigned char t);  // 延时子函数 , 控制发音的时间长度
  13. void delayms(unsigned int t);  // 普通延时子程序 , 可用于按键消抖
  14. void song(void);  // 演奏一个音符
  15. void music_play(void); // 播放歌曲
  16. //////////////////////////////////////////////
  17. // 每三个数字 , 代表一个音符
  18. // 第一个数字是音符的数值 1234567之一( 第几个音 ), 代表哆来咪发 ...
  19. // 第二个数字是 0123之一, 代表低音 中音 高音 超高音 ( 第几个八度 )
  20. // 第三个数字是时间长度 , 以半拍为单位 , 乐曲数据表的结尾是三个 0
  21. //////////////////////////////////////////////
  22. // 《祝你生日快乐》
  23. unsigned char code song1[]={
  24. 5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,
  25. 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,
  26. 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,
  27. 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4, 0,0,0};
  28. - 29 -
  29. // 《世上只有妈妈好》
  30. unsigned char code song2[]={
  31. 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1,
  32. //6,2,3 代表 6, 中音,3 个半拍 ;
  33. //5,2,1 代表 5, 中音,1 个半拍 ;
  34. //3,2,2 代表 3, 中音,2 个半拍 ;
  35. //5,2,2 代表 5, 中音,2 个半拍 ;
  36. //1,3,2 代表 1, 高音,2 个半拍 ;
  37. //...
  38. 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1,
  39. 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2,
  40. 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0};
  41. // 《当你孤单你会想起谁》
  42. unsigned char code song3[]={
  43. 3,2,2, 3,2,1, 4,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,2, 5,2,2, 2,2,2, 2,2,3,
  44. 1,2,2, 1,2,1, 2,2,1, 1,2,2, 7,1,1, 6,1,1, 7,1,2, 3,2,2, 7,1,2, 7,1,3,
  45. 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2,1, 3,2,1, 2,2,1,
  46. 1,2,1, 6,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1,2,6,
  47. 0,0,0 };
  48. // 《乡间小路》
  49. unsigned char code song4[]={
  50. 3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2,
  51. 6,0,1, 5,0,1, 6,0,4, 6,0,2, 6,0,1 ,6,0,1, 6,0,2, 6,0,1, 1,1,1,
  52. 2,1,2, 2,1,1, 3,1,1, 2,1,4, 3,1,1, 3,1,1, 3,1,1, 2,1,1, 4,1,2,
  53. 4,1,2, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 7,0,1, 7,0,1, 7,0,1, 6,0,1,
  54. 5,0,1, 5,0,1, 6,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 6,0,4, 6,1,2,
  55. 3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1,
  56. 6,1,1, 5,1,1, 4,1,1, 4,1,2, 4,1,1, 3,1,1, 2,1,2, 1,1,1, 2,1,1,
  57. - 30 -
  58. 3,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1,
  59. 6,1,1, 5,1,1, 5,1,2, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 0,0,0};
  60. // 《送别》
  61. unsigned char code song5[]={
  62. 5,1,2, 3,1,3, 5,1,1, 1,2,3, 6,1,2, 1,2,2,
  63. 5,1,4, 5,1,2, 1,1,1, 2,1,1, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 5,1,2,
  64. 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1,
  65. 3,1,1, 4,1,2, 7,0,1, 1,1,4, 6,1,2, 1,2,2, 1,2,4, 7,1,2, 6,1,1,
  66. 7,1,1, 1,2,4, 6,1,1, 7,1,1, 1,2,1, 6,1,1, 6,1,1, 5,1,1, 3,1,1,
  67. 1,1,1, 2,1,8, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2,
  68. 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,2, 1,1,4, 0,0,0};
  69. // 频率- 半周期数据表 高八位 共保存了四个八度的 28 个频率数据
  70. unsigned char code FREQH[]={
  71. 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, // 低音 1234567
  72. 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
  73. 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, // 高音 234567
  74. 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; // 超高音 1234567
  75. // 频率- 半周期数据表 低八位
  76. unsigned char code FREQL[]={
  77. 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, // 低音 1234567
  78. 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i
  79. 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, // 高音 234567
  80. 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; // 超高音 1234567
  81. void main(void)
  82. {
  83. - 31 -
  84. TMOD=0x11; //T0 T1 均在工作方式 1
  85. ET0=1; //T0 开中断
  86. EA=1; //CPU 开中断
  87. while(1)
  88. {
  89. music_play();  // 根据当前状态播放相应歌曲的某个音符
  90. if(!pause)  // 暂停键处理
  91. {
  92. delayms(5);
  93. if(!pause)
  94. {
  95. if(music_num==0) //music_num=0 只有在刚开机 , 且未按
  96. 下暂停键时存在 , 表示刚开机时的状态 , 按下后从第一首开始播放
  97. {
  98. music_num=1; // 歌曲序号置 1
  99. num=0; // 从头播放
  100. play_enable=1;  // 允许播放
  101. }
  102. else
  103. {
  104. play_enable=~play_enable;
  105. speaker=1;
  106. }
  107. while(!pause)  // 若按着暂停键不放手时的处理
  108. {
  109. if(play_enable==0){}  // 如果是暂停,则显示时
  110. 间不变 // (暂停时 play_enable==0 )
  111. }
  112. - 32 -
  113. }// 暂停键处理结束
  114. }//while 结束
  115. }
  116. }
  117. void delayms(unsigned int t)  //MS 延时子程序
  118. {
  119. unsigned int i,j;
  120. for(i=0;i<t;i++)
  121. {
  122. for(j=0;j<123;j++)
  123. ;
  124. }
  125. }
  126. void delay(unsigned char t)  // 延时子函数 , 控制发音的时间长度 , 每个节拍
  127. 0.4S
  128. {
  129. unsigned char t1;
  130. unsigned long t2;
  131. for(t1=0;t1<t;t1++)  // 嵌套循环 , 共延时 t 个半拍
  132. {
  133. for(t2=0;t2<8000;t2++) // 延时期间 , 可进入 T0中断去发音
  134. }
  135. TR0=0;  // 关闭 T0, 停止发音
  136. }
  137. void timer0(void) interrupt 1 //T0 中断程序 , 控制发音的音调
  138. {
  139. speaker=!speaker;// 输出方波 , 发音
  140. - 33 -
  141. TH0=timer0h;  // 下次的中断时间 , 这个时间控制音调高低
  142. TL0=timer0l;
  143. }
  144. void song(void) // 演奏一个音符
  145. {
  146. TH0=timer0h; // 控制音调
  147. TL0=timer0l;
  148. TR0=1;  // 启动 T0, 由 T0 输出方波发音
  149. delay(time); // 每个音符的演奏时间
  150. }
  151. ///////////////////////////////////////////////////////////////////////////
  152. /////////
  153. void music_play(void)// 播放相应歌曲的某个音符
  154. {
  155. if((music_num==1)&&(play_enable==1))
  156. {
  157. fre=song1[num]+7*song1[num+1]-1;// 第 i 个是音符 , 第 i+1 个是第几
  158. 个八度
  159. timer0l=FREQL[fre];
  160. time=song1[num+2]; // 读出时间长度数值
  161. num+=3;
  162. if(fre==-1)  // 判断歌曲的结束位 , 结束后转到下一首
  163. {
  164. num=0; // 下一首从头播放
  165. music_num=2;
  166. play_enable=0;
  167. }
  168. song(); // 发出一个音符
  169. }
  170. - 34 -
  171. if((music_num==2)&&(play_enable==1))
  172. {
  173. fre=song2[num]+7*song2[num+1]-1;
  174. timer0h=FREQH[fre];
  175. timer0l=FREQL[fre];
  176. time=song2[num+2];
  177. num+=3;
  178. if(fre==-1)
  179. {
  180. play_enable=0;
  181. }
  182. song();
  183. }
  184. if((music_num==3)&&(play_enable==1))
  185. {
  186. fre=song3[num]+7*song3[num+1]-1;
  187. timer0h=FREQH[fre];
  188. timer0l=FREQL[fre];
  189. time=song3[num+2];
  190. num+=3;
  191. if(fre==-1)
  192. {
  193. num=0;
  194. music_num=4;
  195. play_enable=0;
  196. }
  197. song();
  198. if((music_num==4)&&(play_enable==1))
  199. {
  200. fre=song4[num]+7*song4[num+1]-1;
  201. - 35 -
  202. timer0h=FREQH[fre];
  203. num+=3;
  204. if(fre==-1)
  205. {
  206. num=0;
  207. music_num=5;
  208. play_enable=0;
  209. }
  210. song();
  211. }
  212. if((music_num==5)&&(play_enable==1))
  213. {
  214. fre=song5[num]+7*song5[num+1]-1;
  215. timer0h=FREQH[fre];
  216. timer0l=FREQL[fre];
  217. time=song5[num+2];
  218. num+=3;
  219. if(fre==-1)
  220. {
  221. num=0;
  222. music_num=1;
  223. play_enable=0;
  224. }
  225. song();
  226. }
  227. }
复制代码

0.png

全部资料51hei下载地址:
无线音乐门铃资料.rar (10.68 MB, 下载次数: 179)

评分

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

查看全部评分

回复

使用道具 举报

ID:168745 发表于 2018-6-9 09:31 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:270403 发表于 2018-9-1 06:49 | 显示全部楼层
能通过改造无线鼠标来制作无线门铃吗?鼠标左击,门铃响。
回复

使用道具 举报

ID:328745 发表于 2018-9-11 17:57 | 显示全部楼层
您好,请问有实物图的原理图吗,您上面给的PCB图与清单对应不上
回复

使用道具 举报

ID:355428 发表于 2019-5-5 16:43 | 显示全部楼层
没有仿真图嘛?
回复

使用道具 举报

ID:322742 发表于 2019-5-7 10:32 来自手机 | 显示全部楼层
没有仿真吗
回复

使用道具 举报

ID:484435 发表于 2019-5-7 17:57 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:555097 发表于 2019-6-4 22:49 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:566013 发表于 2019-6-19 13:31 | 显示全部楼层
为什么我的门铃没声音哈,程序哪里出现了缺少什么?
程序.png
回复

使用道具 举报

ID:751847 发表于 2020-5-18 21:24 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:541089 发表于 2021-4-3 22:09 | 显示全部楼层
室友做这个玩,顺便给你加了块PCB,哈哈
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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