找回密码
 立即注册

QQ登录

只需一步,快速开始

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

萌新求助大佬如何做一个音乐门铃

[复制链接]
ID:264629 发表于 2018-3-4 23:22 来自手机 | 显示全部楼层 |阅读模式
400黑币
要做一个带音乐芯片的音乐门铃,求大佬指点我,有原理图最好不过了

最佳答案

查看完整内容

之前嵌入式课上用C51单片机做的,这是之前写的代码,比较简单,楼主可以借鉴一下,希望楼主采纳~#include #include #define uchar unsigned char #define uint unsigned int sbit K1=P3^2; sbit beep=P3^7; sbit beep2=P2^7; sbit p20=P2^0;//切换音乐 sbit p21=P2^1;//播放模式/键盘模式 sbit p22=P2^2;//(录音) uchar i,ri; uchar song_Index=0,Tone_Index=0; uchar *song_Tone,*song_Time; const LED_tab[]={ ...
回复

使用道具 举报

ID:287622 发表于 2018-3-4 23:22 | 显示全部楼层
之前嵌入式课上用C51单片机做的,这是之前写的代码,比较简单,楼主可以借鉴一下,希望楼主采纳~#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P3^2;
sbit beep=P3^7;
sbit beep2=P2^7;

sbit p20=P2^0;//切换音乐
sbit p21=P2^1;//播放模式/键盘模式
sbit p22=P2^2;//(录音)

uchar i,ri;
uchar song_Index=0,Tone_Index=0;
uchar *song_Tone,*song_Time;
const LED_tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0xFF};

uint code Tone_tab[]={
63773,63965,64137,64215,64360,64488,64603,
64654,64751,64836,63036,63148,63212,10,65535,64892,64952};
uint recordi[]={0,1,2,3,4,5,6,7};
unsigned keymode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


//矩阵式键盘
uchar buff;
void delay1ms(void){
uchar i;
for(i=200;i>0;i--);
}

void key_scan(void){
uchar hang,lie;
P1=0xf0;
if((P1&0xf0)!=0xf0) //行码为0,列码为1
{delay1ms();    //消抖动
if((P1&0xf0)!=0xf0){//有键按下,列码为0
hang=0xfe;     //逐行扫描

while((hang&0x08)!=0)//扫描完各行后跳出

//while((hang&0x10)!=0)//4X4
{
P1=hang;
if((P1&0xf0)!=0xf0)//本行有键按下

{lie=(P1&0xf0)|0x0f;
buff=((~hang)+(~lie));
switch(buff){
case 0x11:Tone_Index=0;break;
case 0x21:Tone_Index=1;break;
case 0x41:Tone_Index=2;break;
case 0x81:Tone_Index=3;break;

case 0x12:Tone_Index=4;break;
case 0x22:Tone_Index=5;break;
case 0x42:Tone_Index=6;break;
case 0x82:Tone_Index=7;break;

case 0x14:Tone_Index=8;break;
case 0x24:Tone_Index=9;break;
case 0x44:Tone_Index=15;break;
case 0x84:Tone_Index=16;break;

//case 0x18:Tone_Index=12;break;
//case 0x28:Tone_Index=0;break;
//case 0x48:Tone_Index=1;break;
//case 0x88:Tone_Index=2;break;
}
}
else hang=(hang<<1)|0x01;
}
}
}
}




/*
uint code Tone_tab[]={
62018,62401,62491,62895,63184,63441,63506,
63773,63965,64137,64215,64360,64488,64603,
64654,64751,64836,64876,64948,65012,65067,65535};

uchar code song1_Tone[]={
11,9,11,14,12,14,12,11,11,7,8,9,8,7,8,
11,9,11,14,13,12,14,11,11,7,8,9,6,7,
12,14,14,13,12,13,14,12,13,14,12,12,11,10,7,8,
11,9,11,14,13,12,14,11,11,8,9,10,6,7,0xff};
uchar code song1_Time[]={
4,2,2,8,4,2,2,8,4,2,2,4,2,2,12,
4,2,2,4,2,4,4,8,4,2,2,4,2,12,
4,4,8,4,2,2,8,2,2,2,2,2,2,2,2,16,
4,2,2,4,2,4,4,8,4,2,2,4,2,12,0xff};
*/
uchar code song1_Tone[]={//两只老虎
13,0,13,1,13,2,13,0,13,0,13,1,13,2,13,0,13,2,13,3,13,4,13,13,13,2,13,3,13,4,13,13,13,4,5,4,3,2,13,0,13,4,5,4,3,2,13,0,13,2,13,11,13,0,13,13,2,13,11,13,0,13,13,0xff};
uchar code song1_Time[]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xff};

uchar code song2_Tone[]={//小星星
13,0,0,4,4,5,5,4,13,3,3,2,2,1,1,0,13,4,4,3,3,2,2,1,13,4,4,3,3,2,2,1,0xff};
uchar code song2_Time[]={
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0xff};

