1.基于51单片机的音乐门铃设计
51资源还不够啊?汗!用51都能实现GSM远程防盗报警器 这么个门铃就不行了啊 再说了 这个电路提供了功放和录放音电路 单片机需要做的很少 但是我不知道楼主用的是什么样的录放电路 所以我没办法提供程序 不过我可以详细化工作流程 按一次 门铃之后 单片机会延时10秒 十秒之后无人应答 说明家里无人 那么这时候单片机会通过指示灯告知来人可以留言 然后根据录放电路的存储容量进行时间的管理。
在录音时间快完毕的时候点亮指示灯 提示录音时间快完毕 避免漏掉信息 然后在录音时间到后自动关闭录音电路 并提示 来人可以离开了 主人来的是后可以按按键进行录音的播放,并且会显示录音的时间 根据录音电路的容量可以设置 3段录音 5段录音等 当然随着段数的增加,单片机的编程会变得复杂,但是其工作原理同一段式录音控制程序是一样的。
2.六首歌曲的门铃制作 毕业设计的命题关于单片机和C语言的
//单片机C语言音乐播放程序 //12M
#include<reg51.h>
sbit p34 = P2^1; //扬声器的输出端口
void Music(unsigned char number); void delay10ms(unsigned char time); void delay50us(unsigned char time); unsigned char code SOUNDLONG[]; unsigned char code SOUNDTONE[];
void main() { while(1) { Music(1); //生日快乐 delay10ms(250); delay10ms(250); Music(2); //三轮车 delay10ms(250); delay10ms(250); } }
void Music(unsigned char number) { unsigned int k,n; unsigned int SoundLong,SoundTone; unsigned int i,j,m;
for(k=0;k<number-1;k++) { while(SOUNDLONG[i] !=0){i++;} i++; if(i>=57) i=0; } for(k=0;k<number-1;k++) { while(SOUNDTONE[j] !=0){j++;} j++; if(j>=57) j=0; }
do { if(i>=57) i=0; if(j>=57) j=0; SoundLong=SOUNDLONG[i]; SoundTone=SOUNDTONE[j]; i++; j++;
for(n=0;n<SoundLong;n++) { for(k=0;k<12;k++) { p34=0; for(m=0;m<SoundTone/2;m++) ; p34=1; for(m=0;m<SoundTone/2;m++) ; } } delay50us(6); }while((SOUNDLONG[i] !=0) || (SOUNDTONE[j] !=0)); }
//延时程序 void delay10ms(unsigned char time) //延时程序1
{ unsigned char a,b,c; for(a=0;a<time;a++) for(b=0;b<100;b++) for(c=0;c<12;c++) ; } void delay50us(unsigned char time) //延时程序2
{ unsigned char a,b; for(a=0;a<time;a++) for(b=0;b<6;b++) ; }
unsigned char code SOUNDLONG[]= { 9,3,12,12,12,24, 9,3,12,12,12,24, 9,3,12,12,12,12,12, 9,3,12,12,12,24, 0, //生日快乐end 6,6,9,3,6,6,12, 6,6,6,6,6,6,12, 6,6,9,3,6,6,9,3, 6,3,3,6,3,3,6,6,9, 0 //三轮车end };
unsigned char code SOUNDTONE[]= { 212,212,190,212,159,169, 212,212,190,212,142,159, 212,212,106,126,159,169,190, 119,119,126,159,142,159, 0, //生日快乐end 239,239,212,189,159,159,189, 159,159,142,126,120,120,159, 120,120,142,159,189,142,159,189, 239,212,189,159,142,159,189,212,239, 0 //三轮车end };
3.基于51单片机的音乐门铃设计对电路参数没有要求,简单复杂均可,可
51资源还不够啊?汗!用51都能实现GSM远程防盗报警器 这么个门铃就不行了啊 再说了 这个电路提供了功放和录放音电路 单片机需要做的很少 但是我不知道楼主用的是什么样的录放电路 所以我没办法提供程序 不过我可以详细化工作流程 按一次 门铃之后 单片机会延时10秒 十秒之后无人应答 说明家里无人 那么这时候单片机会通过指示灯告知来人可以留言 然后根据录放电路的存储容量进行时间的管理。
在录音时间快完毕的时候点亮指示灯 提示录音时间快完毕 避免漏掉信息 然后在录音时间到后自动关闭录音电路 并提示 来人可以离开了 主人来的是后可以按按键进行录音的播放,并且会显示录音的时间 根据录音电路的容量可以设置 3段录音 5段录音等 当然随着段数的增加,单片机的编程会变得复杂,但是其工作原理同一段式录音控制程序是一样的。
4.单片机智能音乐播放器毕业论文
一、设计任务 设计题目: 单片机音乐播放器 设计要求: 1、完成89C51的外围复位、时钟和电源等外围电路的设计,完成扬声器驱动设计。
2、根据各音阶频率算出定时器定时常数,根据节拍给出该音阶持续的时间。 3、完成音乐播放软件并完成乐谱表的翻译,最好能编写一个播放子程序用于播放。
4、播放音乐《南泥湾》片段。 二、方案论证 设计方案: 设计中我们考虑了两种设计方案,两种设计方案中主要去区别在于硬件电路的不同,对于本设计通过模拟电路和单片机设计均可以实现,最后根据设计要求、可行性和设计成本的考虑选择了单片机设计的方案。
现在一一介绍论证如下: [方案一]: 此方案采用的是模拟电路,其中涉及有几部分: (1) 基准频率产生器,产生基准频率,其值应根据音调发生器的频率要求决定。电路可由晶振构成时钟脉冲振荡器。
(2) 音调发生器,音调发生器产生各个音区与音符所对应的频率;音符代码存储器,用来存储与乐曲的音符对应的数字代码及乐曲的数量。 (3) 通常先将乐曲进行编码,再将其代码存储在EPROM存储器。
(4) 节拍发生器与地址计数器,节拍发生器的振荡频率由乐曲演奏的速度所决定。演奏的速度越快,节拍发生器的速度越高。
5.找有关单片机设计的音乐门玲程序解析(80C51)
*****************************************************************************************************
程序功能:模拟简易门铃;且有关闭门铃功能。
当按下TX-1C上的S2键后,蜂鸣器会发出十次短暂的“嘟嘟”声作为呼叫。
S3用于关闭或者打开门铃。
当门铃处于关闭时,按下S2不会有呼叫效果。
******************************************************************************************************/
#include
#define uchar unsigned char
uchar k,ok=1;//默认开机后,门铃开。
unsigned int j;
sbit s2=P3^4;
sbit s3=P3^5;
sbit beep=P2^3;
void delay(unsigned int i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
while(1)
{
if(ok==1)
{
if(s3==0)
{
while(s3==0);
ok=0;
}
}
else
{
if(s3==0)
{
while(s3==0);
ok=1;
}
}
if((s2==0)&(ok==1))
{ uchar i=5;
for(i=5;i>0;i--)
{
beep=0;
delay(800);
beep=1;
delay(800);
beep=0;
delay(1200);
beep=1;
delay(1300);
}
}
}
}
6.求高手:基于单片机的音乐门铃 设计要有完整的C语言程序
#include //包含52单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7 unsigned int C; //储存定时器的定时常数 //以下是C调中音的音频宏定义 #define dao 523 //将"dao"宏定义为中音"1"的频率523Hz #define re 587 //将"re"宏定义为中音"2"的频率587Hz #define mi 659 //将"mi"宏定义为中音"3"的频率659Hz #define fa 698 //将"fa"宏定义为中音"4"的频率698Hz #define sao 784 //将"sao"宏定义为中音"5"的频率784Hz #define la 880 //将"la"宏定义为中音"6"的频率880Hz #define xi 987 //将"xi"宏定义为中音"7"的频率523Hz /******************************************* 函数功能:1个延时单位,延时200ms ******************************************/ void delay() { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) } /******************************************* 函数功能:主函数 ******************************************/ void main(void) { unsigned char i,j; //以下是《两只老虎》歌曲 unsigned int code f[]={dao,re,mi,dao, //每行对应一小节音符 dao,re,mi,dao, mi,fa,sao, mi,fa,sao, sao,la,sao,fa,mi,dao, sao,la,sao,fa,mi,dao, dao,sao,dao, dao,sao,dao, 0xff}; //以0xff作为音符的结束标志 //以下是简谱中每个音符的节拍 //"4"对应4个延时单位,"2"对应2个延时单位,"1"对应1个延时单位 unsigned char code JP[ ]={2,2,2,2, 2,2,2,2, 2,2,3, 2,2,3, 1,2,2,1,2,2, 1,2,2,1,2,2, 2,2,2, 2,2,2, }; EA=1; //开总中断 ET0=1; //定时器T0中断允许 TMOD=0x00; // 使用定时器T0的模式1(13位计数器) while(1) //无限循环 { i=0; //从第1个音符f[0]开始播放 while(f[i]!=0xff) //只要没有读到结束标志就继续播放 { C=460830/f[i]; TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法 TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法 TR0=1; //启动定时器T0 for(j=0;j delay(); //延时1个节拍单位 TR0=0; //关闭定时器T0 i++; //播放下一个音符 } } } /*********************************************************** 函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频的方波 ************************************************************/ void Time0(void ) interrupt 1 using 1 { sound=!sound; //将P3.7引脚输出电平取反,形成方波 TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法 TL0=(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法 }。
转载请注明出处众文网 » 基于单片机音乐门铃的毕业论文