无线门铃又称无线遥控门铃或遥控门铃。无线门铃是利用超再生无线模块来实现无线遥控的,无线门铃不需要布线,安装简单灵活,但是传输距离受传输距离和现场环境影响较大。有线门铃正好与之相反
包含,程序 实物 图纸 程序 仿真
课题预期达到的效果:
1、有5首歌曲可以切换,每按一次演唱不同的歌曲。
2、无线传输距离10m以上,可以穿墙和门。
3、设计小巧,方便安装和使用
4、稳定性高,无误报。
实物图:
原理图:
仿真图
代码截图
无线音乐门铃元件清单
1.79万用板
2.8Ω0.25w小喇叭
3.DC电源插口
4.自锁开关
5.12m晶振
6.10k电阻8
7.2.2k电阻
8.30pf电容2
9.10uf电容
10.40脚IC座
11.按键2
12.stc89c51
13.315M发射模块
14.接收模块
15.2272-M4芯片
16.2262芯片
17.12v电池
18.820k贴片电阻
19.4.7M贴片电阻
20.9012
21.9013
22.导线若干
23.焊锡若干
24.23cm长天线*2
25.usb电源线(电池盒+DC插头)
C语言参考源代码
//
//51单片机无线遥控门铃程序
//
#include #define sound_amount 5 //歌曲的数量 sbit pause=P2^5; //播放暂停 sbit speaker=P2^7; //无源蜂鸣器 // unsigned char timer0h,timer0l,time;//timer0h,timer0l为定时器T0的高低位初值,time为对应的节拍时间 unsigned char music_num,num; //music_num为歌曲编号,music_num=0表示刚开机时的状态,num是查找歌曲数据表的地址 signed char fre; //对应频率数据表的地址 bit play_enable; //歌曲播放的使能标志位,用于播放暂停 void delay(unsigned char t); //延时子函数,控制发音的时间长度 void delayms(unsigned int t); //普通延时子程序,可用于按键消抖 void song(void); //演奏一个音符 void music_play(void); //播放歌曲 // //每三个数字,代表一个音符 //第一个数字是音符的数值1234567之一(第几个音),代表哆来咪发… //第二个数字是0123之一,代表低音中音高音超高音(第几个八度) //第三个数字是时间长度,以半拍为单位,乐曲数据表的结尾是三个0 // //《祝你生日快乐》 unsigned char code song1[]={ 5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4, 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4, 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4, 0,0,0}; //《世上只有妈妈好》 unsigned char code song2[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, //6,2,3代表6,中音,3个半拍; //5,2,1代表5,中音,1个半拍; //3,2,2代表3,中音,2个半拍; //5,2,2代表5,中音,2个半拍; //1,3,2代表1,高音,2个半拍; //… 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, 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, 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}; //《当你孤单你会想起谁》 unsigned char code song3[]={ 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, 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, 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, 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, 0,0,0 }; //《乡间小路》 unsigned char code song4[]={ 3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2, 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, 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, 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, 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, 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, 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, 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, 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}; //《送别》 unsigned char code song5[]={ 5,1,2, 3,1,3, 5,1,1, 1,2,3, 6,1,2, 1,2,2, 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, 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, 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, 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, 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, 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,2, 1,1,4, 0,0,0}; // 频率-半周期数据表 高八位 共保存了四个八度的28个频率数据 unsigned char code FREQH[]={ 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567 // 频率-半周期数据表 低八位 unsigned char code FREQL[]={ 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音 1234567 void main(void) { TMOD=0x11; //T0 T1 均在工作方式1 ET0=1; //T0开中断 EA=1; //CPU开中断 while(1) { music_play(); //根据当前状态播放相应歌曲的某个音符 if(!pause) //暂停键处理 { delayms(5); if(!pause) { if(music_num0) //music_num=0只有在刚开机,且未按下暂停键时存在,表示刚开机时的状态,按下后从第一首开始播放 { music_num=1; //歌曲序号置1 num=0; //从头播放 play_enable=1; //允许播放 } else { play_enable=~play_enable; speaker=1; } while(!pause) //若按着暂停键不放手时的处理 { if(play_enable0){} //如果是暂停,则显示时间不变//(暂停时play_enable==0) } }//暂停键处理结束 }//while结束 } } void delayms(unsigned int t) //MS延时子程序 { unsigned int i,j; for(i=0;i for(j=0;j<123;j++) ; } } void delay(unsigned char t) //延时子函数,控制发音的时间长度,每个节拍0.4S { unsigned char t1; unsigned long t2; for(t1=0;t1 for(t2=0;t2<8000;t2++) //延时期间, 可进入T0中断去发音 { ; } } TR0=0; //关闭T0, 停止发音 } void timer0(void) interrupt 1 //T0中断程序,控制发音的音调 { speaker=!speaker;//输出方波, 发音 TH0=timer0h; //下次的中断时间,这个时间控制音调高低 TL0=timer0l; } void song(void) //演奏一个音符 { TH0=timer0h; //控制音调 TL0=timer0l; TR0=1; //启动T0, 由T0输出方波发音 delay(time); //每个音符的演奏时间 } void music_play(void)//播放相应歌曲的某个音符 { if((music_num1)&&(play_enable1)) { fre=song1[num]+7song1[num+1]-1;//第i个是音符,第i+1个是第几个八度 timer0h=FREQH[fre]; //从数据表中读出频率数值,实际上是定时的时间长度 timer0l=FREQL[fre]; time=song1[num+2]; //读出时间长度数值 num+=3; if(fre==-1) //判断歌曲的结束位,结束后转到下一首 { num=0; //下一首从头播放 music_num=2; play_enable=0; } song(); //发出一个音符 } if((music_num2)&&(play_enable1)) { fre=song2[num]+7song2[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song2[num+2]; num+=3; if(fre==-1) { num=0; music_num=3; play_enable=0; } song(); } if((music_num3)&&(play_enable1)) { fre=song3[num]+7song3[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song3[num+2]; num+=3; if(fre==-1) { num=0; music_num=4; play_enable=0; } song(); } if((music_num4)&&(play_enable1)) { fre=song4[num]+7song4[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song4[num+2]; num+=3; if(fre==-1) { num=0; music_num=5; play_enable=0; } song(); } if((music_num5)&&(play_enable1)) { fre=song5[num]+7*song5[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song5[num+2]; num+=3; if(fre==-1) { num=0; music_num=1; play_enable=0; } song(); } } //程序结束
上一篇:手机蓝牙控制 广州塔LED灯阵 无线控制播放音乐
下一篇:扫盲:什么是单片机时序,如何看懂时序图
推荐阅读最新更新时间:2024-11-13 11:03
推荐帖子
- STM32一定要集成NetPHY吗?
- 为什么一定要集成PHY呢?难道嵌入式系统就一定要集成PHY?集成PHY有其好处亦有其坏处,好处无非就是totalcost,集成度等方面有优势,坏处其实也不少:1.无法满足某些安规标准,有些场合是需要光耦隔离的,这个时候就不能用了;2.增加芯片的发热,这些热量都是来自于你的供电系统,甚至是电池,无形中会使你的设备功耗奇高;3.增加IC设计的难度,模数信号处理不好,EMI不好通过;4.增加主芯片的成本;等等,这些都是需要考虑的。如果你用外部的PHY可选择的地方就很多,包括型号,增加系统设计的灵
- wangzelin311 stm32/stm8
- 传感器 信号调理电路 的阻容器件 如何选用 ?
- 见附图,传感器P3的输出(输出_P、输出_N),经信号调理电路(由两个电阻、三个电容组成)后输入模数转换器U6。信号调理电路选用低温票、高精度的阻容器件,如下:电阻(低温票):阻值封装精度5.1KΩ06030.1%电容(低温票):容值(nF)封装精度1006035%10006035%请教:上述的选型是否合适?谢谢!备注:传感器的输出为0-100mV。---
- yhye2world 传感器
- 请教 STM32 CAN_Filter的查询问题
- 怎样在can中断程序中查出当前的报文是来自于那个filter的阿看资料说的是结构体中的FMI参数可我在实验的时候明明filter12收到的查询fmi却是8百思不得其解阿有哪位知道的请指教一下阿以下为该语句if(RxMessageIsr.FMI==CAN_Filter_RecallPGN)请教STM32CAN_Filter的查询问题
- hanker510 stm32/stm8
- 微弱信号检测电路分析,超声波检测
- 大家分析一下这个电路,信号路径如下:超声波信号(很小幅度,几毫伏~几十毫伏)从probe进去-----C22隔掉直流分量----经过U6进行放大----经过U5进行放大----经过(C18、C19、C20、C21、L3、L4、L5、L6、R17)进行滤波这个电路通过测试,电路是正常的,但不知道如果从理论上来正确分析U6部分和(C18、C19、C20、C21、L3、L4、L5、L6、R17)滤波部分的电路。求高手分析一下。微弱信号检测电路分析,超声波检测U6信号放大,注意C24
- gaoyang9992006 模拟电子
- vivado学习3-生成BOOT.bin
- 接上一篇帖子vivado学习2-自定义IP核-FPGA/CPLD-电子工程世界-论坛https://bbs.eeworld.com.cn/thread-509154-1-1.html上个帖子白丁给了我一赞,昨晚再接再厉上个帖子已对IP的时钟、端口等进行设置,下面生成设计文件,输出成功,会看到目录下多了文件建立HDLWrapper选择File-Export-ExportHardware-OK,把硬件文件system_wrapper.hdf导到zynq700
- suoma FPGA/CPLD
- 华纳公司开户为迎新小学捐款3万元
- 迎新小学,建校距今已有40余年,近年来,随着地区教育事业的发展,该校的教学环境已然不能满足现状,当前,决定重建该学校。用心关注教育、用爱播撒希望!华纳公司开户董事长通过具体了解情况后,决定向迎新小学捐助3万元人民币,为地区的教育事业尽一份公司的绵薄之力。4月20日下午3点,受董事长委托,华纳公司开户代表团,亲自到迎新小学进行捐款。迎新小学校长接受了捐款,并对华纳技实业有限公司的爱心善举表示由衷的感谢,他还说,我们全校师
- 华纳开户有限公司 国产芯片交流
设计资源 培训 开发板 精华推荐
- TLE 4264 G 5V 低压降固定稳压器的典型应用
- ADR530B 3V 输出高精度并联模式电压基准的典型应用
- 用于简单时钟振荡器的 NCP301LSN36T1 3.6V 电压检测器的典型应用
- STR-10-16V-BLDC-MDK-GEVB:600W、10-16V 电机开发板
- LT1086CT-3.3 5V 至 3.3V 低压差正稳压器的典型应用
- #第六届立创电赛#智能音箱
- 使用 LTC3637IDHC 36.5V 至 76V 输入至 36V 输出、1A 降压型稳压器的典型应用
- 电子协会ESP32卡片
- L4940V85 超低压降 1.5A 稳压器的典型应用,使用 L4940 对开关模式电源进行二次稳压
- PCAL6524EV 24位通用IO Arduino® Shield