uchar code song3_Tone[]={//欢乐颂
13,2,2,3,4,4,3,2,1,0,0,1,2,2,1,1,13,2,2,3,4,4,3,2,1,0,0,1,2,1,13,0,0,13,1,1,2,0,1,3,2,0,1,3,2,1,0,1,12,13,0xff};
uchar code song3_Time[]={
3,3,3,3,3,3,3,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0xff};

uchar code song4_Tone[]={//生日快乐
13,4,4,5,13,4,13,7,13,6,13,13,4,4,5,13,4,13,8,13,7,13,13,0xff};
uchar code song4_Time[]={
2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xff};

uchar code song5_Tone[]={//两只老虎
13,0,13,1,13,2,13,0,13,0,13,1,13,2,13,0,13,2,13,3,13,4,13,13,13,2,13,3,13,4,13,13,13,4,5,4,3,2,13,0,13,4,5,4,3,2,13,0,13,2,13,11,13,0,13,13,2,13,11,13,0,13,13,0xff};
uchar code song5_Time[]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xff};



void delayms(uint ms)
{uchar a;
while(ms--)
{
for(a=2300;a>0;a--);
}
}
void Timer0() interrupt 1  //中断函数
{
TH0=Tone_tab[Tone_Index]/256;
TL0=Tone_tab[Tone_Index]%256;
beep=~beep;
}

void select(void)
{
if(song_Index==0)
{
song_Tone=song1_Tone;
song_Time=song1_Time;
}
if(song_Index==1)
{
song_Tone=song2_Tone;
song_Time=song2_Time;
}
if(song_Index==2)
{
song_Tone=song3_Tone;
song_Time=song3_Time;
}
if(song_Index==3)
{
song_Tone=song4_Tone;
song_Time=song4_Time;
}
if(song_Index==4)
{
song_Tone=song5_Tone;
song_Time=song5_Time;
}
}

void int_init(void){
TMOD=0X01;
ET0=1;
EX0=1;
IT0=1;
EA=1;
TR0=0;
}

void display(void){
delay1ms();
if(P1!=0xf0) TR0=1;
else TR0=0;

}

void recordplay(void){
uint i=0;
while(i<8&&p22==0){
Tone_Index=recordi[i];
TR0=1;
delayms(150);
TR0=0;
i++;
}
}

void record(void){
recordi[ri]=Tone_Index;
delayms(10);
ri++;

}


void main(void)
{
int_init();
song_Tone=song1_Tone;
song_Time=song1_Time;
i=0;
while(1)
{

if(p20==0){
delayms(100);
song_Index++;
i=0;
if(song_Index==5) song_Index=0;

select();
}

if(p21==0){

if(p22==0){
if(p20==1&&P1!=0xf0) record();//录音
if(p20==0) {recordplay();ri=0;}//录音播放
}

key_scan();
display();
}

else{
P0=LED_tab[song_Index];
TR0=1;
Tone_Index=song_Tone[i];

if(Tone_Index==0xff){
i=0;
TR0=0;}
TR0=1;
delayms(song_Time[Tone_Index]*60);
TR0=0;
i++;
}
}
}
回复

使用道具 举报

ID:287575 发表于 2018-3-5 01:55 | 显示全部楼层
有音乐门铃IC,买来加少量原件就可以了,很简单,如:9300音乐ic芯片,有很多这样的IC不同的音乐。
回复

使用道具 举报

ID:95486 发表于 2018-3-5 08:41 | 显示全部楼层
简单的直接买个音乐片,加三极管 喇叭 按键即可
复杂的用单片机
回复

使用道具 举报

ID:273292 发表于 2018-3-5 09:13 | 显示全部楼层
单片机直接控制就可以啦,有那种特定音乐的编码,只要用个地点器模拟门铃就好啊
回复

使用道具 举报

ID:264629 发表于 2018-3-5 09:33 | 显示全部楼层
主要是用51单片机
回复

使用道具 举报

ID:287622 发表于 2018-3-5 09:36 | 显示全部楼层
直接C51 单片机就能做一个简单的音乐门铃,我之前自己写的,有代码,希望楼主采取啊,谢谢~
回复

使用道具 举报

ID:82765 发表于 2018-3-5 09:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:287652 发表于 2018-3-5 10:25 | 显示全部楼层
有现成的音乐芯片,tb好像可以定制,,牛屎芯。片
回复

使用道具 举报

ID:264629 发表于 2018-3-6 08:39 来自手机 | 显示全部楼层
songofjoy 发表于 2018-3-5 09:43
之前嵌入式课上用C51单片机做的,这是之前写的代码,比较简单,楼主可以借鉴一下,希望楼主采纳~#include
...

多谢大佬
回复

使用道具 举报

ID:264629 发表于 2018-3-8 07:48 来自手机 | 显示全部楼层
songofjoy 发表于 2018-3-4 23:22
之前嵌入式课上用C51单片机做的,这是之前写的代码,比较简单,楼主可以借鉴一下,希望楼主采纳~#include
...

大佬有没有原理图之类的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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