基于C51单片机音乐盒设计

合集下载

基于51单片机的lcd多功能数字音乐盒设计(毕业设计)[管理资料]

基于51单片机的lcd多功能数字音乐盒设计(毕业设计)[管理资料]

毕业设计论文题目:基于51单片机的LCD多功能数字音乐盒设计学校:西北民族大学学院:电气工程学院专业班级:08电气工程及其自动化(1)班学号:P 0 8 1 6 1 3 3 1 6姓名:苏军指导老师:马慧兰基于51单片机的LCD多功能数字音乐盒设计摘要:本设计是应用MCS-51单片机原理和控制理论设计音乐盒演奏控制器的硬件电路,并利用汇编语言进行程序设计。

利用控制单片机内部的定时器来产生不同的频率的方波,驱动喇叭发出不一样的音乐,再通过延迟来控制发音时间的长短。

把乐谱变成相应的定时常数就可以从发音设备中演奏出动听的音乐。

这种控制电路结构简单,可用性高,应运性强,软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。

对单片机和音乐爱好者有不一样的借鉴价值。

关键词:单片机,汇编语言,音乐盒Based on 51 single-chip LCD multifunctiondigital music box designAbstract: This design is the application of MCS-51 single-chip microcomputer principle and control theory design music box play hardware circuit, and use assembly languages program design. Using single chip microcomputer control internal timer to produce a different frequency of square wave, drive speaker different music, again through the delay to control the length of time the pronunciation. The score into the corresponding time constant can play out in pronunciation equipment from beautiful music. This control circuit structure is simple, usability is high, The Times the gender is strong, software program to adapt to the wide, for different music only need to change the timing of corresponding constant can. The SCM and music lovers have different reference value.Key words: a single-chip microcomputer, assembly language, music box目录摘要 (2)关键词 (2)Abstract (2)Key words (2)前言 (3)第一章原理及硬件介绍 (5)1.1 基本原理简述 (5)1.2 STC89C52RC 介绍 (6)1.2.1主要特性 (6)1.2.2 STC89C52RC的工作模式 (6)1.2.3 STC89C52RC引脚功能说明 (6)1.3 LCD显示 (10)第二章软件仿真及测试 (11)开机第一首歌 (11)下一曲 (12)上一曲 (12)元件清单 (15)参考文献 (15)附录一源程序 (16)前言单片机是指一个集成在一块芯片上的完整计算机系统。

基于单片机音乐盒的设计

基于单片机音乐盒的设计

1 绪论1.1 概述随着信息技术革命的深入和计算机技术的飞速发展,单片机的应用越来越广泛,并逐渐发展成为一门关键的技术学科。

单片机具有一些突出优点:体积小、重量轻、耗电少、电源单一、功能强、价格低、运行速度快、抗干扰能力强、可用性高,所以在通信、家电、工业控制、仪器仪表、汽车等产品中都可以看到单片机的身影。

目前国内单片机的应用仍以MCS-51系列为主。

本案是以AT89C51芯片的电路为基础,外部加上功率放大器、放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。

用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。

对于不同型号的单片机只需要相应的改变一下地址即可。

该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大单片机和音乐爱好者提供了很好的借鉴。

1.2 单片机的特点及应用1.2.1 单片机的特点一块单片机芯片就是一台计算机。

由于单片机的这种特殊的结构形式,在某些应用领域中,它承担了大中型计算机和通用的微型计算机无法完成的一些工作。

使其具有很多显著的优点和特点,因此在各个领域中都得到了迅猛的发展。

单片机的特点可以归纳为以下几个方面:1) 具有优异的性能价格比单片机的这种高性能、低价格是它最显著的一个特点。

单片机尽可能把应用所需要的储存器,各种功能的I/O口都集成在一块芯片内,使之成为名副其实的单片机。

有的单片机为了提高速度和执行效率,开始采用了RISC流水线和DSP的设计技术。

使单片机的性能明显优于同类型的微处理器,有的单片机的ROM可达64KB(式中‘B’表示字节),片内RAM可达2KB,单片机的寻址已突破64KB的限制,八位和十六位单片机寻址可达1MB和16MB。

单片机另一个显著特点是量大面广,因此世界上各大公司在提高单片机性能的同时,进一步降低价格,性能/价格之比是各公司竞争的主要策略。

2) 集成度高、体积小、可靠性高单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连续,大大提高了单片机的可靠性与抗干扰能力。

基于51单片机音乐盒程序设计

基于51单片机音乐盒程序设计

