单片机数字音乐盒程序设计
基于单片机的数字式音乐盒设计
基于单片机的数字式音乐盒设计数字式音乐盒是一种音乐播放器,它通过数字技术存储和播放音乐。
基于单片机的数字式音乐盒可以使用单片机控制音乐的播放,实现音符和旋律的发声和控制。
本文将介绍如何设计一款基于单片机的数字式音乐盒。
一、音乐盒基本原理音乐盒是通过一个带有齿轮的转子,以弹簧的力量驱动,使得钢片受到磁力响应并发声,从而发出旋律。
数字式音乐盒是通过数字技术将音乐编码为数字信号,并存储在芯片中,通过解码器将数字信号还原为音符和旋律发声。
二、单片机控制电路设计1.芯片选择要设计一个数字式音乐盒,需要先选择一款合适的单片机,常用的有AT89C51、STC89C52等。
这里选择一款性能好且价格适中的STC89C52单片机。
2.存储器选型数字式音乐盒的数字信号需要存储在内存中,为了方便起见,使用一个4Mbit的Flash记忆芯片作为存储器。
3.音频输出电路数字信号需要通过解码器进行还原后才能通过音频输出电路输出。
可以使用一对耳机或者喇叭,同时需要用到音量电位器控制音量。
三、软件程序设计1.数字信号编解码算法的设计,可以使用目前较为流行的MIDI编码格式。
2.音乐信号输入模块设计,可以使用USB接口或SD卡接口。
3.数据接收模块设计,可以使用串行通信或者并行通信。
4.数字信号存储模块设计,使用Flash记忆芯片。
5.控制模块设计,实现单片机控制音乐盒的所有操作。
四、实现效果基于单片机的数字式音乐盒实现较为简单,但是需要注意以下几点:1.考虑使用定时器计算控制音乐的播放时间,保证旋律按照要求执行。
2.使用ADC(模拟-数字转换器)读取音量电位器值,对音量进行控制。
3.在使用USB接口时,需要有电路板,使得USB通信接口稳定,可靠。
基于单片机的数字式音乐盒是一种方便实用的音乐盒,通过数字技术的运用,实现了音乐的存储和播放,可广泛应用于各个领域中。
单片机音乐盒课程设计
单片机音乐盒课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握音乐盒制作的硬件和软件需求。
2. 使学生掌握音乐盒音符的组合和编排,能运用单片机制作个性化的音乐作品。
3. 帮助学生了解声音的产生、传播和接收过程,提高对声学知识的理解和应用能力。
技能目标:1. 培养学生动手实践能力,能独立完成单片机音乐盒的组装和编程。
2. 培养学生创新思维和问题解决能力,能针对实际问题提出解决方案并优化改进。
3. 提高学生团队协作能力,能在小组合作中发挥个人优势,共同完成项目任务。
情感态度价值观目标:1. 培养学生对单片机编程和电子制作的兴趣,激发学习热情和积极性。
2. 培养学生勇于尝试、不断探索的精神,增强克服困难的信心和毅力。
3. 培养学生关注社会、关爱他人的责任感,通过音乐盒的制作,传递美好情感,传播正能量。
课程性质:本课程为实践性强的课程,旨在通过单片机音乐盒的制作,将理论知识与实际应用相结合,提高学生的综合素养。
学生特点:学生具备一定的电子基础知识,对单片机和编程有一定了解,喜欢动手实践,富有创新精神。
教学要求:教师应注重理论与实践相结合,引导学生主动探究,鼓励学生创新思维,关注学生个体差异,提供个性化指导。
通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。
二、教学内容1. 理论知识:- 单片机原理与编程基础:介绍单片机的硬件结构、工作原理,C语言编程基础。
- 声音原理:讲解声音的产生、传播、接收等基本知识,以及音符、音阶和旋律的概念。
- 音频信号处理:介绍音频信号的产生、放大和输出过程,以及如何利用单片机控制音频信号。
2. 实践操作:- 硬件组装:指导学生按照电路图组装单片机音乐盒,包括单片机、扬声器、按键等元件的连接。
- 软件编程:教授学生编写程序,实现音乐盒的基本功能,如播放音符、调整音量、切换曲目等。
- 创新设计:鼓励学生发挥创意,为音乐盒增加新功能,如定时播放、录音等。
(完整版)STC89C51单片机的数字音乐盒设计(含代码)
HEFEI UNIVERSITYFPGA综述报告系别电子信息与电气工程系任课教师汪济洲班级姓名成绩日期数字音乐盒设计摘要:本设计是一个基于STC89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计4种。
播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
关键字:音乐盒STC89C51单片机KEIL PROTEUS 音调目录1概述 (3)1.1设计方案 (3)1.2研究内容 (3)1.3音乐盒的功能结构图 (3)2硬件设计 (4)2.1总体设计框图 (4)2.2各部分硬件设计及其原理 (4)2.2.1 STC89C51简介 (4)2.2.2 LED显示电路设计与原理 (5)2.2.3 时钟振荡电路 (5)2.3硬件电路图及功能 (6)3软件设计 (7)3.1音调、节拍以及编码的确定方法 (7)4.1.1 音调的确定 (7)4.1.2 节拍的确定 (8)4.1.3 编码 (9)4.2软件程序设计 (10)4.2.1 程序流程图及相应代码块 (10)4.2.2 程序源代码(见附录A) (14)5调试 (14)5.1检查硬件连接 (14)5.2检查软件系统 (14)5.3测试结果 (14)5.3.1.总体运行图 (14)5.3.2.花样灯4种花样图 (15)参考文献 (16)附录A 程序源代码及注释 (16)。
单片机的可控数字音乐盒设计说明
微控制器和音乐盒硬件功能随着当代单片机技术的飞速进步,单片机的功能也越来越强大,包括:(1)单片机集成度高;(2)系统结构简单、使用方便、模块化;(3)单片机可靠性高、处理功能强、速度快;(4) 低电压、低功耗,便于生产便携产品;(5) 强大的控制功能。
本文的设计采用了AT89C51单片机,是一款性价比非常高的单片机。
2.1 AT89C51芯片功能AT89C51 是一款低压、高性能 CMOS 8 位微处理器,具有 4K 字节的闪存可编程可擦除只读存储器。
俗称单片机[ 2 ] 。
如图所示:图 2-1 AT89C51 MCU 引脚图图 2-2 AT89C51 单片机实物图引脚功能[ 3 ] :P0.0-P0.7 :8位开漏双向I/O口;P1.0-P1.7:8位双向I/O口,提供上拉电阻;P2.0-P2.7:8位双向I/O口,带上拉电阻;P3.0-P3.7:引脚为8个带上拉电阻的双向I/O口;P3.0:RXD(串口输入);P3.1:TXD(串行输出口);P3.2:INT0(外部中断0);P3.3:INT1(外部中断1);P3.4:T0(定时器0外部输入);P3.6:WR(外部数据存储器写选通);P3.7:RD(外部数据存储器读选通);EA:当EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),无论是否有程序存储器。
请注意,在加密模式 1 中,EA 将被锁定为 RESET;当EA端保持高电平时,这部分程序内存;P3.5:T1(定时器1的外部输入);ALE:访问外部存储器时,地址锁存器使能的输出电平用于锁存地址的状态字节;PSEN:外部程序存储器的选通信号;RST:复位输入;XTAL1:反向振荡放大器的输入,部分时钟工作电路的输入;XTAL2:反相振荡器的输出。
2.2 八音盒的硬件和功能本文设计的数字音乐盒所需硬件为:AT89C51芯片:主控制器;LED灯:灯光闪烁,P1.0-P1.7控制八路LED灯;数码管:音乐序号显示,P0.0-P0.6控制数码管;晶振:为单片机的正常工作提供稳定的时钟信号。
单片机课程设计音乐盒设计
单片机课程设计音乐盒设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解其在音乐盒设计中的应用。
2. 使学生了解并掌握音乐盒的基本组成部分,如音符、节拍等。
3. 帮助学生理解并运用编程语言,实现对音乐盒乐曲的编程与控制。
技能目标:1. 培养学生动手实践能力,能够独立完成音乐盒硬件电路的搭建。
2. 培养学生运用编程软件进行单片机程序设计的能力,实现音乐盒乐曲的播放与控制。
3. 提高学生的问题解决能力,能够针对音乐盒设计过程中遇到的问题进行调试与优化。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新意识和动手能力。
2. 培养学生团队协作精神,学会与他人共同分析问题、解决问题。
3. 引导学生关注科技发展,认识到所学知识在实际应用中的价值。
分析课程性质、学生特点和教学要求:本课程为单片机课程设计,结合音乐盒设计,旨在让学生在实际操作中掌握单片机原理和应用。
学生为高年级学生,已具备一定的电子基础和编程能力。
教学要求注重实践与理论相结合,培养学生的动手能力和实际应用能力。
二、教学内容1. 理论知识:- 单片机原理及功能特点,对应教材第3章。
- 音乐盒基本构成及工作原理,对应教材第6章。
2. 实践操作:- 硬件电路搭建,包括单片机、扬声器、按键等元件的连接,对应教材第4章。
- 程序设计,使用C语言或汇编语言编写音乐盒乐曲播放程序,对应教材第5章。
3. 教学大纲:- 第一周:学习单片机原理及功能特点,了解音乐盒基本构成及工作原理。
- 第二周:进行硬件电路搭建,学习并掌握相关元件的使用方法。
- 第三周:编写音乐盒乐曲播放程序,学会编程控制单片机播放音乐。
- 第四周:调试与优化,针对音乐盒设计过程中遇到的问题进行解决。
4. 教学内容安排与进度:- 理论与实践相结合,每周安排2课时理论知识学习,2课时实践操作。
- 按照教学大纲,逐步完成音乐盒设计的相关内容。
5. 教材章节及内容列举:- 第3章:单片机原理及功能特点,重点学习单片机的内部结构、工作原理及编程方法。
单片机音乐盒课程设计
《单片机数字音乐盒》课程设计报告专业:通信工程班级:0802姓名:彭孟秋指导教师:何小年、刘甫2011 年 6 月18 日目录1、课程设计目的 (2)2、数字音乐盒的设计要求 (2)3、电路工作原理、操作方法 (2)4、电路图 (2)5、程序框图 (3)6、关键程序 (3)7、总结 (12)8、参考书目 (12)数字音乐盒设计课程设计目的单片机原理与应用课程设计是在理论教学与有关的实验完成之后进行的,其目的是培养学生程序设计和实际应用单片机技术的能力。
通过此实践环节,使学生能够校熟练设计常用的各类汇编语言程序,掌握设计调试单片机应用系统基本方法和步骤,能够利用所学的知识设计一个中等难度的单片机应用系统,为后续实践课程奠定基础。
数字音乐盒的设计要求1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)。
2.采用数码管显示歌曲序号。
3.可通过功能键选择乐曲,暂停,播放。
电路工作原理、操作方法(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。
(2)用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a、b、d、e、f、g,用P2.0~P2.7为数码管位选信号。
(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0~P0.7作为LCD的D0~D7的控制信号。
(4)用P3.7口控制蜂鸣器。
(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
电路图程序框图关键程序Soundplay:#include <reg52.h>#include "Music.h"#include "SoundPlay.h"#include "lcd.h"#define SYSTEM_OSC 12000000 //定义晶振频率12000000HZ#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔sbit BeepIO = P2^0; //定义输出管脚unsigned char codeduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//duan code 0~9unsigned int code FreTab[12] ={ 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 };//1~7在频率表中的位置unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存//******************************************************************* #define MaxNo 3 //定义歌曲数目unsigned char code *Sound;unsigned char code * codeMusic[MaxNo]={Music_4,Music_8,Music_7,Music_6,Music_5,Music_9,Music_3 ,Music_2,Music_1};signed char FlagNo=0;static unsigned char KeyScan(void);static void Beep(void);bit RunStop = 1;//1表示运行sbit KeyB =P3^2; // 上一首sbit KeyF =P3^3; //下一首sbit KeyT =P3^5; //暂停extern void Delay1ms(unsigned int);void InitialSound(void){BeepIO = 0;Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 计算TL1应装入的初值(10ms的初装值)Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; // 计算TH1应装入的初值TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TMOD |= 0x11; //两个定时器都工作在方式1ET0 = 1;ET1 = 0;TR0 = 0;TR1 = 0;EA = 1;FlagNo = 0;Sound = Music[FlagNo];P1 = duan[FlagNo+1];}void BeepTimer0(void) interrupt 1 //音符发生中断{BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0;}//*******************************************************************void Play(unsigned char Signature,unsigned Octachord,unsigned int Speed) {unsigned int NewFreTab[12]; //新的频率表unsigned char i,j;unsigned intPoint,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;#ifdef USE_LCDlcd_init();lcd_write_string(0,"MusicPlayer");#endifAgain :Delay1ms(600);for(i=0;i<12;i++) // 根据调号及升降八度来生成新的频率表{j = i + Signature;if(j > 11){j = j-12;NewFreTab[i] = FreTab[j]*2;}elseNewFreTab[i] = FreTab[j];if(Octachord == 1)NewFreTab[i]>>=2;else if(Octachord == 3)NewFreTab[i]<<=2;}SoundLength = 0;while(Sound[SoundLength] != 0x00) //计算歌曲长度{SoundLength+=2;}Point = 0;Tone = Sound[Point];Length = Sound[Point+1]; // 读出第一个音符和它时时值LDiv0 = 12000/Speed; // 算出1分音符的长度(几个10ms) LDiv4 = LDiv0/4; // 算出4分音符的长度LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最长间隔标准TR0 = 0;TR1 = 1;while(Point < SoundLength){if(KeyScan())goto Again; /*more keyscan for speed*/SL=Tone%10; //计算出音符SM=Tone/10%10; //计算出高低音SH=Tone/100; //计算出是否升半CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率if(KeyScan())goto Again; /*more keyscan for speed*/ if(SL!=0){if (SM==1) CurrentFre >>= 2; //低音if (SM==3) CurrentFre <<= 2; //高音Temp_T =65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值Sound_Temp_TH0 = Temp_T/256;Sound_Temp_TL0 = Temp_T%256;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿}if(KeyScan())goto Again; /*more keyscan for speed*/ SLen=LengthTab[Length%10]; //算出是几分音符XG=Length/10%10; //算出音符类型(0普通1连音2顿音)FD=Length/100;LDiv=LDiv0/SLen; //算出连音音符演奏的长度(多少个10ms)if (FD==1)LDiv=LDiv+LDiv/2;if(XG!=1)if(XG==0) //算出普通音符的演奏长度if (SLen<=4)LDiv1=LDiv-LDiv4;elseLDiv1=LDiv*SOUND_SPACE;elseLDiv1=LDiv/2; //算出顿音的演奏长度elseLDiv1=LDiv;if(SL==0) LDiv1=0;LDiv2=LDiv-LDiv1; //算出不发音的长度if(KeyScan())goto Again; /*more keyscan for speed*/ if (SL!=0){TR0=1;for(i=LDiv1;i>0;i--) //发规定长度的音{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;if(KeyScan())goto Again; /*more keyscan for speed*/}}if(KeyScan())goto Again; /*more keyscan for speed*/if(LDiv2!=0){TR0=0; BeepIO=0;for(i=LDiv2;i>0;i--) //音符间的间隔{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;if(KeyScan())goto Again; /*more keyscan for speed*/}}Point+=2;Tone=Sound[Point];Length=Sound[Point+1];if(KeyScan())goto Again; /*more keyscan for speed*/#ifdef USE_LCDlcd_write_char(12,FlagNo+49);#endif}BeepIO = 0;FlagNo ++;if (FlagNo == MaxNo)FlagNo =0;Sound = Music[FlagNo];P1 = duan[FlagNo+1];}/**************************************************************功能:键盘扫描函数入参: viod KeyF 下一首KeyB 上一首KeyT 暂停返回: unsigned char1 需跳转 0 不跳转***************************************************************/ static unsigned char KeyScan(void){unsigned char Cont;if (KeyF == 0){ //前进Delay1ms(5);if (KeyF == 0){while(KeyF == 0){EA = 0;FlagNo ++;if (FlagNo == MaxNo)FlagNo =0;P1 = duan[FlagNo+1];Beep();Delay1ms(600); //是长按EA = 1;}if (FlagNo == MaxNo)FlagNo =0;Sound = Music[FlagNo];P1= duan[FlagNo+1]; //刷显示while(KeyF == 0);return 1;}}if (KeyB == 0){ //后退Delay1ms(5);if (KeyB == 0){while(KeyB == 0){EA = 0;FlagNo --;if (FlagNo == -1)FlagNo =MaxNo-1;P1 = duan[FlagNo+1];//刷显示Beep();Delay1ms(600); //是长按EA = 1;}if (FlagNo == -1)FlagNo =MaxNo-1;Sound = Music[FlagNo];P1 = duan[FlagNo+1];while(KeyB == 0);return 1;}}if (KeyT == 0){ //暂停Delay1ms(20);Cont = 0;EA = 0;TR0 = 0;TR1 = 0;if (KeyT == 0){RunStop = ~RunStop;while(KeyT == 0); //等待第一次释放Beep();if (!RunStop){ //是暂停则关中断和定时器EA = 0;TR0 = 0;TR1 = 0;while(KeyT == 0); //检测第二次按键并等待它释放(若有的话) while (KeyT){ //第二次释放了等待第三次按下P1 = duan[Cont++%10]; //第三次未按下则暂停数秒0~9Delay1ms(100);} //此处暂停直到再次有按键低电平EA = 1; //重开定时器和中断TR0 = 1;TR1 = 1;Sound = Music[FlagNo];P1 = duan[FlagNo+1]; //恢复原来的显示}}EA = 1;TR0 = 1;TR1 = 1;return 0;}return 0;}void Beep(void){unsigned char i;for(i = 0;i < 200 ;i ++){BeepIO = ~BeepIO;Delay1ms(1);}}Playmusic:#include <REG52.H>#include "Music.h"#include "SoundPlay.h"void Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}main(){InitialSound();while(1){Play(0,3,380);Delay1ms(500);}}Music:#include "Music.h"//*****************************Music******************************** //挥着翅膀的女孩unsigned char code Music_1[]={0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};//同一首歌unsigned char code Music_2[]={0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x020x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00 };//两只蝴蝶unsigned char code Music_3[] ={0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01, 0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02, 0x10,0x03, 0x15,0x00, 0x00,0x00 };总结1.本学期学习单片机的时间只有十几周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次编写单片机的大程序,很有成就感。
单片机数字音乐盒设计
单片机数字音乐盒设计
单片机数字音乐盒是一种基于单片机的音乐播放器,可以通过程序控制播放不同的音乐。
下面是一个简单的单片机数字音乐盒的设计思路:
1. 材料准备:
- 单片机:选择一种合适的单片机,如Arduino或者STM32等。
- 扬声器:选择一种合适的扬声器,可以是小型的音箱或者
蜂鸣器等。
- 按键:选择一组适量的按键,用于控制音乐的播放、暂停、切换等功能。
- 电源:准备一块适量的电源供电给单片机。
2. 程序设计:
- 编写单片机的控制程序,包括初始化单片机和音频模块、
判断按键输入、控制音乐的播放等功能。
- 将音乐转化为单片机可识别的数据,可以将音乐文件先转
化为.wav格式,再通过程序将.wav文件转化为单片机可以播
放的数据格式。
3. 连接电路:
- 将单片机与扬声器连接起来,通过合适的音频线连接扬声
器的输入端和单片机的输出端。
- 连接按键到单片机的输入口,使单片机可以接收到按键的
输入信号。
4. 调试测试:
- 将单片机与电源连接并上电。
- 通过按键测试音乐的播放、暂停和切换等功能。
- 如果出现问题,可以通过调试程序和检查电路连接等方式进行故障排除。
基于单片机的电子音乐盒的设计与实现
基于单片机的电子音乐盒的设计与实现引言:电子音乐盒是一种能够播放预先录制音乐的装置。
传统的音乐盒通常使用机械装置来驱动音乐的播放,而基于单片机的电子音乐盒则采用了电子技术来实现这一功能。
本文将介绍基于单片机的电子音乐盒的设计与实现。
设计方案:1.输入模块:输入模块主要负责接收用户的输入,包括选择音乐和设置播放模式。
可以使用按钮、旋钮或触摸屏等方式来作为输入设备。
当用户选择音乐或设置播放模式时,输入模块将会发送相应的信号给控制模块。
2.存储模块:存储模块用于存储音乐的数据,可以使用闪存、SD卡或EEPROM等存储设备。
音乐的数据可以通过计算机编程的方式进行录制和存储。
3.解码模块:解码模块是将存储模块中的音乐数据解码为可供音频输出的信号。
解码模块通常包括一个解码器芯片和一些辅助电路,用于将数字信号转换为模拟信号。
4.音频输出模块:音频输出模块用于将解码模块输出的音频信号转换为可听的声音。
音频输出模块通常包括一个功放芯片和声音放大器等辅助电路。
5.控制模块:控制模块是整个音乐盒的核心,它接收输入模块的信号,并根据输入信号来控制存储模块、解码模块和音频输出模块的工作。
控制模块通常由一块单片机芯片和一些外围电路组成。
实现步骤:1.设计音乐数据格式:根据实际需求设计音乐数据的存储格式,包括音符音高、音符时长等信息。
可以使用标准的音乐符号来表示音乐数据。
2.编写控制程序:使用适当的编程语言编写控制程序,程序可以根据输入信号来选择和播放音乐。
控制程序需要与输入模块、存储模块、解码模块和音频输出模块进行交互。
3.实现输入模块:根据设计方案中的输入要求选择合适的输入设备,并编写对应的驱动程序。
驱动程序可以根据用户的输入来改变控制程序的运行状态。
4.实现存储模块:选择合适的存储设备,并编写读取和写入音乐数据的程序。
存储模块的程序可以根据控制程序的请求来读取特定的音乐数据。
5.实现解码模块:选择合适的解码器芯片,并编写相应的解码程序。
基于单片机的数字式音乐盒设计
基于单片机的数字式音乐盒设计【摘要】基于单片机的数字式音乐盒设计旨在利用单片机技术实现音乐盒的数字化,提升传统音乐盒的功能和性能。
本文首先介绍了背景和研究意义,说明了数字式音乐盒在现代社会中的重要性和应用前景。
接着对音乐盒的原理进行了分析,详细讨论了单片机的选择及功能设计、音乐数据存储与播放控制、外围电路设计等关键技术。
在系统性能测试部分,对设计的音乐盒进行了全面测试和评估,验证了其稳定性和可靠性。
通过设计成果总结和存在问题及改进方向展开讨论,同时展望了未来数字式音乐盒的发展前景。
这项研究将为数字音乐盒的进一步发展提供一定的参考和指导。
【关键词】单片机、数字式音乐盒、音乐数据、播放控制、外围电路、系统性能测试、设计成果、存在问题、改进方向、未来展望1. 引言1.1 背景介绍数字式音乐盒不仅可以实现多种音乐的存储和播放,还可以根据用户的需求进行定制化的设计,比如添加特定的音效、调节音乐的节奏和音量等。
通过单片机的控制,数字式音乐盒可以实现更加智能化的操作和更加丰富的功能,使其成为一种更具有个性化和趣味性的音乐设备。
本文将从音乐盒原理分析、单片机选择及功能设计、音乐数据存储与播放控制、外围电路设计和系统性能测试等方面展开讨论,旨在为基于单片机的数字式音乐盒设计提供一种全面而有效的解决方案,同时也为数字化音乐盒的发展和应用提供更多的思路和可能性。
1.2 研究意义数字式音乐盒是一种集合了音乐和电子技术的创新产品,它能够播放各种不同的音乐,给人们带来美妙的听觉享受。
对于现代人们来说,音乐已经成为了生活中不可或缺的一部分,能够通过音乐来放松心情、增添生活情趣。
设计一款基于单片机的数字式音乐盒具有重要的研究意义。
数字式音乐盒的设计可以促进人们对音乐产品的需求和创新设计的关注,推动整个音乐产业的发展。
随着科技的不断进步,数字音乐盒不仅能够实现音乐播放功能,还可以加入更多的智能化设计,提高用户体验。
设计基于单片机的数字式音乐盒可以促进对电子技术在音乐领域的应用研究,进一步推动电子技术的发展。
单片机音乐盒的课程设计
单片机音乐盒的课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解音乐盒制作的硬件组成和工作原理。
2. 使学生了解并掌握音乐盒编程的基础知识,包括音符、节拍和旋律的表示方法。
3. 让学生掌握音乐盒电路的搭建方法,了解相关电子元器件的功能和连接方式。
技能目标:1. 培养学生动手操作能力,能独立完成音乐盒硬件电路的搭建。
2. 培养学生编程能力,使其能编写简单的音乐程序,实现对音乐盒的控制。
3. 培养学生解决问题的能力,能针对音乐盒制作过程中遇到的问题进行分析和调试。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学生探究科学的热情。
2. 培养学生团队合作精神,使学生学会与他人合作共同完成任务。
3. 培养学生创新思维,鼓励学生发挥想象,设计独特的音乐作品。
分析课程性质、学生特点和教学要求,本课程目标旨在让学生在掌握单片机基础知识的基础上,通过动手实践,培养其编程和电子制作能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 理论知识:- 单片机原理:介绍单片机的基本概念、结构及其工作原理。
- 音乐知识:讲解音符、节拍、旋律等基本音乐概念及其在编程中的表示方法。
- 电子元器件:介绍常用的电子元器件(如电阻、电容、二极管等)及其在音乐盒电路中的应用。
2. 实践操作:- 音乐盒硬件搭建:指导学生按照电路图搭建音乐盒硬件,包括单片机、扬声器、电子元器件的连接。
- 编程控制:教授学生使用编程软件,编写音乐程序,实现对音乐盒的控制。
- 调试与优化:教授学生如何对音乐盒进行调试,包括查找故障、优化程序等。
3. 教学大纲:- 第一阶段:单片机原理及音乐知识学习,占总课时1/4。
- 第二阶段:电子元器件认知及音乐盒硬件搭建,占总课时1/4。
- 第三阶段:编程控制与调试优化,占总课时1/2。
4. 教材章节:- 单片机原理与编程:《单片机原理与应用》第1章、第2章。
基于单片机的数字式音乐盒设计
基于单片机的数字式音乐盒设计一、引言音乐盒是一种能播放旋律的小型装置,常见于饰品或礼物中。
传统的音乐盒通常采用机械结构来产生音乐,但随着技术的进步,数字式音乐盒开始逐渐普及。
本文将以单片机为核心,设计一款数字式音乐盒,实现多种旋律的自由切换、音量调节和节拍设置。
二、硬件设计1.单片机选择由于单片机需要处理音乐播放的计算和控制,因此需要选择性能较高的单片机作为核心处理器。
常用的单片机有8051系列、PIC系列以及Arduino等。
本设计选择Arduino UNO作为单片机,因其性能稳定、易用性高。
2.音频模块与扬声器音频模块是用于产生音乐信号的模块,常见的有MP3解码芯片、DAC芯片等。
本设计选择MP3解码芯片作为音频模块,它可以播放预先录制好的音乐文件,并输出为模拟音频信号。
模拟音频信号经过放大电路后,驱动扬声器播放出声音。
3.控制模块与输入按键控制模块是用来接收用户输入指令,并进行相应的处理和控制的模块。
本设计选用几个按键作为输入,通过Arduino的数字IO口来接收按键信号,从而实现音乐切换、音量调节和节拍设置等功能。
4.电源模块电源模块用于为整个系统提供电能,一般选择DC电源或者电池供电。
本设计选择直流电源供电,通过稳压电路将输入电压稳定为单片机和其他模块所需的工作电压。
同时,为了方便携带和使用,电源模块还可以设计为可充电模式,减少电池更换的频率。
三、软件设计1.主程序框架软件设计的主程序框架分为三个模块:音乐播放控制模块、输入按键检测模块和音量调节模块。
主程序通过循环结构,不断检测按键输入,并根据用户的指令进行相应的处理和控制。
2.音乐播放控制模块音乐播放控制模块是整个设计的核心模块,它通过与MP3解码芯片的通信,实现音乐的自由切换。
MP3解码芯片可以将预先录制好的音乐文件保存在存储器中,通过与单片机的串行通信接口,将音乐数据传输到单片机中进行解码和播放。
音乐播放控制模块实现了音乐的播放、暂停、停止等操作,并提供了多个音乐旋律的选择。
数字音乐盒
单片机课程设计-数字音乐盒作者:杜斐斐/王薄单片机课程设计实验报告课程设计题目:数字音乐盒课程设计要求:1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)2.采用LCD显示信息3.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)4.可通过功能键选择乐曲,暂停,播放。
5.选作内容:显示乐曲播放时间或剩余时间硬件电路:本设计中用到了89C51单片机,4*4键盘,蜂鸣器,16*2 LCD,七段显示数码管LED。
原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
也可在LED显示歌曲号。
(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。
(2)用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a,b,c,d,e,f,g,用P2.0~P2.7为数码管位选信号。
(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0~P0.7作为LCD的D0~D7的控制信号。
(4)用P3.7口控制蜂鸣器。
(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
电路图:【试验时请仔细阅读后文说明!此图仅为我站制作,并不代表原作者意愿;若您制作成功,望在网络推广。
】实验控制流程图如下:键盘如下:实验程序如下:RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2;******************************************** L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;******************************************* org 0000hljmp mainORG 000BHLJMP TT0ORG 001BHLJMP T1INTorg 1000hmain:;-----------------------;液晶初始化MOV SP,#70HMOV P0,#01H ;清屏CALL ENABLEMOV P0,#38H ;8位,2行显示lCALL ENABLEMOV P0,#0FH ;屏显on,光标on,闪烁on lCALL ENABLEMOV P0,#06H ;计数地址加1,显示幕on lCALL ENABLE;-------------------------------内存初始化lcall initil;-------------------------------key1:lcall keylcall moddljmp key1;---------------------键盘扫描key:nopnoplcall ksjnz k1 ;有按键转到K1lcall kaijilcall SOPxn:ljmp keyk1:lcall moddlcall moddlcall ksjnz k2ljmp keyk2:mov R2,#0feh ;读键盘mov R4,#00hk3:mov A,R2mov P1,Amov A,P1JB ACC.4,L1 ;为1跳转,第一行无按键mov a,#00hljmp lkL1:jb acc.5,L2mov a,#04hljmp lkL2:jb acc.6,L3mov a,#08hljmp lkL3:jb acc.7,next1mov a,#0ch;------------------------------------------------------- lk:add a,R4push acck4:lcall delay1 ;若同时有其他按键,则等待lcall ksjnz k4;-------------------------------------------------------- mov r3,#07hclr amov r0,#30hmov r1,#31hmm1:mov a,@r1mov @r0,ainc r0inc r1djnz r3,mm1pop accmov @r0,aRET;------------------------------------------------------ next1:inc R4 ;------列扫描mov a,R2JNB acc.3,n2ljmp n1n2:ljmp keyn1:rl amov R2,aljmp k3;----------------------------------------------ks:mov a,#0f0h ;判断P1口mov P1,anopmov a,P1cpl aanl a,#0f0hRET;-------------------------------------------------- DELAY1:SETB RS0dl:mov R5,#0ahdl2:mov R6,#63dl3:nopnopdjnz R6,dl3djnz R5,dl2CLR RS0RET;--------------------------------------------------- ;30H-37H初值为零;---------------------------------------------------- initil:mov r3,#08hmov r0,#30hm1:mov @r0,#00hinc r0djnz r3,m1RET;---------------------------------------------------- ;显示;--------------------------------------------------- modd:MOV P0,#8EHlCALL ENABLEmov A,37Hmov DPTR,#TABLE3MOVC A,@A+DPTRlCALL WRITE2RET;-------------------------------------------------- ;开机提示字;-------------------------------------------------mov a,37hcjne a,#0fh,DFFMOV P0,#80H ;设光标地址lCALL ENABLEMOV DPTR,#TABLE1;写数据lCALL WRITE1DFF:RET;---------------------------------------------- ;按键值播放歌曲;---------------------------------------------- SOP:mov a,37hcjne a,#01h,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2lcall MAIN0A11:CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20LCALL INITILE2lcall MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30LCALL INITILE2lcall MAIN0A33:CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE40MOV 53H,#LOW TABLE40LCALL INITILE2lcall MAIN0A44:CJNE A,#05H,A55LCALL MODDMOV 52H,#HIGH TABLE50MOV 53H,#LOW TABLE50LCALL INITILE2lcall MAIN0A55:CJNE A,#06H,A66LCALL MODDMOV 52H,#HIGH TABLE60MOV 53H,#LOW TABLE60LCALL INITILE2lcall MAIN0A66:CJNE A,#07H,A77LCALL MODDMOV 52H,#HIGH TABLE70MOV 53H,#LOW TABLE70LCALL INITILE2lcall MAIN0A77:CJNE A,#08H,A88LCALL MODDMOV 52H,#HIGH TABLE80MOV 53H,#LOW TABLE80LCALL INITILE2lcall MAIN0A88:CJNE A,#09H,A99LCALL MODDMOV 52H,#HIGH TABLE90MOV 53H,#LOW TABLE90LCALL INITILE2lcall MAIN0A99:CJNE A,#0AH,AAALCALL MODDMOV 52H,#HIGH TABLE100MOV 53H,#LOW TABLE100LCALL INITILE2lcall MAIN0AAA:RET;****************************************** INITILE2:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HMOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0DH ;显示冒号CALL ENABLECALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0CDH ;显示冒号CALL ENABLECALL WRITE2MOV A,SECMOV B,#10DIV ABADD A,#30HMOV P0,#0CEH ;显示秒十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位CALL ENABLECALL WRITE2MOV P0,#0C0H ;设光标地址CALL ENABLEMOV DPTR,#TABLE2;写数据CALL WRITE1RET;*********************************************写指令ENABLE:CLR RSCLR RWCLR ELCALL DELAYSETB ERET;**********************************************写数据WRITE1:MOV R1,#00HA1:MOV A,R1MOVC A,@A+DPTRCALL WRITE2INC R1CJNE A,#0FEH,A1 ;未到字符串末尾继续RETWRITE2:MOV P0,ASETB RSCLR RWCLR ECALL DELAYSETB ERET;********************************************** DELAY:MOV R4,#05D1:MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET;----------------------------------------------TAB:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0a1h,86h,8ehTAB1:db 89h,86h,0c7h,0c7h,0c0hTAB2:db 0c6h,88h,0c0hTABLE1:DBWELCOM HERE,0FEHTABLE2:DBDFF WB ,0FEHTABLE4:DB CAU,0FEHTABLE3:DB 30H,31H,32H,33hDB 34H,35H,36H,37HDB 38h,39H,41H,42HDB 43H,44H,45H,46H;-------------------------------------------------------------------- ;播放歌曲程序;-------------------------------------------------------------------- MAIN0:MOV TMOD,#11HMOV IE,#8aH;MOV TH1,#3cH;MOV TL1,#0b0Hlcall ksjnz TTM12MOV 40H,#00H;---------------------------------------------------------NEXT20:MOV A,40HMOV DPH,52HMOV DPL,53HMOVC A,@A+DPTRMOV R2,AJZ STOPANL A,#0FHMOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1;---------------------------------------------------------- SING:DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,@A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,@A+DPTRMOV TL0,AMOV 20H,ASETB TR0SETB TR1W1:LCALL DELAY30INC 40HLCALL KS ;------有键跳出JNZ STOPLJMP NEXT20;----------------------------------------------------------- STOP:CLR TR0CLR TR1LJMP MAIN0;---------------------------------------------------------- TTM12:LCALL K2MOV A,37HCJNE A,#0EH,TTM13CLR TR1LCALL DELAY1TTM120:LCALL KSLCALL DELAY1JZ TTM120LCALL K2MOV A,37HCJNE A,#0EH,TTM120SETB TR1LJMP NEXT20TTM13:CJNE A,#0CH,TTM14MOV A,52HINC AMOV 52H,AINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM14:CJNE A,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AMOV A,36HDEC AMOV 37H,A;------------------------------------------------------TTM2:RET;*************************************************** ;定时器中断子程序0;*************************************************** TT0:PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI;*************************************************** ;定时器中断子程序1;*************************************************** T1INT:MOV TH1, #3cHMOV TL1, #0b0HDJNZ L50MS,X4MOV L50MS,#20;****************---每秒种时钟刷新秒显示一次SECSET:MOV A,SECDIV ABADD A,#30HMOV P0,#0CEH ;显示秒十位lCALL ENABLElCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位lCALL ENABLElCALL WRITE2MOV A,SECINC AMOV SEC,AXRL A,#60X4:JNZ OUTMINSET:MOV SEC,#00H;*************************************每分钟刷新分显示一次MOV A,MININC AMOV MIN,AMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位lCALL ENABLElCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位lCALL ENABLElCALL WRITE2MOV A,MINMOV B,#3MUL ABMOV B,#100DIV ABMOV R2,AMOV A,#10XCH A,BDIV ABMOV A,MINJNZ OUTHOUSET:MOV MIN,#00H;**************************************每小时刷新小时显示一次MOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,HOUINC AMOV HOU,AXRL A,#10JNZ OUTSJMP OVERFLOWOUT:RETI;*************************************溢出处理OVERFLOW:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HRETI;--------------------------------------------------------------------DELAY30:MOV R7,#2W2:MOV R4,#125W3:MOV R3,#248DJNZ R3,$DJNZ R4,W3DJNZ R7,W2DJNZ R1,DELAY30RET;--------------------------------------------------------------------TABLE00:DW 64580,64684,64777,64820DW 64898,64968,65030,64260DW 64400,64524,65058,63835,64021;-------------------------------------------------------------------;第一首《精忠报国》;--------------------------------------------------------------------TABLE10:DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H DB 52H,62H,7FH,74H,04H,58H,6FHDB 00;--------------------------------------------------------------------;第二首《月亮代表我的心》;--------------------------------------------------------------------TABLE20:DB 02H,82HDB 16H,32H,54H,02H,52HDB 0A6H,32H,54H,02H,52HDB 64H,74H,0B6H,64HDB 52H,5CH,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB 26H,12H,94H,22H,32HDB 2CHDB 32H,52HDB 36H,22H,14H,54HDB 0ACH,92H,0A2HDB 96H,0A2H,96H,82HDB 3CH,54HDB 36H,22H,14H,54HDB 0ACH,92H,0A2HDB 16H,12H,14H,22H,32HDB 2CH,02H,82HDB 16H,32H,56H,12HDB 0A6H,32H,56H,52HDB 66H,72H,0B6H,62HDB 62H,52H,58H,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB 26H,92H,0A4H,12H,22HDB 1CHDB 00;------------------------------------------------------------------- ;第三首《看我七十二变》;------------------------------------------------------------------- TABLE30:DB 0d4H,84H,94H,82H,92HDB 12H,22H,82H,92H,02H,92H,82H,0d2HDB 82H,92H,14H,84H,02H,0d1H,0d1HDB 0c2H,0d2H,84H,0d2H,0d2H,82H,82HDB 84H,82H,82H,94H,82H,0d2HDB 82H,82H,82H,92H,02H,82H,82H,0d2HDB 0c4H,84H,0d4H,92H,0d2HDB 82H,0d2H,82H,92H,98HDB 04H,94H,88HDB 04H,94H,88HDB 04H,94H,88HDB 04H,94H,88H,04HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,22HDB 54H,44H,34H,12H,22HDB 34H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,22HDB 54H,44H,32H,22H,12H,92HDB 00;-------------------------------------------------------------------- ;第四首《同一首歌》;-------------------------------------------------------------------- TABLE40:DB 88h,14h,24h,36H,42H,34H,14H,28H,14H,94HDB 1fH,88H,14H,24H,34H,32H,42H,54H,14HDB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H DB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3fHDB 46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2H DB 92H,84H,94H,1fH,0b8H,68H,46H,52H,68HDB 74H,72H,72H,74H,62H,52H,3fH,0b8H,68HDB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2fHDB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12HDB 94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fHDB 00;--------------------------------------------------------------------;第五首《大海》;--------------------------------------------------------------------TABLE50:DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1cHDB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52HDB 62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22HDB12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,14H,0b2H,62H,52H,54H,62H,54H,32H,52 HDB 66H,0b2H,0b4H,62H,52H,5cH,32H,52H,62H,64H,62H,64H,0b2H,62H,52H,54HDB 62H,54H,32H,22H,12H,14H,12H,14H,54H,3cH,32H,22H,12H,14H,12H,14H,22H,32HDB 52H,54H,32H,54H,32H,52H,6fH,04H,02H,92H,32H,24H,12H,1fHDB 00;--------------------------------------------------------------------;第六首《两只蝴蝶》;--------------------------------------------------------------------TABLE60:DB32H,22H,38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,92H,88H,04H, 32H,22HDB38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,21H,92H,12H,28H,04H,32H,22H DB 38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,91H,11H,88HDB 04H,32H,52H,58H,02H,52H,62H,52H,38H,04H,22H,22H,24H,22H,32H,22H,12H,92H,92H DB 12H,12H,1cH,08H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22HDB38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4 H,72HDB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,32H,22H,32HDB 58H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22HDB38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4 H,72HDB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,84H,92H,1cHDB 00;--------------------------------------------------------------------;第七首<<世上只有妈妈好>>;--------------------------------------------------------------------TABLE70:DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 00;--------------------------------------------------------------------;第八首歌《彩云追月》;--------------------------------------------------------------------TABLE80:DB86H,92H,12H,22H,32H,52H,68H,63H,52H,34H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H DB62H,0B2H,0B2H,62H,52H,32H,52H,52H,51H,61H,51H,31H,34H,52H,62H,74H,32H,52H,52H,3 2H,21H,31H,21H,11H,24HDB32H,52H,52H,32H,22H,12H,24H,32H,52H,52H,32H,62H,52H,61H,51H,31H,21H,21H,31H,21H, 11H,1CHDB21H,31H,22H,23H,31H,21H,18H,02H,0B2H,0BCH,0B4H,72H,61H,51H,72H,61H,71H,61H,51H ,61H,71H,61H,6FHDB86H,94H,12H,22H,32H,52H,64H,62H,51H,31H,52H,21H,31H,21H,33H,62H,0B2H,0B2H,62H,5 1H,61H,51H,31H,54HDB62H,0B2H,72H,61H,51H,51H,61H,51H,31H,54H,61H,0B2H,72H,61H,51H,51H,61H,51H,31H,3 2H,21H,11H,32H,51H,61H,54HDB02H,32H,24H,32H,52H,52H,32H,22H,31H,21H,11H,24H,32H,52H,62H,0B2H,72H,61H,51H,61 H,51H,31H,32H,52H,52H,32H,62HDB51H,31H,31H,21H,11H,91H,23H,31H,21H,1CH,12H,24H,32H,62H,51H,31H,34H,0B4H,72H,61 H,51H,63H,71H,64HDB0B2H,54H,72H,62H,71H,61H,54H,61H,51H,31H,21H,34H,73H,61H,54H,22H,32H,52H,22H,36 H,52H,62H,61H,31H,32H,21H,11H,21H,11H,91H,81HDB94H,52H,62H,52H,42H,32H,22H,32H,52H,0B4H,74H,64H,52H,61H,51H,41H,5CH,02H,52H,0B 4H,74H,63H,51H,61H,51H,31H,21H;--------------------------------------------------------------------;第九首<<十年>>;--------------------------------------------------------------------TABLE90:DB02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H,83H,91H,0A2H,91H,81H ,94H,11H,0A1H,91H,0A1H,98H,03H,81H,0A1H,0A1H,91H,0A1HDB98H,04H,02H,11H,21H,32H,32H,22H,32H,21H,31H,51H,11H,13H,31H,22H,22H,21H,11H,0A1 H,11H,13H,11H,11H,0A1H,91H,0A1HDB11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08H,03H,81H,32H,21H,11H,2 2H,31H,21H,21H,83HDB01H,11H,91H,0A1H,11H,61H,51H,11H,34H,01H,31H,21H,31H,48H,23H,31H,32H,42H,38H,03 H,11H,21H,52H,31HDB33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H ,91H,92H,91H,11H,0A1H,91HDB0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31H,42H,51H,31H,31H,22H,11H,2 1H,52H,31H,33H,31H,31H,41HDB51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H, 0A1H,91HDB0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31H,63H,51H,32H,11H,21H,26H,11H,0A 1H,18HDB 00;--------------------------------------------------------------------;第十首<<你的爱给了谁>>;--------------------------------------------------------------------TABLE100:DB02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0 A1H,11H,0A1HDB9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21 H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92HDB02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,7 6H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 72H,62H,68H,02H,61H,51H,66H,62H,58H,0CH,02H,51H,41H,5FH02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0 A1H,11H,0A1HDB9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21 H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92HDB02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,7 6H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 66H,62H,54H,0B2H,71H,61H,6CHDB 00END按键功能说明:1~A:十首歌曲C:上一首歌曲D:下一首歌曲E:歌曲暂停F:开机画面程序调试中出现的问题及解决的办法:1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
单片机数字音乐盒设计教材
单片机数字音乐盒设计摘要:本设计是采用单片机为核心设计的数字音乐播放器。
它可以实现音乐的播放,可以通过功能键来选择乐曲,播放或暂停,上一曲或下一曲,并可以通过LCD屏幕显示正在播放的歌曲的序号,以及播放时间。
开机时有英文欢迎提示字符。
本音乐播放器可以播放十首歌曲。
主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIl C51进行编译,用Proteus软件来仿真。
关键词:数字音乐盒;单片机;智能化Digital Music Box DesignCHENYING Instructor:HUKEYONGAbstract:This design is using microcontroller as the core design of the digital music player . It can play music. It can function keys to select a song, play or pause on one or the next one. and the serial number of the song that is playing, as well as play time can be displayed through the LCD screen. English boot welcome prompt characters. The music player can play ten songs.The master chip is AT89C51, assembly language is programming, programming by KEIl C51 compile,then using Proteus software to simulate.Key words:Digital Music Box, SCM, Intelligent目录1 引言 (1)1.1单片机总体功能简介 (1)2 系统设计 (1)2.1总体设计方案 (1)2.2系统硬件设计 (2)2.3主要元器件介绍 (4)2.3.1 AT89C51单片机 (4)2.3.2 LM016L液晶显示器 (5)2.4 PROTEUS软件介绍 (6)3 软件设计及仿真 (7)3.1程序流程 (7)3.2系统初始化程序设计 (7)3.3音调的确定 (8)3.4项目仿真 (9)总结 (10)参考文献: (10)附录一 (11)附录二 (11)1 引言目前,各种传感器、变送器、控制仪表已经普遍采用单片机应用系统。
基于51单片机数字音乐盒设计任务书
一、任务传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。
但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。
水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。
另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。
本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。
与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。
电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。
基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。
根据存储容量的大小,可以尽可能多的存储歌曲。
另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。
本设计是以STC89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。
用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址即可。
该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。
二、设计要求:1、利用按键切换演奏出不同的乐曲。
扬声器发出乐曲,按键可以切换LED闪烁的样式。
使用6个按键,两个用来切换歌曲,一个切换八路LED的变化花样。
一个用来启动,一个用来停止,另一个是复位。
2、用protel 99se设计电路图,pcb图等。
3、歌曲可以自己随意的写进音乐盒中。
4、由于歌曲的内存比较大,单片机内存小,将两块单片机一同使用,两者可以通讯。
5、数码管显示当前播放的是哪一首歌曲。
三、规定阅读的文献:[1] 李建忠.单片机原理及应用[M],西安电子科技大学出版社,2008.2.[2] 黄智伟.全国大学生电子设计竞赛系统设计[M],北京:北京航空航天大学出版社,2006.6.[3] 黄智伟.凌阳单片机课程设计指导[M],北京:北京航空航天大学出版社,2006.11.[4] 李广弟,朱月秀,王秀山.单片机基础[M],北京:北京航空航天大学出版社,2001.7.[5] 赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发与应用[M],西安:西安电子科技大学, 2000.[6] 候伯亨.VHDL硬件描述语言与数字逻辑电路设计[M], 西安:西安电子科技大学出版社,1999.[7] 康华光. 模拟电子技术基础(第四版)[M], 武汉:华中理工大学出版社,1999.指导教师签名:年月日教研室主任:年月日。
基于单片机的数字音乐盒的设计
基于单片机的数字音乐盒的设计摘要这次的数字音乐盒是建立在At89C51单片机程序上设计的,利用一系列单片机智能化设计的多功能实体。
用Proteus软件对所有系统进行仿真制作,而音乐盒源程序的C语言编译部分则是利用Keil软件来实现的。
本系统设计的音乐盒能产生不同的频率波形,主要是通过单片机控制定时器,使喇叭发出不同的音阶音律。
喇叭发出的音调定时常数被转化为乐谱,从而使音乐设备能够演唱出非常动听的音乐节律。
关键词:数字音乐盒;数码管;单片机;Proteus;KeilThe Designation Of Controllable Digital Music BoxBased On 51 ScmABSTRACT Digital music box that is built in At89C51 chip design procedure, using a series of single-chip design of intelligent multi function entity. For all the system simulation using Proteus software,and the music box source program of C language compiler is to use Keil software to implement. The music box design of the system can produce different frequency waveform, is mainly controlled by single chip microcomputer timer, the horn of different scale temperament. Timing constant pitch horn was transformed into the music, which makes music equipment can sing very pleasant music rhythm.Key words:Digital music box; Digital tube; AT89C51; PROTEUS; KEIL目录第1章前言 (1)1.1 课题背景 (1)1.2 课题研究的目的及意义 (1)1.3 论文的主要任务和所做的工作 (1)第2章单片机和音乐盒硬件的功能 (3)2.1 AT89C51芯片的功能 (3)2.2 音乐盒的硬件及其功能 (6)第3章数字音乐盒的主体设计方案 (8)3.1 音乐盒的主体结构 (8)3.2 主设计软件的介绍 (8)3.2.1 编程软件KEIL的简介 (8)3.2.2 仿真软件PROTEUS的简介 (9)第4章音乐盒硬件设计 (10)4.1 总设计框图 (10)4.2各部分硬件的作用 (10)4.2.1时钟振荡电路 (10)4.2.2 LED和数码管的设计 (11)第5章音调和节拍的设计 (13)5.1 音调和节拍的设计以及音乐基础知识 (13)5.2 音调和节拍的编码 (14)第6章 C源程序设计 (15)6.1 音乐程序 (15)6.2 LED花样程序 (15)6.3 数码管程序 (16)第7章数字音乐盒总设计图与总程序 (18)7.1 仿真总图设计图 (18)7.2 音乐播放切歌部分程序 (18)第8章结论 (19)参考文献 (20)附录A总程序源代码及注释 (21)第1章前言1.1 课题背景21世纪的科技是属于单片机的科技时代,现在单片机应用极其普遍,技术也愈来愈成熟,基本上现如今各行各业都能看到单片机的存在。
STC89C51单片机的数字音乐盒设计(含代码)
HEFEI UNIVERSITYFPGA综述报告系别电子信息与电气工程系任课教师汪济洲班级姓名成绩日期数字音乐盒设计摘要:本设计是一个基于STC89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计4种。
播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
关键字:音乐盒 STC89C51单片机 KEIL PROTEUS 音调目录1概述 (3)1.1设计方案 (3)1.2研究内容 (3)1.3音乐盒的功能结构图 (3)2硬件设计 (4)2.1总体设计框图 (4)2.2各部分硬件设计及其原理 (4)2.2.1 STC89C51简介 (4)2.2.2 LED显示电路设计与原理 (5)2.2.3 时钟振荡电路 (5)2.3硬件电路图及功能 (6)3软件设计 (7)3.1音调、节拍以及编码的确定方法 (7)4.1.1 音调的确定 (7)4.1.2 节拍的确定 (8)4.1.3 编码 (9)4.2软件程序设计 (10)4.2.1 程序流程图及相应代码块 (10)4.2.2 程序源代码(见附录A) (14)5调试 (14)5.1检查硬件连接 (14)5.2检查软件系统 (14)5.3测试结果 (14)5.3.1.总体运行图 (14)5.3.2.花样灯4种花样图 (15)参考文献 (16)附录A 程序源代码及注释 (16)1概述本设计是以STC89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。
单片机数字音乐盒程序设计
《单片机原理及应用》课程设计报告题目数字音乐盒学号姓名邢安超张凯旋罗杰年级专业2012级自动化指导教师黄云飞完成日期2014年6月7日安徽师范大学物理及电子信息学院College of Physics and Electronic Information,AnhuiNormalUniversity目录摘要1引言21 课程设计目的32 课程设计任务及要求44 设计原理65 系统总体方案介绍65.1 系统组成框图65.2 音乐盒的功能76 硬件设计76.1 总体设计框图76.2各部分硬件设计及其原理86.3 硬件电路图及功能107 软件设计117.1 软件程序设计118 调试138.1 检查硬件连接138.2 检查软件系统138.3 测试结果14课程设计体会14参考文献15附录1数字音乐盒邢安超张凯旋罗杰,皖江学院摘要:本设计是采用单片机为核心设计的数字音乐盒。
它可以实现音乐的播放,可以通过功能键来选择乐曲,播放或暂停,并且可以通过LCD屏幕显示正在播放的歌曲的序号,及乐曲播放时间,开机时有英文欢迎提示字符,本音乐盒可以播放三首音乐。
主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIL C51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。
本系统功能键有一个2×4的键盘组成,其中1号到3号键是歌曲序列号键,可以直接选择音乐;4号键选择当前播放音乐的上一首音乐,5号键选择当前播放音乐的下一首音乐,6号键使音乐暂停播放,7号键显示开机画面。
键盘采用动态扫描方式。
每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。
若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。
同时启动定时器T1,计算音乐的播放的时间,并且启动LCD,在LCD上显示序号和播放时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机原理及应用》课程设计报告题目数字音乐盒学号1295054姓名邢安超张凯旋罗杰年级专业2012级自动化指导教师黄云飞完成日期2014 年 6 月7 日安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University目录摘要 (1)引言 (2)1 课程设计目的 (2)2 课程设计任务及要求 (2)4 设计原理 (3)5 系统总体方案介绍 (4)5.1 系统组成框图 (4)5.2 音乐盒的功能 (4)6 硬件设计 (4)6.1 总体设计框图 (4)6.2各部分硬件设计及其原理 (5)6.3 硬件电路图及功能 (7)7 软件设计 (8)7.1 软件程序设计 (8)8 调试 (9)8.1 检查硬件连接 (9)8.2 检查软件系统 (9)8.3 测试结果 (9)课程设计体会 (10)参考文献 (10)附录 (1)数字音乐盒邢安超张凯旋罗杰,皖江学院摘要:本设计是采用单片机为核心设计的数字音乐盒。
它可以实现音乐的播放,可以通过功能键来选择乐曲,播放或暂停,并且可以通过LCD屏幕显示正在播放的歌曲的序号,及乐曲播放时间,开机时有英文欢迎提示字符,本音乐盒可以播放三首音乐。
主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIL C51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。
本系统功能键有一个2×4的键盘组成,其中1号到3号键是歌曲序列号键,可以直接选择音乐;4号键选择当前播放音乐的上一首音乐,5号键选择当前播放音乐的下一首音乐,6号键使音乐暂停播放,7号键显示开机画面。
键盘采用动态扫描方式。
每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。
若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。
同时启动定时器T1,计算音乐的播放的时间,并且启动LCD,在LCD上显示序号和播放时间。
在制作过程中,我发现将音乐代码的首地址送出很难实现。
因为其首地址是十六位的,而单片机中我们能用的十六位的寄存器只有DPTR,但是DPTR在下面必须要用到,所以不能用。
把十六位地址拆成俩个八位的地址分高低位去送,用直接地址#high(4000h)去送,编译成功。
关键词:AT89C51,数字音乐盒, 2×4键盘,LCD,时钟震荡电路引言本课程设计是设计数字音乐盒及其播放程序。
乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。
实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。
如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。
使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。
FPGA预装了很多已构造好的参数化库单LPM器件。
通过引入支持LPM的EDA[1]软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
单片机制作的八音盒弥补了这些。
1 课程设计目的基于学习单片机课程的基础,锻炼我们的动手能力。
《单片机与接口技术》课程设计是单片机课程的综合性与实践性教学环节,课程设计的目的就是:a.综合运用单片机原理课程和单片机接口技术课程的知识,分析和解决实际应用中的问题进一步巩固、加深和拓宽所学的知识。
b.通过设计实践,逐步树立正确的设计思想,熟悉掌握单片机应用系统设计的一般规律,培养分析问题和解决问题的能力。
c.通过逻辑分析、方案设计、硬件电路连接、画程序流程图,汇编语言编程,上机调试,进行全面的单片微机应用基本技能的训练。
2 课程设计任务及要求以单片机为核心,设计一个数字音乐盒:利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s)。
采用LCD显示信息。
a. 开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。
b. 可通过功能键选择乐曲、暂停、播放。
c.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲d.采用LCD显示信息e.选作内容:显示乐曲播放时间或剩余时间3 设计意义a、有利于基础知识的理解通过《初中信息技术》必修部分的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。
但是,学生对于程序、病毒的内涵,程序与文档、数据的区别,计算机运行的机理等知识内容的理解比较肤浅。
学生如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。
b、有利于逻辑思维的锻炼在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。
写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。
程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
c、有利于与其他学科的整合在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。
在信息技术课中整合其它学科的知识,发挥信息技术的优势。
例如,在编写“一元二次方程求解”程序时,就复习了数学的相关知识。
而在讲解逻辑运算的知识时,我们又可以利用物理中的电路知识进行讲解,起到意想不到的效果。
d、有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。
4 设计原理当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
也可在LED显示歌曲号。
5 系统总体方案介绍5.1 系统组成框图音乐盒的系统结构以AT89C51单片机位控制核心,加上几个按键、时钟复位电路、蜂鸣器、LCD模块组成。
单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐播放|暂停的样式以及蜂鸣器发音。
系统组成框图如图2.1所示。
图5.1 系统组成框图5.2 音乐盒的功能音乐盒的功能结构如图2.2所示。
1~3号开关负责切换播放歌曲,播放歌曲共3首,分别是同一首歌、世上只有妈妈好和精忠报国。
4、5号开关负责切换歌曲:上一首和下一首,6号开关负责歌曲的暂停和播放,7号开关是开机键。
6 硬件设计6.1 总体设计框图当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
也可在LED显示歌曲号。
6.2各部分硬件设计及其原理6.2.1 按键电路设计按键电路如图6.2所示:P1.0-P1.5控制按键,其中P1.0-P1.1扫描行,P1.4-P1.5扫描列。
图6.2 按键电路6.2.2 LCD 显示电路设计与原理如图6.3所示文字型LCD (16×2)的D0-D07端口与AT89C51端口P0.0-P0.7相连接VSS 与VEE 两端接地。
P2.0-P2.2作为LCD 的RS,R/W,E 的控制信号。
用P0.0-P0.7作为LCD 的D0-D7的控制信号。
A T89C51 2×4 按键文字型LCD(16×2) 蜂鸣器电源图6.3 LCD显示电路6.2.3 时钟振荡电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
振荡器电路图如下:图6.4 单片机内部、外部振荡电路6.3 硬件电路图及功能总体硬件电路实现功能如下,如图6.5所示电路中用P1.0~P1.5控制按键。
P0.0~P0.7控制LED。
P3.0控制蜂鸣器。
电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。
图6.5 硬件电路图7 软件设计7.1 软件程序设计7.1.1 程序流程图7.1.2 程序源代码(见附录)8 调试8.1 检查硬件连接在PROTUES检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:晶振电路的连接,复位电路是否设计正确。
8.2 检查软件系统1.根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。
2.将所有程序组织起来,在软件环境下运行,检查程序是否正确。
通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成HEX文件装载到单片机中,对硬件进行仿真。
8.3 测试结果图8.1 系统总体运行图课程设计体会这学期学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。
在一个好的氛围里才能踏下心来做东西,在这一段时间里,同学们都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。