基于51单片机音乐盒程序设计基于51单片机音乐盒程序设计一、功能设计说明1、电路设计实物图矩阵键盘部分电路图2、运行流程图程序开始播放小苹果歌曲否判断任意按键是否按下继续播放小苹果歌曲是否播放完成进入电子琴模式判断K16按键是否按下是3、电子琴模式按键对应发音设计按键发音按键发音低 1 中 2 K1 K9低 2 中 3 K2 K10低 3 中 4 K3 K11低 4 中 5 K4 K12低 5 中 6 K5 K13按键发音按键发音低 6 中 7 K6 K14低 7 高 1 K7 K15中 1 重新播放小苹果 K8 K16二、硬件电路说明1、程序下载电路音乐盒电路图ISP下载接口本设计采用的单片机为AT89S52单片机,需使用ISP下载器进行下载程序,程序下载电路图如图中ISP1接口.2、音乐发音电路IO口P10发出不同频率的脉冲,则BUZZER产生各种不同的声音,本设计采用12MHZ晶振,系统频率1MHZ,定时器计数一个1us,其对应关系如下表所示:频率简谱码(T音符音符频率(HZ) 简谱码(T值)(HZ) 值)低 1 DO 262 63628 # 4 FA# 740 64860 # 1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63853 # 5 SO# 831 64934 # 2 RE# 311 63928 中 6 LA 88064968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178中1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65282计算方法:例如产生262HZ频率(发音DO),周期T=1/262=3816 us,由于定时器中断使IO不停取反,故周期T=3816/2=1908 us定时器初值N=65536-1908=63628TH0=63628/256TL0=65536%256三、程序代码说明1 、脉冲产生采用定时器0溢出中断产生脉冲,定时器初始化如下:TMOD = 0x01; //定时器0工作方式1 ,即十六位计数器计数TR0 = 1; //启动定时器ET0 = 1; //定时器0溢出中断使能EA = 1; //总中断使能定时器0溢出中断产生脉冲,void Timer0() interrupt 1代码如下:TH0 = th0;TL0 = tl0;if(th0==0)BUZZER=1; //判断停顿,有停顿不发音else{BUZZER = ~BUZZER;} //无停顿发音2、音普规则:a、音普由一个字节十六进制数组成b、高4位代表节拍,一拍约400MS,将一拍分成8份c、低4位代表音符,一一对应Note[]列表d、0x20代表歌曲结束符e、uint code Note[]={0,64580,64684,64777,64820,64898,64968,65030,/*中音*/63628,63853,64021,64103,64260,64400,64524,/*低音*/65058,65110,65157,65178,65217,65252,65282/*高音*/};该列表为发音所对应的定时器初装值例如编写如下一段音乐列表:0x83,0x81,0x82,0x8d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40 0x40表示停顿4*50MS /*你是我的小呀小苹果*/3、音普列表解读while(Xiaopingguo[temp]!=0x20) //不停判断音乐是否结尾,结尾跳出{jiepai=Xiaopingguo[temp]>>4; //获取节拍,即高4位数yinpu=Xiaopingguo[temp]&0x0F; //获取音普,即低4位数Timer_Set(yinpu); //根据列表对应发音Delay(jiepai*50); //节拍temp++;P0 = 0x0f;if(P0!=0x0f)goto out;}void Timer_Set(uchar num)为定时器0赋值子程序,包含的代码如下: th0=Note[num]/256;tl0=Note[num]%256;四、程序代码编写/******************************************************************* ***************************项目名称:音乐盒单片机型号:AT89S52频率:外部石英晶振 12MHZ设计时间:2014-08-06设计者:小左MCU工作室Q Q: 576689422******************************************************************** *************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit BUZZER=P1^0;//蜂鸣器输出uchar th0,tl0; //定时器0赋值变量uchar start_; //返回变量uint code Note[]={0,64580,64684,64777,64820,64898,64968,65030,/*中音*/63628,63853,64021,64103,64260,64400,64524,/*低音*/65058,65110,65157,65178,65217,65252,65282/*高音*/};/*********************************************************************** **音普规则:1、音普由一个字节十六进制数组成2、高4位代表节拍,一拍约400MS,将一拍分成8份3、低4位代表音符,一一对应Note[]列表4、0x20代表歌曲结束符******************************************************************** ******/uchar code Xiaopingguo[]={0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40, /*你是我的小呀小苹果*/0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,/*怎么爱你都不嫌多*/0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40, /*红红的小脸温暖我的心窝*/0x42,0x81,0x42,0x43,0x42,0x43,0x42,0x23,0x25,0x85,0x30,0x45,0x10,0x4 5,0x30,0x45,0x10,0x45,0x30,0x85,0x85,0x85,0x40,/*点亮我生命的火火火火火火*/0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40, /*你是我的小呀小苹果*/0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,/*就像天边最美丽的云朵*/0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40, /*春天又来到了花开满山坡*/0x42,0x81,0x42,0x43,0x82,0x8c,0x8d,0x4d,0x41,0x8d,0x20 /*种下希望就会收获*/};//----延时子程序-------------------------------------------------- void Delay(uint xms){uint j;for(;xms>0;xms--)for(j=110;j>0;j--);}//--------------------------------------------------------------- //----定时器变量赋值--------------------------------------------- void Timer_Set(uchar num){th0=Note[num]/256;tl0=Note[num]%256;}//--------------------------------------------------------------- //----系统初始化------------------------------------------------- void Init(){BUZZER = 1; //关闭蜂鸣器TMOD = 0x01; //定时器0工作方式1TR0 = 1; //启动定时器ET0 = 1; //定时器0溢出中断使能EA = 1; //总中断使能start_ = 0; //返回变量初始化}//--------------------------------------------------------------- //----按键扫描--------------------------------------------------- void Key_Scan(){P0 = 0x0f;if(P0!=0x0f){Delay(5);if(P0!=0x0f){P0=0xfe;if(P0==0xee){Timer_Set(8);} //按键1被按下else if(P0==0xde){Timer_Set(12);}//按键5被按下else if(P0==0xbe){Timer_Set(2);} //按键9被按下else if(P0==0x7e){Timer_Set(6);} //按键13被按下else;P0=0xfd;if(P0==0xed){Timer_Set(9);} //按键2被按下else if(P0==0xdd){Timer_Set(13);}//按键6被按下else if(P0==0xbd){Timer_Set(3);} //按键10被按下else if(P0==0x7d){Timer_Set(7);} //按键14被按下else;P0=0xfb;if(P0==0xeb){Timer_Set(10);} //按键3被按下else if(P0==0xdb){Timer_Set(14);}//按键7被按下else if(P0==0xbb){Timer_Set(4);} //按键11被按下else if(P0==0x7b){Timer_Set(15);}//按键15被按下else;P0=0xf7;if(P0==0xe7){Timer_Set(11);} //按键4被按下else if(P0==0xd7){Timer_Set(1);} //按键8被按下else if(P0==0xb7){Timer_Set(5);} //按键12被按下else if(P0==0x77){start_=1;} //按键16被按下else;}}else{th0=0;}}//--------------------------------------------------------------- //----主程序----------------------------------------------------- void main(){uchar temp,yinpu,jiepai;Init();while(1){start:temp=0;while(Xiaopingguo[temp]!=0x20){jiepai=Xiaopingguo[temp]>>4; //获取节拍yinpu=Xiaopingguo[temp]&0x0F; //获取音普Timer_Set(yinpu);Delay(jiepai*50);temp++;P0 = 0x0f;if(P0!=0x0f)goto out;}out:th0 = 0;BUZZER = 1;//关闭蜂鸣器while(1){Key_Scan();if(start_==1){start_=0;goto start;}}}}//---------------------------------------------------------------//----定时器0中断服务程序---------------------------------------- void Timer0() interrupt 1{TH0 = th0;TL0 = tl0;if(th0==0)BUZZER=1; //判断停顿,有停顿不发音else{BUZZER = ~BUZZER;} //无停顿发音}//---------------------------------------------------------------- 更多精彩程序请在淘宝店铺中搜索“小左MCU”QQ:576689422。

基于C51单片机音乐盒设计

基于C51单片机音乐盒设计

基于51单片机的音乐盒设计摘要:随着科技越来越发达,单片机技术也越来越纯熟,单片机的应用也越来越广泛,可以说几乎很难找到哪个领域没有单片机的踪迹。

如今,单片机在各个领域都起着至关重要的作用。

以单片机为核心元件的数字音乐盒。

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。

该数字音乐盒具有体积小,重量轻,能演奏各种各样的音乐,功能多,外观绚丽多彩,使用非常方便等诸多优点。

而且具有一定的开发价值。

基于AT89C51单片机的可控数字音乐盒的程序设计。

通过PROTEUS仿真软件对硬件电路进行仿真制作以及利用KEIL软件对音乐盒源程序进行C 语言编译,而设计制作出的一个多功能数字音乐盒。

音乐盒通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。

程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。

一共设计了五首歌曲,同时还设计了三种LED彩灯的变化花样。

在演奏歌曲时彩灯随音调闪烁。

在停止演奏歌曲时三种彩灯花样开始闪烁。

歌曲和花样均可随意切换。

与此同时,数码管也不断变化数字,以此显示歌曲和彩灯花样的序号。

关键词: AT89C51;KEIL;PROTEUS;数字音乐盒;数码管1 设计任务要求设计一个基于51单片机的可控数字音乐盒,分析电路工作原理,设计电路图,编译有关音乐的程序,实现通过开关按钮控制播放五首不同的音乐的目的。

2电路设计2.1单片机和音乐盒硬件的功能随着当代单片机技术的突飞猛进,单片机的功能也越来越强大,主要包括有:(1)单片机可靠性高,处理功能强,速度快;(2)系统结构简单,使用方便,实现模块化;(3)单片机集成度高;(4)控制功能强大;(5)低电压,低功耗,便于生产便携式产品。

2.2 AT89C51芯片的功能AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。

俗称单片机。

引脚功能: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),不管是否有内部程序存储器。

基于51单片机的音乐盒设计报告

基于51单片机的音乐盒设计报告

摘要本作品利用单片机的IO口对蜂鸣器输送不同频率的信号,让单片机发出不同音调的声音。

以“新年好”曲调为基础以C51为语法编出51音乐盒的程序。

根据电路图焊接了蜂鸣器模块与TX-1C51开发板用杜邦线进行连接。

除了蜂鸣器外接模块外还使用了1602液晶显示模块作为外设连接。

本人对单片机演奏音乐比较有兴趣。

在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

关键词: 51单片机音乐盒液晶屏幕显示模块蜂鸣器模块 C51目录1 设计任务目的与要求 (1)1.1任务设计目的 (1)1.2任务要求 (1)2 模块及其原理介绍 (2)2.1蜂鸣器模块 (2)2.21602液晶显示模块 (2)3 设计方案 (3)3.1软件设计 (3)3.2硬件设计 (3)4 实验结果与数据分析 (4)4.1测试步骤 (4)4.2实验现象 (4)5 结论与问题讨论 (4)5.1完成设计的要求程度 (4)5.2遇到的问题以及解决办法 (4)5.3存在的不足及改进思路 (4)参考文献 (5)附录 (5)附录一:C51程序 (5)1 设计任务目的与要求1.1任务设计目的本人对单片机演奏音乐比较有兴趣,所以选择51音乐盒的题目。

本设计通过两个模块的制作并与开发板一并使用。

通过本次设计不止熟悉焊接和熟悉各个电子元器件,而且还提高了对外设模块使用单片机编程的技能。

基于51单片机数字音乐盒的设计毕业设计

基于51单片机数字音乐盒的设计毕业设计
作者签名:日 期:
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
b. 可通过功能键选择乐曲、暂停、播放。
第二章
2.1
该系统由延时165MS,即十六分音符子函数、延时1MS子函数、按键扫描子函数、播放音乐子函数、定时器1中断子函数、定时器0中断子函数、主函数和数据定义这几部分组成。
3、论文(设计说明书)所体现的整体水平
□ 优 □ 良 □ 中 □ 及格 □ 不及格
建议成绩:□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:(签名)单位:(盖章)
年 月 日
摘 要
本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。本音乐盒共有四首歌曲,用4个按键控制。播放歌曲时,蜂鸣器发出某个音调。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
单片机实物设计
题 目:单片机音乐盒设计
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

基于51单片机音乐盒课程设计

基于51单片机音乐盒课程设计

课程名称:微机原理课程设计题目:基于51单片机的音乐盒设计随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。

小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。

传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。

本设计是一个基于STC89C52RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。

该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。

使用两个按键控制音乐盒,一个按键用来控制歌曲的播放、暂停以及换曲,另一个用来控制数码管上歌曲次序的变化,本音乐盒共有三首歌曲。

播放歌曲时,相应歌曲对应相应数码管上歌曲次序的显示。

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试。

随后依照仿真布局在Altium Designer软件中绘制PCB单面板,检查无误后制成实物单面覆铜板。

关键字:STC89C52RC KEIL PROTEUS PCB一、设计任务与要求 .............................................................................................. - 4 -1.1 设计任务....................................................................................................................... - 4 -1.2 设计要求....................................................................................................................... - 4 -1.3 发挥部分....................................................................................................................... - 4 -二、方案总体设计 .................................................................................................. - 5 -2.1 方案列举....................................................................................................................... - 5 -2.2 方案论证....................................................................................................................... - 5 -2.3 总体设计原理............................................................................................................... - 5 -三、硬件设计 .......................................................................................................... - 6 -3.1 STC89C52RC芯片 ....................................................................................................... - 6 -3.2 晶振电路....................................................................................................................... - 7 -3.3 开关按键电路............................................................................................................... - 8 -3.4 P0口上拉电阻 .............................................................................................................. - 8 -3.5 复位电路....................................................................................................................... - 9 -3.6 蜂鸣器电路................................................................................................................. - 10 -3.7 电源电路..................................................................................................................... - 11 -3.8 一位共阴数码管......................................................................................................... - 12 -四、软件设计 ........................................................................................................ - 14 -4.1 软件设计程序流程图................................................................................................. - 14 -4.2 软件头文件定义以及字符类型定义......................................................................... - 15 -4.3 音频、音调程序设计................................................................................................. - 15 -4.4 按键与蜂鸣器接口端程序设计................................................................................. - 16 -4.5 外部中断程序设计..................................................................................................... - 16 -4.6 定时程序设计............................................................................................................. - 17 -4.7 延时程序编写............................................................................................................. - 18 -4.8 主程序的编写............................................................................................................. - 18 -五、系统仿真与调试 ............................................................................................ - 20 -5.1 仿真平台..................................................................................................................... - 20 -5.2 仿真调试..................................................................................................................... - 20 -5.3 测试总结..................................................................................................................... - 21 -六、PCB单面板制作 ........................................................................................... - 22 -6.1 绘制平台..................................................................................................................... - 22 -6.2 原理图的绘制............................................................................................................. - 22 -6.3 PCB单面板的绘制 ..................................................................................................... - 22 -七、设计总结与心得体会 .................................................................................... - 24 -7.1 设计总结..................................................................................................................... - 24 -7.2 心得体会..................................................................................................................... - 24 -八、参考文献 ........................................................................................................ - 25 -附录一:源程序 .................................................................................................... - 26 -一、设计任务与要求1.1 设计任务制作一个简易音乐盒,要求利用若干开关按键控制音乐播放并利用一位数码管显示相关消息。

基于c51单片机音乐盒设计.

基于c51单片机音乐盒设计.

基于c51单片机音乐盒设计.音乐盒是一种通过内置于其中的机械结构或者电流来制造音乐的一种装置,它是一种完全可以自己动手制作的小型装置。

音乐盒可以引起大家的兴趣,并且对于音乐爱好者而言,它更是不可或缺的工具。

而在本文中,我们将介绍一种基于c51单片机的音乐盒设计方案。

首先,我们需要了解c51单片机的一些基本特性和特点,这样才能更好地去理解音乐盒的设计方案。

c51单片机是一种非常常见的单片机,它具有操作简单,可扩展性强,代价低廉等特点,在市场中被广泛的应用在各种电子产品中。

基于c51单片机的音乐盒设计方案主要包括硬件部分和软件部分,接下来我们将详细介绍这两部分的内容。

硬件设计:1、音源部分音乐盒的核心部分是音源,所以我们需要采用一种高质量、高保真度的音源。

音源可以采用蜂鸣器、扬声器等。

2、时钟部分c51单片机的时钟部分是控制器的基础。

我们采取计数器,通过方波的输出频率来控制计数器进行计数,并通过定时器来实现时钟的计数。

时钟部分包括一定的高级电路,这些电路包括晶振、电容、电阻等等。

3、输入输出端口为了方便对音乐盒进行控制,我们需要在音乐盒中设置一些输入输出端口,这些端口可以通过外部设备来实现,可以通过按键来控制音乐盒的运作。

1、程序框架首先,我们需要确定程序的框架。

程序框架分为以下几个部分,包括时钟设置、中断处理、函数处理、主函数等。

时钟设置部分主要包括两个功能:时钟的计时和频率控制。

这些设置应该与硬件的时钟部分配合符合音乐节拍和时间的要求,通过设计、调整达到准确、稳定的效果。

3、中断处理音乐盒的中断处理部分是整个程序的核心,它包括多种中断请求,包括时钟中断、按键事件中断等。

这些中断请求可以被设置成高优先级或低优先级,以实现更好的控制效果。

4、功能处理对于在音乐盒运行中,需要频繁进行操作的函数,我们应该单独设置一个处理函数,并将其函数调用编入到主函数中。

5、主函数最后,我们需要编写主函数,以实现音乐盒在不同的运行模式中切换,及处理各种异常情况。

基于51单片机的音乐盒的设计与实现

基于51单片机的音乐盒的设计与实现

基于51单⽚机的⾳乐盒的设计与实现沈阳航空航天⼤学课程设计报告课程设计名称:单⽚机系统综合课程设计课程设计题⽬:基于51单⽚机的⾳乐盒的设计与实现沈阳航空航天⼤学课程设计报告⽬录第1章总体设计⽅案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计⽅案 (3)2.1硬件电路设计 (3)2.2主程序设计 (6)2.3功能模块的设计与实现 (7)第3章结果测试及分析 (10)3.1结果测试 (10)3.2结果分析 (10)参考⽂献 (11)附录1:元件清单 (12)附录2:总电路图 (13)附录3:程序代码 (14)第1章总体设计⽅案1.1设计原理电⼦⾳乐已⼴泛地应⽤于社会⽣活的各个领域。

其类型从⾳乐卡⽚到CD、MP3 等多种多样,制作原理也各不相同。

声⾳是通过振动产⽣的。

单⽚机对某⼀I/O引脚以⼀定的频率循环置1和清0,这⼀引脚便产⽣⼀定频率的⽅波,该⽅波通过放⼤后作⽤于扬声器便产⽣⼀定频率的声⾳。

若改变输出⽅波的频率,产⽣的声⾳也就改变了。

通过控制输出⽅波的时间长短,声⾳的长短也就得到控制。

因此,根据乐谱,单⽚机就可产⽣电⼦⾳乐。

⾳乐中最关键的两个要素是⾳符和节拍。

单⽚机控制的⾳乐发⽣器系统由硬件电路和软件两部分构成。

利⽤单⽚机控制的电⼦⾳乐发⽣器软硬件上具有独特的优点,系统的开发周期短,成本低,电路制作容易。

更换歌曲时,硬件电路⽆需作任何修改,只需修改软件即可实现。

软件编程时,可⽤51系列单⽚机的汇编语⾔。

同时还可根据个⼈的习好通过软件改变节拍的延时时间,增加电⼦⾳乐的趣味性。

1.2 设计思路采⽤汇编语⾔程序设计的⽅法结合硬件电路设计⽅法,利⽤Lab6000实验箱上已有芯⽚来实现⾳乐盒的各项功能。

1)提出⽅案利⽤定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O⼝反相就可在I/O 脚上得到此频率的脉冲。

当键盘有键按下时,判断键值,启动计数器T0,产⽣⼀定频率的脉冲,驱动蜂鸣器,放出乐曲。

基于51单片机的音乐盒的设计毕业设计

基于51单片机的音乐盒的设计毕业设计

基于51单片机的音乐盒的设计毕业设计目录目次 (1)1 引言 (2)1.1 音乐盒的意义 (2)1.2 研究内容 (3)2.1系统总体框架图 (4)2.2音乐盒的设计原理 (4)2.3 单片机芯片概述 (5)3 硬件电路设计 (6)3.1 单片机最小系统原理图 (6)3.1.1 复位电路 (6)3.1.2 晶振电路 (7)3.1.3时钟电路 (7)3.2 LCD显示模块 (7)3.3 继电器模块 (9)3.3.1电磁继电器的工作原理和特性 (9)3.3.2 固态继电器的工作原理和特性 (10)3.3.3 继电器主要产品技术参数 (10)3.4 按键模块 (10)3.5 其它 (11)4 软件设计 (12)4.1 软件总体流程图 (12)4.2播放/暂停子程序 (13)4.3 LCD显示模块软件设计 (15)4.3.1 LCD的初始化函数 (15)4.3.2 LCD与继电器的函数 (15)5 系统实现 (17)5.1 硬件调试 (18)5.1.1 按键控制的实现 (18)5.1.2 LCD显示 (18)5.1.3 其他 (19)总结 (20)致谢............................................... 错误!未定义书签。

参考文献.. (20)附录A 元器件清单 (21)附录B 源程序 (22)1 引言在进入21世纪后,单片机产品的发展正朝着高性能和多品种方向,并且发展趋势是进一步朝着CMOS化、小体积、低功耗、大容量、高性能、低价格以及外围的电路内装化等几个方面去发展。

单片机的应用的重要意义还是在于它是从根本上改变了传统的控制系统设计思想和设计方法。

过去必须要由模拟电路或者数字电路才可以实现的大部分的功能,现在已能完全可以用单片机通过软件的方法来实现了。

这种由软件去代替硬件的控制技术也称之为微控制技术,这是传统控制技术的一次革命。

单片机可以说渗透到了我们生活的各个方面,几乎难以找到哪个领域里没有单片机的踪迹。

单片机课程设计(含程序)——基于C51单片机的电子音乐盒

单片机课程设计(含程序)——基于C51单片机的电子音乐盒

单片机课程设计题目基于C51单片机的电子音乐盒学院机电与信息工程学院专业电子信息工程年级 XXXX级学号XXXXXXXXXXXXXXXXXXXXXXXXXXX姓名 XXXXXXXXXXXXXXX指导教师 XXXXX成绩目录摘要 (1)Abstract (1)第一章绪论 (2)1.1背景 (2)1.2单片机概述 (2)1.3目的与意义 (2)第二章总体设计 (3)2.1总体设计 (3)2.2总体方案论证与设计 (3)2.2.1单片机选择 (3)第三章硬件设施 (4)3.1单片机简介 (4)3.2最小系统 (4)3.3按键电路 (4)3.4 LCD1602液晶显示电路 (5)3.5 PCB图 (8)3.6发声模块(功率放大) (8)第四章软件设计 (9)4.1软件模块及发声原理 (10)4.1.1音调的产生 (10)4.1.2节拍的确定 (12)4.2 软件设计流程 (14)4.3 发声程序 (15)4.4 按键电路设计 (16)4.5 LCD1602液晶显示电路设计 (17)4.5.1 LCD显示模块 (17)4.5.2 LCD延时模块 (19)第五章调试 (19)5.1硬件调试 (19)5.2软件调试 (21)5.3联合调试 (22)第六章总结 (22)附录1 总原理图 (23)附录2 程序 (23)1.主函数模块 (23)2.LCD模块 (30)3. LCD参数设定头文件 (31)4.LCD延时函数 (32)摘要本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。

该音乐盒主要由按键电路、复位电路、时钟电路、喇叭以及LCD1602液晶显示系统组成。

本音乐盒共有四首歌曲,用3个按键控制上一曲下一曲以及暂停和恢复。

播放歌曲时,喇叭发出某个音调。

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。

基于51单片机音乐盒程序设计

基于51单片机音乐盒程序设计

基于51单片机音乐盒程序设计一、功能设计说明1、电路设计实物图矩阵键盘部分电路图2、运行流程图3、电子琴模式按键对应发音设计按键 发音 按键 发音 K1 低 1 K9 中 2 K2 低 2 K10 中 3 K3 低 3 K11 中 4 K4 低 4 K12 中 5 K5低 5K13中 6程序开始播放小苹果歌曲判断任意按键是否按下继续播放小苹果歌曲否是进入电子琴模式判断K16按键是否按下播放完成是否按键发音按键发音K6 低6 K14 中7K7 低7 K15 高1K8 中1 K16 重新播放小苹果二、硬件电路说明1、程序下载电路音乐盒电路图ISP下载接口本设计采用的单片机为A T89S52单片机,需使用ISP下载器进行下载程序,程序下载电路图如图中ISP1接口.2、音乐发音电路IO口P10发出不同频率的脉冲,则BUZZER产生各种不同的声音,本设计采用12MHZ 晶振,系统频率1MHZ,定时器计数一个1us,其对应关系如下表所示:音符频率(HZ)简谱码(T值)音符频率(HZ) 简谱码(T值)低 1 DO 262 63628 # 4 FA# 740 64860 # 1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63853 # 5 SO# 831 64934 # 2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178中1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65282 计算方法:例如产生262HZ频率(发音DO),周期T=1/262=3816 us,由于定时器中断使IO不停取反,故周期T=3816/2=1908 us 定时器初值N=65536-1908=63628TH0=63628/256TL0=65536%256三、程序代码说明1 、脉冲产生采用定时器0溢出中断产生脉冲,定时器初始化如下:TMOD = 0x01; //定时器0工作方式1 ,即十六位计数器计数TR0 = 1; //启动定时器ET0 = 1; //定时器0溢出中断使能EA = 1; //总中断使能定时器0溢出中断产生脉冲,void Timer0() interrupt 1代码如下:TH0 = th0;TL0 = tl0;if(th0==0)BUZZER=1; //判断停顿,有停顿不发音else{BUZZER = ~BUZZER;} //无停顿发音2、音普规则:a、音普由一个字节十六进制数组成b、高4位代表节拍,一拍约400MS,将一拍分成8份c、低4位代表音符,一一对应Note[]列表d、0x20代表歌曲结束符e、uint code Note[]={0,64580,64684,64777,64820,64898,64968,65030,/*中音*/63628,63853,64021,64103,64260,64400,64524,/*低音*/65058,65110,65157,65178,65217,65252,65282/*高音*/};该列表为发音所对应的定时器初装值例如编写如下一段音乐列表:0x83,0x81,0x82,0x8d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40 0x40表示停顿4*50MS /*你是我的小呀小苹果*/3、音普列表解读while(Xiaopingguo[temp]!=0x20) //不停判断音乐是否结尾,结尾跳出{jiepai=Xiaopingguo[temp]>>4; //获取节拍,即高4位数yinpu=Xiaopingguo[temp]&0x0F; //获取音普,即低4位数Timer_Set(yinpu); //根据列表对应发音Delay(jiepai*50); //节拍temp++;P0 = 0x0f;if(P0!=0x0f)goto out;}void Timer_Set(uchar num)为定时器0赋值子程序,包含的代码如下:th0=Note[num]/256;tl0=Note[num]%256;四、程序代码编写/**********************************************************************************************项目名称:音乐盒单片机型号:AT89S52频率:外部石英晶振12MHZ设计时间:2014-08-06设计者:小左MCU工作室Q Q: 576689422******************************************************************************* **************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit BUZZER=P1^0;//蜂鸣器输出uchar th0,tl0; //定时器0赋值变量uchar start_; //返回变量uint code Note[]={0,64580,64684,64777,64820,64898,64968,65030,/*中音*/63628,63853,64021,64103,64260,64400,64524,/*低音*/65058,65110,65157,65178,65217,65252,65282/*高音*/};/*************************************************************************音普规则:1、音普由一个字节十六进制数组成2、高4位代表节拍,一拍约400MS,将一拍分成8份3、低4位代表音符,一一对应Note[]列表4、0x20代表歌曲结束符**************************************************************************/uchar code Xiaopingguo[]={0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40,/*你是我的小呀小苹果*/0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,/*怎么爱你都不嫌多*/0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40,/*红红的小脸温暖我的心窝*/0x42,0x81,0x42,0x43,0x42,0x43,0x42,0x23,0x25,0x85,0x30,0x45,0x10,0x45,0x30,0x45,0x10,0x 45,0x30,0x85,0x85,0x85,0x40,/*点亮我生命的火火火火火火*/0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40,/*你是我的小呀小苹果*/0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,/*就像天边最美丽的云朵*/0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40,/*春天又来到了花开满山坡*/0x42,0x81,0x42,0x43,0x82,0x8c,0x8d,0x4d,0x41,0x8d,0x20/*种下希望就会收获*/};//----延时子程序--------------------------------------------------void Delay(uint xms){uint j;for(;xms>0;xms--)for(j=110;j>0;j--);}//---------------------------------------------------------------//----定时器变量赋值--------------------------------------------- void Timer_Set(uchar num){th0=Note[num]/256;tl0=Note[num]%256;}//---------------------------------------------------------------//----系统初始化------------------------------------------------- void Init(){BUZZER = 1; //关闭蜂鸣器TMOD = 0x01; //定时器0工作方式1TR0 = 1; //启动定时器ET0 = 1; //定时器0溢出中断使能EA = 1; //总中断使能start_ = 0; //返回变量初始化}//---------------------------------------------------------------//----按键扫描--------------------------------------------------- void Key_Scan(){P0 = 0x0f;if(P0!=0x0f){Delay(5);if(P0!=0x0f){P0=0xfe;if(P0==0xee){Timer_Set(8);} //按键1被按下else if(P0==0xde){Timer_Set(12);}//按键5被按下else if(P0==0xbe){Timer_Set(2);} //按键9被按下else if(P0==0x7e){Timer_Set(6);} //按键13被按下else;P0=0xfd;if(P0==0xed){Timer_Set(9);} //按键2被按下else if(P0==0xdd){Timer_Set(13);}//按键6被按下else if(P0==0xbd){Timer_Set(3);} //按键10被按下else if(P0==0x7d){Timer_Set(7);} //按键14被按下else;P0=0xfb;if(P0==0xeb){Timer_Set(10);} //按键3被按下else if(P0==0xdb){Timer_Set(14);}//按键7被按下else if(P0==0xbb){Timer_Set(4);} //按键11被按下else if(P0==0x7b){Timer_Set(15);}//按键15被按下else;P0=0xf7;if(P0==0xe7){Timer_Set(11);} //按键4被按下else if(P0==0xd7){Timer_Set(1);} //按键8被按下else if(P0==0xb7){Timer_Set(5);} //按键12被按下else if(P0==0x77){start_=1;} //按键16被按下else;}}else{th0=0;}}//---------------------------------------------------------------//----主程序----------------------------------------------------- void main(){uchar temp,yinpu,jiepai;Init();while(1){start:temp=0;while(Xiaopingguo[temp]!=0x20){jiepai=Xiaopingguo[temp]>>4; //获取节拍yinpu=Xiaopingguo[temp]&0x0F; //获取音普Timer_Set(yinpu);Delay(jiepai*50);temp++;P0 = 0x0f;if(P0!=0x0f)goto out;}out:th0 = 0;BUZZER = 1;//关闭蜂鸣器while(1){Key_Scan();if(start_==1){start_=0;goto start;}}}}//---------------------------------------------------------------//----定时器0中断服务程序----------------------------------------void Timer0() interrupt 1{TH0 = th0;TL0 = tl0;if(th0==0)BUZZER=1; //判断停顿,有停顿不发音else{BUZZER = ~BUZZER;} //无停顿发音}//----------------------------------------------------------------更多精彩程序请在淘宝店铺中搜索“小左MCU”QQ:576689422。

毕业设计论文:基于51单片机的音乐发生器设计

毕业设计论文:基于51单片机的音乐发生器设计

本文是应用MCS-51单片机原理和控制理论技术设计音乐发生器的硬件电路,并利用C语言进行软件开发和程序设计。

通过控制单片机内部的定时器产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟控制发音时间的长短。

把乐谱转化成相应的定时常数,从而达到从发音设备中演奏出悦耳动听的音乐的效果。

该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。

使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种。

播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。

本系统采用C语言进行软件设计。

正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程。

其次阐述了程序的流程和实现过程。

本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。

关键词单片机;音乐;C语言;STC89C51;KEIL;PROTEUSAbstractIn this paper, The music generator and its hardware circuit is designed by MCS-51 single-chip microcomputer principle and control theory, and the Software development and programming are based on C language programming. According to control the MCU internal timer to produce different frequency Square wave to drive the horn sounds of different tones of music, then use the delay to control the length of time. The music Transformationed into the timing constants corresponding so that the sound equipment can play Melodious music.The music box is mainly composed of keypad circuit, reset circuit, clock circuit and a buzzer. Two buttons are used to control the music box, one to switch songs, another is used to switch the 8 LED pattern, the music box has two songs, a total of 3 kinds of pattern light pattern. While the music is playing, the buzzer sounded a tone, and the corresponding LED lights up. The design of programming the music box and debug source code using KEIL programming software, and to save the design time the PROTEUS simulation software is used to simulate the hardware debugging.The system uses C language for software design. Firstly,in the text describes the working principle of the system hardware, and attached to the system block diagram of hardware design to discusse the function and working process of the graduation design and the application of the hardware interface technology and the interface module. Secondly, expound the procedures and processes to achieve process. The main idea of this writing is a combination of software and hardware, on the base of hardware, write to each function module.Key wordsSinglechip; music; C language; STC89C51; KEIL; PROTEUS目录前言.................................. 错误!未定义书签。

基于51单片机音乐播放器设计

基于51单片机音乐播放器设计

基于51单片机音乐播放器设计音乐播放器是一种可以播放音频文件的设备,广泛应用于日常生活中。

本文将基于51单片机设计一个简单的音乐播放器。

一、设计目标本音乐播放器设计的主要目标是实现以下功能:1.支持播放多种格式的音频文件,如MP3、WAV等;2.支持音量调节和音频文件选择功能;3.具备简单的界面和易于理解的操作方式;4.能够适应不同的音频文件大小和音乐时长。

二、硬件设计2. 存储器:选择外接Flash存储器作为音频文件的存放介质,具备较大的存储容量和较高的读写速度,能够满足音频文件的多样性需求。

3.音频解码芯片:选择支持MP3和WAV格式音频解码的芯片,能够将音频文件翻译成能够被音频输出部分播放的信号。

4.音频输出部分:选择合适的音频输出部分,如耳机接口或喇叭接口,将解码后的音频信号输出为声音。

三、软件设计1.系统初始化:在开机时进行系统初始化,包括对主控芯片、存储器和音频解码芯片的初始化。

2.文件系统管理:设计一个简单的文件系统,能够以目录结构的形式管理存储器中的音频文件。

3.音频解码:根据选择的音频文件格式,进行相应的解码操作,将解码后的音频数据传输给音频输出部分。

4.播放控制:实现音量调节和音频文件选择功能,能够暂停、播放、停止等操作。

5.用户界面:设计一个简单直观的用户界面,通过按键或显示屏等方式进行操作反馈和信息显示。

四、系统流程1.开机初始化:对主控芯片、存储器和音频解码芯片进行初始化。

2.文件系统管理:读取存储器中的文件目录,生成文件列表供用户选择。

3.用户操作:用户通过按键或其他方式进行音量调节和音频文件选择操作。

4.音频解码:根据用户选择的音频文件,进行相应的解码操作。

5.播放控制:根据用户的操作,进行音频的暂停、播放、停止等操作。

6.操作反馈:在用户界面上显示操作反馈和信息。

五、总结本文基于51单片机设计了一个简单的音乐播放器,实现了支持多种格式音频文件的播放、音量调节和文件选择功能,并提供了简单的用户界面。

基于51单片机的音乐盒设计

基于51单片机的音乐盒设计

基于51单片机的音乐盒设计成绩课程设计, 嵌入式系统应用题目名称,基于51单片机的音乐盒设计1设计的任务,包含设计的内容和设计的目标,设计内容:本设计是一个基于AT89C52系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。

该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器和点阵组成。

使用按键控制音乐盒,三个用来切换歌曲,一个用来暂停音乐和开启LED点阵,一个用来从暂停位置开始播放音乐。

本音乐盒共有三首歌曲,点阵式样有四种。

播放歌曲时,蜂鸣器发出某个音调。

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试。

设计目标:初始: 点阵显示作者信息;按键1:播放歌曲1;按键2:播放歌曲2;按键3:播放歌曲3;按键A:暂停播放,点阵显示当前歌曲的名字;按键B:从暂停位置继续播放。

2 设计的过程2.1 基本结构1、总体设计框图按键输入蜂鸣器AT89C52单片机晶振复位电路点阵2、AT89C52介绍AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储技术制造,与工业器80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

基于51单片机的带彩灯外观的音乐盒设计

基于51单片机的带彩灯外观的音乐盒设计

单片机原理与应用技术课程设计与实现题目基于51单片机的带彩灯音乐盒设计与实现姓名张大成专业计算机科学与技术(嵌入式方向)学号201241023院(系)信息工程学院指导教师王清珍完成时间基于51单片机的带彩灯音乐盒摘要随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。

小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。

传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。

本文设计的音乐盒是以AT89C51单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏音乐,功能多,外观效果多彩,配有彩灯,使用方便,本音乐盒有三个按键,key1控制彩灯,key2控制音乐,key3为总开关,可同时关闭音乐与彩灯。

具有一定的商业价值。

关键字:AT89C51;音乐盒;按键;彩灯AbstractAlong with the development of human society, people of vision, hearing things put forward higher request. Small music box can bring good memories and improve people's spiritual culture. Traditional music box is heavy mechanical type, size, pronunciation and drab, cannot achieve batch production. Music box designed in this paper based on AT89C51 microcontroller as the core element of electronic music box, small size, light weight, can play music, multi-function, appearance and colorful, with a lantern,easy to use. The music box with three buttons , The key1 control Lantern, key2 control music, key3 total switch can turn off the music and lanterns. Have some commercial value.Keywords: AT89C51;music boxes;buttons;Lantern引言21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

基于51单片机数字音乐盒设计任务书

基于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.指导教师签名:年月日教研室主任:年月日。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《汽车单片机技术》课程结课设计报告题目:电子时钟专业班级学号姓名指导教师张琦基于C51单片机音乐盒设计长久以来,音乐都在我们身边,封建时期的编钟道现在我们的各种各样的音乐播放,而音乐盒在我们日常生活中经常拿来当礼物来赠送,音乐盒悠扬的的乐声,经常勾起人们对美好往事的回忆,甚至魂牵梦萦,坠入时光岁月的追忆中。

为了好好利用学到的知识用于自己喜欢的事情中我选择了单片机音乐盒的设计,这让我有回忆起了儿时的美好时光。

1.1 设计内容利用AT89C51的I/O口产生一定频率的方波脉冲,驱动蜂鸣器发出不同的音调,从而演凑乐曲利用PNP三极管进行简单的电路放大。

技术指标:1.利用软件设计编写3首以上的歌曲并通过功放与扬声器播放出来;2.3首歌曲的切换通过3个不同的按键来实现。

3. 能够实现暂停、播放功能。

1.3 系统运行流程1音符频率的产生:音符及定时器初始值:例如:中音1(do)的音频=523hz,周期T=1/523s=1912us定时器/计数器0的定时时间为:T/2=1912/2=956us定时器956us的计数值=定时时间/机器周期(12mhz晶振)=956us/1us=956装入T0计数器初始值为65536-956=64580(0xFC44)将0xFC44装入T0寄存器中(TH0装高八位即TH0=0XFC;TL0装低八位即TL=44),启动T0工作后,每技术956次将产生溢出中断,进入中断服务,每次对P1.0引脚的输出取反,就可得到中音do(523hz)的音符频率。

依此产生其他的不同音符以下给出四个八度的28个频率数据频率-半周期数据表高八位0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音12345670xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 2345670xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567频率-半周期数据表低八位0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音12345670x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 2345670x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16 //超高音 12345672.节拍的产生音乐中的节拍用延时时间产生。

例如:1拍=0.4s,1/2=0.2s,以此类推。

只要求出1/2拍的延时时间,其余节拍是他的倍数就行了。

得到音符并加上起对应的节拍就可得到音调。

以此将音调连起来就可获得曲子。

电路原理1.时钟控制部分:12MHZ晶振1个,30pf瓷片电容2个;2.复位电路:1k电阻1个,22uf电解电容1个;3.发音电路:PNP三极管1个,5v小喇叭1个;4.按键电路:4x4矩阵键盘实现点歌功能;P3.2实现暂停,P3.3实现继续播放;结论:由于时间关系本设计只能单曲播放,不能自动播放下一曲;希在以后能解决,并能实现在连播中进行指定点播和加上数码计时等人性化改进。

通过这次的课程设计不仅让我进一步巩固了所学的单片机只是也让我更进一步了解了单片机的利用,同时我也感受到了学习单片机的乐趣!致谢:感谢这学期来陈海怂老师的悉心教导,让我从一个单片机外汉变成了不再对单片机无从下手的菜鸟。

系统程序#include <reg51.h>unsigned char timer0h, timer0l, time,zt=1;sbit speaker = P1^0;// 频率-半周期数据表高八位共保存了四个八度的28个频率数据code unsigned char FREQH[] = {0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音12345670xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 2345670xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567// 频率-半周期数据表低八位code unsigned char FREQL[] = {0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音12345670x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 2345670x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音 1234567//----------------------------------------------------------------------------------------------// 要想演奏不同的乐曲, 只需要修改这个数据表code unsigned char music[4][500] ={//乡间小路数据表{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, 4,1,2, 4,1,1, 5,1,1, 6,1,1, 4,1,1, 3,1,1, 2,1,2,2,1,2, 5,1,4, 0,0,0},// 送别数据表{ 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},//一辈子的孤单数据表{ 5,0,1, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 3,1,1, 3,1,1, 2,1,1, 2,1,4,5,0,1, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 2,1,1, 1,1,1,2,1,1, 3,1,1, 3,1,4, 5,0,1, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 3,1,1, 3,1,1, 2,1,1, 2,1,4, 2,1,1, 1,1,1, 3,1,1, 2,1,1,1,1,1, 2,1,1, 1,1,1, 1,1,8, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 1,1,1, 2,1,1, 2,1,6, 3,1,1, 2,1,2, 1,1,1, 1,1,1, 5,0,1, 6,0,1,5,0,1, 5,0,6, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 1,1,1, 2,1,1, 2,1,6, 5,0,1, 3,1,1, 2,1,2, 1,1,1, 2,1,2, 3,1,1, 3,1,4,5,0,1, 3,1,1, 5,1,2, 6,1,1, 3,1,1, 2,1,1, 2,1,6, 5,0,1, 3,1,1, 2,1,2, 1,1,1, 2,1,2, 3,1,1, 3,1,4,5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 3,1,1, 2,1,1, 2,1,4, 2,1,1, 1,1,1, 3,1,1, 2,1,1, 1,1,1, 2,1,1, 1,1,1, 1,1,1, 1,1,6,3,1,1, 2,1,1, 2,1,1, 1,1,1, 3,1,1, 2,1,1, 2,1,6, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,1, 3,1,6,5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 3,1,1, 2,1,1, 2,1,6, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,1, 3,1,6,0,0,0},//世上只有妈妈好数据表{6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 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}};//-----------------------------------------------------------------------------------------------------------void t0int() interrupt 1 //T0中断程序,控制发音的音调{TR0 = 0; //先关闭T0speaker = !speaker; //输出方波, 发音TH0 = timer0h; //下次的中断时间, 这个时间, 控制音调高低TL0 = timer0l;TR0 = 1; //启动T0}//------------------------------------------------------------------------------------------------------------void delay(unsigned char t) //延时子函数,控制发音的时间长度{unsigned char t1;unsigned long t2;for(t1 = 0; t1 < t; t1++) //嵌套循环, 共延时t个半拍for(t2 = 0; t2 < 8000; t2++); //延时期间, 可进入T0中断去发音TR0 = 0; //关闭T0, 停止发音}//------------------------------------------------------------------------------------------------------------void song() //演奏一个音符{TH0 = timer0h; //控制音调TL0 = timer0l;TR0 = 1; //启动T0, 由T0输出方波去发音delay(time); //控制时间长度}//-------------------------------------------------------------------------------------------------------------void Song(unsigned char j) //j表示第n+1首曲{ unsigned char k, i;i = 0;time = 1;while(time) {k = music[j][i] + 7 * music[j][i + 1] - 1;//第i个是音符, 第i+1个是第几个八度timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k]; //实际上, 是定时的时间长度time = music[j][i + 2]; //读出时间长度数值i += 3;song(); //发出一个音符}}//---------------------------------------------------------------------------------------------------------------void int_0() interrupt 0 // 紧急情况中断即现实暂停{unsigned char i,k,I,K; //现场保护I=i;K=k;while(zt);zt=1; //回复现场i=I;k=K;}//------------------------------------------------------------------------------------------------------------------void int_1() interrupt 2 // 优先中断即现实继续播放{zt=0;}//-------------------------------------------------------------------------------------------------------------------void main() //程序从这里开始{while(1){unsigned char key_h,key_l,key;P1 =0x00;TMOD = 1; //置T0定时工作方式1ET0 = 1; //开T0中断EA = 1; //开CPU中断EX0=1; //开外部中断0IT0=0;EX1=1; //开外部中断1IT1=1;PX1=1; //开优先中断P2=0xf0; //键盘扫描key_l=P2&0xf0;if(key_l!=0xf0) // 判断是否有按键按下{delay(1) ; //消抖if(key_l!=0xf0) //再次判断是否有按键按下{key_l=P2&0xf0; //扫描列key_l=key_l|0x0f; //得到列值P2=key_l;key_h=P2;key_h=key_h&0x0f; //扫描行key_l=key_l&0xf0; //得到行值key=key_l+key_h; // 得到键值}}switch(key) //判断键值{case 0xee: Song(0); break; //第1首曲注:数组的下标从0开始 case 0xde: Song(1); break;case 0xbe: Song(2); break;case 0x7e: Song(3); break;/* case 0xed: ;break;case 0xdd: ;break;case 0xbd: ;break;case 0x7d: ;break;case 0xeb: ;break;case 0xdb: ;break;case 0xbb: ;break;case 0x7b: ;break;case 0xe7: ;break;case 0xd7: ;break;case 0xb7: ;break;case 0x77: ;break;*/}key=0xf0; //初始化键值}}。

相关文档
最新文档