基于单片机的音乐播放器

合集下载

基于单片机的音乐播放器

基于单片机的音乐播放器

基于单片机的音乐播放器摘要单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。

基于单片机的音乐播放器可应用于MP3、MP4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"Do"、"Re"、"Me"--等音阶在内的各种频率声音。

将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。

基于这个思想,采用AT89C52单片机设计了一款特殊的"音乐播放器",本播放器可实现播放、暂停、复位等功能。

关键字:单片机;集成电路:89C52芯片;音乐播放器AbstractSingle Chip Microcomputer is an integrated circuit chip, VLSI technology is the use of having the data processing capabilities of the CPU random access memory RAM, read-only memory ROM, a variety of I / O port and interrupt system, the timer / counter functions (may also include a display driving circuit, the pulse width modulation circuit, an analog multiplexer, A / D converter circuit, etc.) are integrated into a small sound system on a microcomputer composed of silicon.Microcontroller-based music player can be used in many ways mp3, MP4, loudspeakers, etc., and as a secondary function of many systems, as one of the important microcontroller hardware resources, using the timer can generate a variety of fixed frequency square wave signal can be generated include the "Do", "Re", "Me" - like various frequencies including the sound scale. The various scales together, may form a song or play a melody. Based on this idea, using AT89C52 designed a special "Music Player", the player can be realized play, pause, reset and other functions.Keyword:Single Chip Microcomputer;integrated circuit;89C52 chip;Music Player基于单片机的音乐播放器单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

基于单片机的音乐播放器设计[开题报告]

基于单片机的音乐播放器设计[开题报告]
3. 2011年10月1日—2011年10月20日:外文翻译,书写开题报告和文献综述。
4. 2011年10月21日—2011年11月15日:熟悉单片机功能和音乐播放器结构,准备开题答辩。
5. 2011年11月16日—2011年11月30日:自己写实验代码,并不断的实验及改进,遇问题虚心向同学老师求教。
目前,单片机的应用渗透到我们生活的各个领域,几乎很难找到有哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机网络通信和数据的传输,工业化自动控制过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机,摄像机,全自动洗衣机的控制,以及程控玩具,电子宠物等等,这些都离不开单片机。
下面的是基于C51单片机的音乐播放器的设计,该系统控制性能良好,硬件电路简单、经济实惠,能得到更好的效果。
图1C51音乐播放器组成框图
该方案在硬件上是基于单片机AT89C52为核心器件进行控制及信号的产生,共有两个按键,一个是开关用来选曲,通过显示器显示歌曲序号。另一个是按钮用作播放。本设计的音乐演奏控制器是通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音节的声音。再利用延迟来控制发音时间的长短,即控制音调中的节拍。同时设置按钮使所设计的程序能在几首歌曲之间进行选曲,设计显示器使其显示歌曲序号。
三、课题研究的方法及措施
由于单片机它抗干扰性较强,且集成度高、功能强、指令丰富等,可以应用的地方较数字电路更多些,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。而且单片机已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等,都含有单片机控制器。所以本设计使用单片机完成音乐播放器的设计。

基于单片机的音乐播放器

基于单片机的音乐播放器

基于单片机的音乐播放器制作(一)硬件部分设计
整个硬件电路是由中心控制模块、播放模块、按键模块、显示模块,电源模块和彩灯模块六部分组成,基本实现音乐的选曲,和播放模式的控制,电源大小的控制。

(1)中心控制模块
中控采用AT89S52芯片,AT89S52是拥有2个外部中断,2个16位定时器,2个可编程串口UART的单片机。

(2)显示模块
显示模块采用Lcd-1602液晶,主要显示曲目,播放命令。

(3)播放模块
播放模块是由8550NPN三极管和电磁蜂鸣器组成。

A T89S52输出高电平控制信号,启动8550NPN三极管使信号放大,从而启动电磁蜂鸣器。

(4)按键模块
按键模块采用独立按键模块模式。

(5)彩灯模块
彩灯模块主要有4个LED彩灯组成,,起指示作用。

(6)电源模块
电路原理图(二)软件部分。

基于单片机控制的MP3音乐播放器

基于单片机控制的MP3音乐播放器

目录1引言 (1)2硬件设计 (2)2.1硬件电路的设计框图 (2)2.2硬件电路设计模块的选定 (2)2.2.1中心模块 (2)2.2.2播放模块 (3)2.2.3显示模块 (4)2.2.4电子琴模块 (4)2.3各硬件电路的具体设计 (5)2.3.1 AT89S52控制模块的设计 (5)2.3.2按键模块的设计 (6)2.3.3扬声器播放模块的设计 (7)2.3.4 LCD显示电路的设计 (7)2.3.5彩灯伴奏电路的设计 (8)3软件设计 (9)3.1单片机发声的基本原理 (9)3.2设计的相关音乐说明 (9)3.3切换原理 (10)3.4音乐播放器软件程序设计 (10)3.4.1按键扫描子程序设计 (10)3.4.2 1ms延时程序设计 (14)3.4.3 LCD显示子程序设计 (15)3.4.4函数初始化子程序设计 (16)3.4.5系统主程序设计 (17)4结论 (19)参考文献 (20)附录一硬件原理图 (21)附录二软件主程序 (22)致谢 (32)摘要目前流行的MP3播放器的音质已相当好,但略感遗憾的是除了选择歌曲和显示歌名外,绝大部分播放器没有诸如随意弹奏乐曲、乐曲节奏跳动等功能。

而随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一。

要为现代人工作、生活提供更好的更方便的服务就需要从单片机技术着手,一切向着数字化控制、智能化控制方向发展。

本设计是采用单片机为核心设计的数字音乐播放器。

本设计在实现音乐的播放及歌曲名显示等基本功能的基础上进行了扩展,添加了彩灯伴奏、按键弹奏、显示音乐节拍等功能。

本论文给出了系统方案的建立、硬件电路的详细设计及软件的程序实现。

并通过软硬件的联立调试,验证了设计方案的可行性。

关键词:多功能;MP3音乐播放器;单片机;按键弹奏AbstractThe current popular MP3 player sound has been quite good, but feel regretful slightly is in addition to the choice of songs and display the song name, most players without such as random play music rhythm, music and other functions. But as people living standard rise ceaselessly, SCM control is one of the goals that people pursue. For the modern life of work, to provide better and more convenient service needs from proceed toward the SCM technology, all digital control, intelligent control direction.This design is the use of single-chip microcomputer as the core design of the digital music player. The design in the implementation of music playing and the song name display and other basic functions based on the expansion, adding lights accompaniment, play button, display the beat of the music and other functions.This paper gives a system scheme, hardware establishment detailed circuit design and software program. And through the software and hardware of simultaneous debugging, verify the feasibility of the design scheme.Key words: multi function; MP3 music player; single chip microcomputer; play button1引言二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。

基于AT89C51单片机的音乐播放器课程设计

基于AT89C51单片机的音乐播放器课程设计
在设计过程中遇到一个关键问题就是怎么使播放器能够顺利播放并进入下一首,刚开始没有思路,进过小组讨论后,一致认为采用中断控制子程序然后调用子程序,最后顺利实现目地。
五、总 结
通过本次设计,我对单片机这门课有了更进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了AT89C52单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。
基于AT89C51单片机的音乐播放器课程设计
一、设计任务与要求
基于单片机的音乐播放器可应用于mp3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"Do"、"Re"、"Me"--等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一款特殊的"音乐播放器",本播放器可实现播放、暂停、复位等功能。为了体现乐曲播放过程中的动态效果,增加了1只LED,作随机闪烁以指示旋律的节奏。由于时间及条件限制,本设计实现了一种简单的音乐播放器,其核心器件采用AT89C51单片机,本播放器具有电路简单,功能强大,易于拓展等特点。
总体原理:乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
仿真图: 实物图:
歌曲《军港之夜》
实物图波形:仿Βιβλιοθήκη 图波形:暂停仿真及实物图实物图波形:仿真图波形:

基于单片机的音乐播放器文档

基于单片机的音乐播放器文档

西北师范大学知行学院计算机与电子信息工程系课程设计报告书课程名称: 单片机程序设计专业: 电子信息工程课题名称: 基于单片机的音乐播放器设计班级: 12电本班学号: 201292160124姓名: 窦红莉指导教师: 胡亚琦二○一四——二○一五学年第一学期基于单片机的音乐播放器设计一、实验题目基于单片机的音乐播放器设计二、实验内容本设计是一个基于AT89C51系列单片机的音乐播放器,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐播放器。

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

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

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

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

【关键字】音乐盒;AT89C51单片机; KEIL; PROTEUS;音调三、设计目的1、设计方案设计一个基于AT89C51系列单片机的音乐播放器,利用按键切换演奏出不同的乐曲。

蜂鸣器发出某个音调,与之相对应的LED亮起。

使用两个按键,一个用来切换歌曲,另一个切换八路LED的变化花样。

2、研究内容1)电路有两种工作模式:演奏音乐模式和花样灯模式。

演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变化。

花样灯模式:八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声2)按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。

3)按下按键2进入花样灯模式,再按切换LED花样,共三种花样。

此电路的程序只占用了1K左右,可编制更多的音乐和LED花样,使系统的功能更加强大。

3、设计原理1)系统组成框图音乐播放器的系统结构以AT89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。

基于单片机的音乐播放器 本科毕业论文

基于单片机的音乐播放器  本科毕业论文

基于单片机的音乐播放器作者:学号:系别:专业:指导教师:专业技术职务2007 年3 月摘要本文介绍了基于AT89C2051单片机的乐曲播放器的硬件设计和软件设计过程。

本系统实现了播放乐曲,并可以通过按键随时播放下一曲和上一曲,同时显示当前播放乐曲的条目的功能。

播放的乐曲可以通过软件的方式进行添加和删除。

通过实际的实验证明,该系统具有硬件设计简单,软件可调整性大,系统稳定可靠等优点。

关键词:AT89C2051,乐曲播放器引言简简单单的几个音符,却展现了它奇特多彩的个性,呈现出一个色彩斑斓的世界。

人们的生活离不开音乐,音乐可以陶冶人们的情操,使心灵变得纯净、美好,使人的大脑变得聪明、伶俐;音乐可以让生活充满欢乐、祥和;音乐甚至可以治理环境,让人与人之间的关系变得更亲近、和谐。

音乐的基本要素是指构成音乐的各种元素,包括音的高低、音的长短、音的强弱和音色。

由这些基本要素互相结合,形成音乐的常用的“形式要素”,例如:节奏、曲调、和声,以及力度、速度、调式、曲式、织体等。

1、节奏:音乐的节奏是指音乐运动中音的长短和强弱。

音乐的节奏常被比喻为音乐的骨架。

节拍是音乐中的重拍和弱拍周期性地、有规律地重复进行。

我国传统音乐称节拍为“板眼”,“板”相当于强拍;“眼”相当于次强拍(中眼)或弱拍。

2、曲调:曲调也称旋律。

高低起伏的乐音按一定的节奏有秩序地横向组织起来,就形成曲调。

曲调是完整的音乐形式中最重要的表现手段之一。

曲调的进行方向是变幻无穷的,基本的进行方向有三种:“水平进行”、“上行”和“下行”。

相同音的进行方向称水平进行;由低音向高音方向进行称上行;由高音向低音方向进行称下行。

曲调的常见进行方式有:“同音反复”、“级进”和“跳进”。

依音阶的相邻音进行称为级进,三度的跳进称小跳,四度和四度以上的跳进称大跳。

3、和声:和声包括“和弦”及“和声进行”。

和弦通常是由三个或三个以上的乐音按一定的法则纵向(同时)重叠而形成的音响组合。

基于51单片机的音乐播放器

基于51单片机的音乐播放器

基于51单片机的音乐播放器制作一、设计原理乐曲中有不音符,实质就是不同频率的声音。

通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。

二、AT89C51简介AT89C51:是一种4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AAT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要功能特性:1)与MCS-51兼容;2)4K字节可编程FLASH存储器;3)全静态工作:0Hz-24MHz;4)128×8位内部RAM;5)两个16位定时器/计数器;6)5个中断源;7)可编程串行通道;8)低功耗的闲置和掉电模式;9)片内振荡器和时钟电路。

三、硬件结构下图是以AT89C51单片机为核心的音乐播放器系统硬件设计结构图。

该系统主要是由复位电路、按键电路、时钟电路、中心模块、扬声器驱动等组成。

其工作原理为:此音乐播放器,有三个按键及控制按钮:播放/暂停、下一曲、上一曲;通过控制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输出声音。

三、简易仿真原理图四、音乐发声设计原理4.1发声原理一首乐曲是由多个音符构成的。

每个音符都对应着一个确定的频率,乐曲中不同的音符,实质就是不同频率的声音;另外每个音符会根据乐曲的要求设定一个确定的节拍。

可以控制单片机不同频率不同节拍的脉冲信号,蜂鸣器发出就产生了美妙和谐的乐曲。

4.2单片机产生不同频率脉冲信号的原理1、要产生音频脉冲,只要算出来某一个音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这半周期的时间,每当计时到后就降输出脉冲I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O 脚上得到此频率的脉冲。

基于单片机多功能音乐播放器的设计

基于单片机多功能音乐播放器的设计

多功能音乐播放器的设计一、 设计任务与设计原理 1、设计任务(1) 可播放多首音乐,且通过按键来选择播放的音乐 (2) 选择音乐时,音乐名称在LCD 上显示(3) 音乐播放种类跨度要大一些,播放声音要清晰 电路原理图⑴、单片机最小系统电路,主要由:时钟振荡电路、复位电路、电源电路等组 成。

图2-1-2 单片机最小系统电路(2)、矩阵键盘输入电路⑶、LCD12864显示电路B O -------C O —图2-1-3 矩阵键盘输入电路图2-1-4 LCD12864显示电路(4) 、蜂鸣器播放电路POO/ADO P01/AD1 PO.2/AD2 PO3/AD3 PO.4/AD4 P0S/AD5 PO6/AD6 PO7/AD7 P2 <MA0 P2 1/A9 P2 2/A10 P2.J/A11 P2A/A12 P2 WA13 P2 7/A15 P3 CVRX Dpa.irrxoP3.2/IN1O P3.3/INT1 P3 4/TO P3 5fT1 P3.6AVRLCD1C, ! I -m m o -.J1J RV1 iDR?3531-■L - J J B JJZETJD0- JL'JIxTALIRSTPQ QTADO PO HW L DI P0 2/AD2 P0 3/AM P0 4/ACMP0 5/AD5 ro&AD6TO 决MP2 (¥A6 P2 P2 2MT0 1 PSEF4P2MT1 ALEP2.^AT2 EAP2 0M330图2-1-5 蜂鸣器播放电路2整体电路原理图LC01图2-1-6 系统仿真效果图二、软件设计 1、 流程图设计2、完整程序代码整个KEIL工程文件有4个.C文件和1个头文件组成,具体代码如下: (1 ) PlayMusic . c#include <REG52.H> #include "SoundPlay.h" #include<math.h>#define uchar unsigned char #define uint unsigned intsbit WAI_INT0=P3A2; // 复位//水平与垂直偏移uchar H_Offset=0; // uchar V_page_Offset=0; extern uchar Key_Num; extern uchar code Name_Of_Song[]; extern uchar KeyScan(); // 矩阵键盘扫描子程序extern voidLCD12864_Initialization();extern void Display_Word(uchar P2,uchar L2,uchar *M) reentrant; extern void Display_char(ucharP1,uchar L1,uchar *M) reentrant; void delay(uint K); //延时子程序void key_process();// 矩阵键盘按键处理子程序void Delay1ms(uint count){unsigned int i,j;for(i=0;i<count;i++) for(j=0;j<120;j++);}//*****************************Music******************************************************//挥着翅膀的女孩unsigned char code Music_Girl[]={ 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_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,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_Two[] ={ 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 };//死了都要爱unsigned char code Music_Three[]={ 0x17,0x03, 0x1F,0x02, 0x1F,0x03, 0x1F,0x03, 0x1F,0x02,0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x16,0x03,0x16,0x03, 0x17,0x04, 0x17,0x04, 0x17,0x15, 0x18,0x03,0x18,0x04, 0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x16,0x02,0x16,0x04, 0x17,0x0E, 0x17,0x03, 0x18,0x16, 0x1A,0x04,0x1A,0x04,0x1B,0x03, 0x1A,0x04, 0x1B,0x0E, 0x1B,0x01,0x17,0x18, 0x17,0x03, 0x1F,0x02, 0x1F,0x03, 0x1F,0x03,0x1F,0x02, 0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03,0x16,0x03, 0x16,0x02, 0x17,0x04, 0x17,0x0E, 0x17,0x15,0x18,0x02, 0x18,0x04, 0x19,0x0E, 0x19,0x03, 0x1A,0x03,0x1F,0x02, 0x1B,0x02, 0x1A,0x15, 0x15,0x02, 0x0D,0x02,0x0E,0x02, 0x0D,0x03, 0x0D,0x03, 0x11,0x03, 0x11,0x03,0x0D,0x03, 0x11,0x03, 0x15,0x04, 0x15,0x0E, 0x1F,0x02,0x10,0x02, 0x10,0x03, 0x0F,0x03, 0x0E,0x66, 0x0E,0x03,0x0C,0x03, 0x0E,0x03, 0x16,0x03, 0x15,0x03, 0x15,0x67,0x11,0x04, 0x11,0x0E, 0x1B,0x02, 0x15,0x02, 0x0D,0x02,0x0E,0x66, 0x0D,0x03, 0x0D,0x03, 0x11,0x03, 0x11,0x03,0x0D,0x03, 0x11,0x03, 0x15,0x04, 0x15,0x0E, 0x15,0x04,0x17,0x03, 0x17,0x04, 0x17,0x03, 0x18,0x03, 0x10,0x02,0x10,0x67, 0x0F,0x03, 0x10,0x00, 0x18,0x0B, 0x18,0x03,0x19,0x03, 0x18,0x03, 0x16,0x03, 0x18,0x03, 0x17,0x03,0x17,0x15, 0x16,0x03, 0x16,0x04, 0x16,0x0E, 0x16,0x04,0x16,0x04, 0x17,0x03, 0x18,0x04, 0x17,0x67, 0x16,0x04,0x15,0x67, 0x15,0x03, 0x15,0x04, 0x15,0x0E, 0x15,0x04,0x15,0x04, 0x17,0x68, 0x17,0x0E, 0x17,0x03, 0x10,0x03,0x15,0x03, 0x17,0x03, 0x18,0x66, 0x18,0x04, 0x19,0x04,0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x18,0x03, 0x18,0x03,0x17,0x04, 0x17,0x0E, 0x17,0x02, 0x16,0x04, 0x15,0x0E,0x15,0x16, 0x18,0x03, 0x18,0x04, 0x19,0x0E, 0x19,0x03,0x1A,0x03, 0x16,0x03, 0x16,0x04, 0x17,0x0E, 0x17,0x03,0x18,0x17, 0x1A,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x16,0x17,0x03, 0x1F,0x02, 0x1F,0x03, 0x1F,0x03, 0x1F,0x66,0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x16,0x03,0x16,0x03, 0x17,0x04, 0x17,0x0E, 0x17,0x7B, 0x18,0x03,0x18,0x04, 0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x16,0x03,0x16,0x04, 0x17,0x0E, 0x17,0x04, 0x18,0x17, 0x1A,0x04,0x1A,0x04, 0x1B,0x03, 0x1A,0x04, 0x1B,0x72, 0x17,0x04,0x1F,0x02, 0x1F,0x03, 0x1F,0x03, 0x1F,0x66, 0x20,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x16,0x03, 0x16,0x03,0x17,0x04, 0x17,0x0E, 0x17,0x67, 0x18,0x03, 0x18,0x04,0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x1F,0x02, 0x1B,0x02,0x1A,0x14, 0x00,0x00 };unsigned char code Music_End[]={0x00,0x00,0x00,0x00};//***********************************************************************************void main(){P1=0x0f;InitialSound();EX0=1;IT0=1;LCD12864_Initialization();// 液晶初始化函数// 以下显示“环境工程学院张小波”Display_Word(V_page_Offset+4,H_Offset,Name_Of_Song+15*32);Display_Word(V_page_Offset+4,16+H_Offset,Name_Of_Song+16*32);Display_Word(V_page_Offset+4,32+H_Offset,Name_Of_Song+19*32);Display_Word(V_page_Offset+4,48+H_Offset,Name_Of_Song+20*32);Display_Word(V_page_Offset+4,80+H_Offset,Name_Of_Song+21*32);Display_Word(V_page_Offset+4,96+H_Offset,Name_Of_Song+22*32);Display_Word(V_page_Offset+4,112+H_Offset,Name_Of_Song+23*32);while(1){ key_process();}}/* ------- 延时子程序------ */void delay(uint K){uint i,j;for(i=K;i>0;i--) for(j=120;j>0;j--);}/* -------------- 按键处理子程序-------------- */void key_process(){EA=1;KeyScan(); switch(Key_Num){case 13: delay(200);if (Key_Num==13) {//以下显示歌曲名:挥着翅膀的女孩Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+0*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+1*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+2*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+3*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+4*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+5*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+6*32);Play(Music_Girl,0,2,360);}break;case 2: delay(200);if (Key_Num==2)//以下显示歌曲名:同一首歌Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+7*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+8*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+9*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+10*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+24*32);Play(Music_Same,2,2,500);}//break; case 1: delay(200);if (Key_Num==1) {//以下显示歌曲名:两只蝴蝶Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+11*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+12*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+13*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+14*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+24*32);Play(Music_Two,0,2,360);} //break; case 5: delay(200);if (Key_Num==5) {//以下显示歌曲名:死了都要爱Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+25*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+26*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+27*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+28*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+29*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+24*32);Play(Music_Three,10,1,300);}break;/* case 5: delay(200);if (Key_Num==5)Play(Music_Three,0,2,360);} break; */}}void waibuzhongduan_INT0()interrupt 0{uchar i;EA=0;for(i=0;i<8;i++){ Display_Word(V_page_Offset+2,i*16+H_Offset,Name_Of_Song+24*32);}}(2) Keypad.c#include <reg52.H>#define uchar unsigned char#define uint unsigned int//扫描键盘时发送到0-3 列上的扫描码uchar KeyboardScanCode[4]={0xef,0xdf,0xbf,0x7f};uchar Key_Num=16;//---------------------------------------------------//扫描键盘并返回按键在键盘上的位置系列号//------------------------------------------------uchar KeyScan(){uchar Row=0,Col=0,Temp;for(Col=0;Col<4;Col++){P1=KeyboardScanCode[Col];Temp=P1&0x0f;if(Temp!=0x0f){switch(Temp){case 0x0e: Row=0;break;case 0x0d:Row=1;break;case 0x0b:Row=2;break;case 0x07:Row=3;break;}break;}P1=0x0f;return Key_Num=Row*4+Col; // 返回按键位置序号0-15}(3) 12864 显示驱动程序.C//------------------------- LCD_12864.c ------------------------// 名称:12864LCD 显示驱动程序(不带字库)//----------------------------------------------------------------#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define LCD_DB_PORT P0 // 液晶数据线端口DB0-DB7#define LCD_START_ROW 0xc0 // 起始行命令#define LCD_PAGE 0xB8 // 页指令#define LCD_COL 0x40 // 列指令bit Reverse_Display=0;// 是否反相显示(白底黑字/黑底白字) //液晶引脚定义sbit DI=P2A0;sbit RW=P2A1;sbit E=P2A2;sbit CS1=P2A3;sbit CS2=P2A4;sbit RST=P2A5;//------------------------------------------------------------- // 检查LCD 是否忙//------------------------------------------------------------- bit LCD_IS_BUSY(){LCD_DB_PORT=0xFF;RW=1;_nop_();DI=0;E=1;_nop_();E=0;return (bit)(P0&0x80);}//------------------------------------------------------------- // 向LCD 写入一个字节(一般用于发送命令)//------------------------------------------------------------- void Write_Byte_To_LCD(uchar comand){while(LCD_IS_BUSY());LCD_DB_PORT=0xFF;RW=0;_nop_();DI=0;LCD_DB_PORT=comand;E=1;_nop_();E=0;}//-------------------------------------------------------------// 向LCD 写入数据//-------------------------------------------------------------void Write_Data_To_LCD(uchar dat){while(LCD_IS_BUSY());LCD_DB_PORT=0xFF;RW=0;_nop_();DI=1;if(!Reverse_Display) //根据Reverse_Display 决定是否反相显示LCD_DB_PORT=dat;elseLCD_DB_PORT=~dat;E=1;_nop_();E=0;}//-------------------------------------------------------------// 初始化LCD//-------------------------------------------------------------void LCD12864_Initialization(){CS1=1;CS2=1;Write_Byte_To_LCD(0x38);Write_Byte_To_LCD(0x3F);Write_Byte_To_LCD(0x01);Write_Byte_To_LCD(0x06); Write_Byte_To_LCD(LCD_START_ROW);}//-------------------------------------------------------------r 所指的数组中//通用显示函数从第P页第L列显示W个字节数据,具体显示的数据在//-------------------------------------------------------------void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant uchar i;if(L<64){CS1=1;CS2=0;Write_Byte_To_LCD(LCD_PAGE+P);Write_Byte_To_LCD(LCD_COL+L); if(L+W<64){for(i=0;i<W;i++)Write_Data_To_LCD(r[i]);}else{for(i=0;i<64-L;i++)Write_Data_To_LCD(r[i]);CS1=0;CS2=1;Write_Byte_To_LCD(LCD_PAGE+P);Write_Byte_To_LCD(LCD_COL); for(i=64-L;i<W;i++)Write_Data_To_LCD(r[i]);}}else{CS1=0;CS2=1;Write_Byte_To_LCD(LCD_PAGE+P);Write_Byte_To_LCD(LCD_COL+L-64); for(i=0;i<W;i++)Write_Data_To_LCD(r[i]);}}//-------------------------------------------------------------//显示一个8X 16点阵字符//-------------------------------------------------------------void Display_char(uchar P1,uchar L1,uchar *M) reentrant{LCD_Show(P1,L1,8,M);LCD_Show(P1+1,L1,8,M+8);}//-------------------------------------------------------------------//显示一个16 X 16点阵字符(汉字上半部分与下半部分分别处在相邻两页中) // --------------------------------------------------------------------void Display_Word(uchar P2,uchar L2,uchar *M) reentrant{LCD_Show(P2,L2,16,M);LCD_Show(P2+1,L2,16,M+16);}(4) DotMatrix.c// -----------------------------------------------// 与本程序有关的数字和汉字的点阵编码DotMatrix.c// ----------------------------------------------#include <reg51.h>#include <string.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//年、月、日、星期、时、分、秒等汉字点阵(16X16)uchar code Name_Of_Song[]={/*-- 文字0: 挥--*/0x08,0x08,0x08,0xFF,0x88,0x48,0x16,0xD2,0x3A,0x16,0xD2,0x12,0x12,0x16,0x02,0x00,0x02,0x42,0x81,0x7F,0x00,0x08,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00, /*--文字1: 着--*/0x00,0x44,0x54,0x54,0x55,0x56,0xD4,0x7C,0x54,0x54,0x56,0x55,0x54,0x44,0x44,0x00,0x08,0x08,0x04,0x04,0x02,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0x00,0x00,0x00,/*-- 文字2: 翅--*/0x04,0xE4,0x24,0x3F,0x24,0xE4,0x0A,0x32,0x82,0xFE,0x08,0x32,0x82,0xFE,0x00,0x00,0x40,0x21,0x16,0x08,0x16,0x21,0x22,0x49,0x50,0x4F,0x42,0x49,0x50,0x4F,0x40,0x00, /*--文字3: 膀--*/0x00,0xFE,0x12,0x12,0xFE,0x00,0x64,0x24,0x2C,0x75,0xA6,0x34,0x2C,0x64,0x24,0x00,0xC0,0x3F,0x41,0x81,0x7F,0x00,0x81,0x61,0x1F,0x05,0x45,0x85,0x7D,0x01,0x00,0x00, /*--文字4: 的--*/0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00, /*--文字5: 女--*/0x20,0x20,0x20,0x20,0xE0,0x38,0x27,0x20,0x20,0x20,0xE0,0x20,0x20,0x20,0x20,0x00,0x80,0x80,0x40,0x41,0x22,0x22,0x14,0x0C,0x0C,0x0B,0x10,0x30,0xE0,0x40,0x00,0x00, /*--文字6: 孩--*/0x02,0x02,0x02,0xF2,0x8A,0x06,0x44,0x64,0x54,0x4D,0x46,0xC4,0x64,0x04,0x04,0x00,0x01,0x23,0x41,0x3F,0x00,0x48,0x48,0x24,0x24,0x12,0x09,0x0C,0x12,0x61,0x00,0x00, /*--文字7: 同--*/0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00, /*--文字8: 一--*/0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字9: 首--*/0x04,0x04,0x04,0xE4,0x25,0x26,0x34,0x2C,0x24,0x24,0x26,0xE5,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0x00,0x00,/*-- 文字10: 歌--*/ 0x80,0xBA,0xAA,0xAA,0xBA,0x82,0xFE,0xA2,0x90,0x0C,0xEB,0x08,0x28,0x18,0x08,0x00, 0x00,0x1E,0x12,0x12,0x5E,0x80,0x7F,0x40,0x20,0x18,0x07,0x08,0x30,0xE0,0x40,0x00,/*-- 文字11: 两--*/ 0x02,0xF2,0x12,0x12,0x12,0xFE,0x92,0x12,0x12,0xFE,0x12,0x12,0x12,0xFB,0x12,0x00,0x00,0x7F,0x08,0x04,0x03,0x00,0x10,0x09,0x06,0x01,0x01,0x26,0x40,0x3F,0x00,0x00,/*-- 文字12: 只--*/ 0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x40,0x20,0x31,0x18,0x0E,0x04,0x00,0x00,0x00,0x02,0x04,0x19,0x70,0x20,0x00,/*-- 文字13: 蝴--*/ 0xF0,0x10,0xFF,0x10,0xF0,0x08,0x88,0xFF,0x88,0x08,0x00,0xFE,0x12,0x12,0xFE,0x00,0x43,0x42,0x3F,0x2A,0x73,0x20,0x0F,0x88,0x4F,0x20,0x18,0x07,0x41,0x81,0x7F,0x00,/*-- 文字14: 蝶--*/ 0x00,0xF8,0x08,0xFF,0x08,0xF8,0x04,0xFE,0x84,0xBF,0xA4,0xA4,0xBF,0x84,0x04,0x00,0x10,0x11,0x11,0x0F,0x09,0x9D,0x4A,0x22,0x1A,0x06,0xFF,0x06,0x0A,0x72,0x22,0x00,/*-- 文字15: 环--*/ 0x00,0x22,0x22,0xFE,0x22,0x22,0x00,0x02,0xC2,0x32,0xFE,0x42,0x82,0x02,0x02,0x00,0x00,0x04,0x04,0x03,0x12,0x0A,0x04,0x03,0x00,0x00,0xFF,0x00,0x00,0x03,0x0E,0x00,/*-- 文字16: 境--*/ 0x20,0x20,0xFE,0x20,0x20,0x00,0x24,0xAC,0xB4,0xA5,0xA6,0xB4,0xAC,0x24,0x00,0x00,0x10,0x30,0x1F,0x08,0x08,0x00,0x80,0x4F,0x3A,0x0A,0x0A,0x7A,0x8F,0x80,0xE0,0x00,/*-- 文字17: 工--*/ 0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/*-- 文字18: 程--*/0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,/*-- 文字19: 学--*/ 0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,/*-- 文字20: 院--*/ 0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,/*-- 文字24: --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字25: 死--*/0x00,0x02,0xC2,0xB2,0x1E,0x12,0x92,0x72,0x02,0xFE,0x82,0x42,0x42,0x22,0x22,0x00,0x42,0x41,0x20,0x20,0x13,0x0C,0x03,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00,/*-- 文字26: 了--*/0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字27: 都--*/0x20,0x24,0x24,0xA4,0x7F,0x24,0x34,0x28,0x24,0x00,0xFE,0x22,0x52,0x8A,0x06,0x00,0x04,0x02,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0xFF,0x08,0x08,0x10,0x0F,0x00, /*-- 文字28: 要--*/0x02,0x02,0xFA,0x4A,0x4A,0xFE,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0xFA,0x02,0x02,0x00,0x02,0x82,0x82,0x42,0x4E,0x2B,0x2A,0x12,0x12,0x12,0x2A,0x26,0xC2,0x42,0x02,0x00, /*-- 文字29: 爱--*/0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00,0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00,};〃0-9等数字点阵(8X 16)uchar code Digits[]={0x00,0x00,0xF0,0xF8,0x08,0x68,0xF8,0xF0,0x00,0x00,0x07,0x0F,0x0B,0x08,0x0F,0x07, //00x00,0x20,0x20,0x30,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00, //10x00,0x30,0x38,0x08,0x88,0xF8,0x70,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x08,0x00, // 2 0x00,0x30,0x38,0x88,0x88,0xF8,0x70,0x00,0x00,0x06,0x0E,0x08,0x08,0x0F,0x07,0x00, //30x00,0x00,0xF8,0xF8,0x00,0xE0,0xE0,0x00,0x00,0x03,0x03,0x02,0x02,0x0F,0x0F,0x02,//40x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,//50x00,0xC0,0xE0,0x78,0x58,0xC8,0x80,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,//60x00,0x08,0x08,0x88,0xE8,0x78,0x18,0x00,0x00,0x00,0x0E,0x0F,0x01,0x00,0x00,0x00,//70x00,0x70,0xF8,0xC8,0x88,0xF8,0x70,0x00,0x00,0x07,0x0F,0x08,0x09,0x0F,0x07,0x00,//80x00,0xF0,0xF8,0x08,0x08,0xF8,0xF0,0x00,0x00,0x00,0x09,0x0D,0x0F,0x03,0x01,0x00,//9};(5) SOUNDPLAY .H/说明**************************************************************************曲谱存贮格式unsigned char code MusicName{ 音高,音长,音高,音长..... , 0,0}; 末尾:0,0 表示结束(Important)音高由三位数字组成:个位是表示1~7 这七个音符十位是表示音符所在的音区:1-低音,2-中音,3-高音;百位表示这个音符是否要升半音: 0-不升, 1 -升半音。

基于单片机的MP3播放器设计

基于单片机的MP3播放器设计

基于单片机的MP3播放器设计随着科技的不断进步,单片机技术的出现为现代电子产品设计带来了巨大的变革。

如今,人们可以借助单片机将各种不同的功能集成到单一的设备中,实现复杂的功能。

MP3播放器是现代生活中常见的电子设备,能够提供高质量的音频播放功能。

本文将探讨如何基于单片机设计一个MP3播放器。

一、硬件设计1、单片机选择:首先需要选择合适的单片机作为主控芯片。

考虑到性能和价格因素,可以选择如STM32单片机作为核心控制器。

2、存储模块:为了存储音频文件,需要使用存储芯片或者SD卡等存储设备。

例如,可以使用SPI接口的EEPROM芯片来存储音频数据。

3、音频解码模块:该模块负责将存储的音频数据转换成模拟信号,然后通过音频放大器驱动耳机播放。

常见的音频解码芯片有炬力2588和炬力2589。

4、显示模块:为了方便用户操作和显示信息,可以选择LCD显示屏作为显示模块。

它可以通过SPI或者并行接口与单片机通信。

5、按键模块:为了实现用户输入功能,可以设计一个按键模块。

它可以通过GPIO接口与单片机通信。

二、软件设计1、系统初始化:在系统上电后,需要先进行系统初始化,包括设置单片机的时钟频率、配置IO口、初始化存储模块、音频解码模块和显示模块等。

2、音频文件读取:通过存储模块读取存储的音频文件数据,然后通过音频解码模块将数据转换成模拟信号,最后通过音频放大器驱动耳机播放。

3、用户操作:通过按键模块实现用户操作,如播放/暂停、上一曲/下一曲、音量调节等。

同时,在显示模块上显示当前播放状态、播放进度等信息。

4、文件管理:可以实现文件浏览、搜索、删除等功能,方便用户管理音频文件。

5、系统测试与调试:在完成硬件和软件设计后,需要进行系统测试和调试,确保系统能够正常工作。

三、注意事项1、在硬件设计过程中,需要考虑电源供电稳定性、信号干扰等问题,避免对音质产生影响。

2、在软件设计过程中,需要考虑程序结构、代码优化等问题,提高程序效率和稳定性。

基于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单片机设计了一个简单的音乐播放器,实现了支持多种格式音频文件的播放、音量调节和文件选择功能,并提供了简单的用户界面。

基于单片机的音乐播放器

基于单片机的音乐播放器

目录第1章绪论 (1)1.1电子音乐概述 (1)1.2国内外电子音乐的发展 (1)1.3音乐发生器的扩展 (2)第2章设计方案 (3)2.1 设计方案论证 (3)2.1.1方案一 (3)2.1.2 方案二 (4)2.1.2 方案三 (5)2.1.3 方案比较 (6)第3章硬件设计 (7)3.1 电路组成及工作原理 (7)3.1.1 电路组成 (7)3.1.2 电路工作原理 (7)3.2 AT89C51的简介 (8)3.2.1 AT89C51功能概述 (8)3.2.2 AT89C51的管脚图 (8)3.2.3 AT89C51 单片机的引脚介绍 (9)3.3 晶振电路 (9)3.4 扬声器电路 (10)3.5 显示电路 (10)3.6 更换歌曲电路 (11)3.7 复位电路 (12)3.8 程序存储器外部扩展电路 (13)第4章液晶显示原理及LM016L简介 (14)4.1 液晶显示原理及分类 (14)4.1.1液晶显示原理 (14)4.1.2液晶显示器的分类 (14)4.1.3液晶显示器各种图形的显示原理: (14)4.2 LCD1602简介 (15)第5章稳压电源 (17)5.1 稳压电源的功能 (17)5.2直流稳压电源 (17)5.3 220v交流电转5v直流电的电源设计 (18)5.3.1电路工作原理 (18)5.3.2电路原理图 (19)第6章软件系统设计 (20)6.1 软件流程设计 (20)6.2性能分析 (22)结论 (23)致谢 (24)参考文献 (25)附录 (25)基于单片机的音乐播放器第1章绪论1.1电子音乐概述电子音乐是现代音乐的一种形式,是一种与古典截然不同的音乐形式。

而今,越来越多钟情于电子音乐的音乐家们相信,通过电流产生的声音打破音乐的结构及人们习惯的听觉经验,人与人之间的情感是可以沟通的。

电子音乐是一种科技的见证。

也就是说,借助电子音乐,技术可以见证音乐,音乐可以见证技术。

基于单片机的MP3播放器

基于单片机的MP3播放器

基于单片机的MP3播放器现在的MP3播放器种类繁多,但是基于单片机的MP3播放器还是很有实用价值的。

本文将介绍如何基于单片机制作一个简单的MP3播放器。

1. 硬件需求制作MP3播放器需要的硬件如下:•单片机•电路板•音频模块•存储卡其中,单片机是该MP3播放器的核心部件,电路板用于连接各个零部件,音频模块用于播放MP3格式的音乐,存储卡则用于存储MP3文件。

2. 软件需求制作基于单片机的MP3播放器需要用到以下软件:•Keil C51开发环境•WinRAR•MP3转换软件Keil C51开发环境用于编写单片机程序,WinRAR用于压缩和解压MP3文件,MP3转换软件用于将其他格式的音乐文件转换成MP3格式。

3. 制作流程在已经准备好硬件和软件的前提下,制作基于单片机的MP3播放器的流程如下:3.1 程序编写使用Keil C51开发环境编写程序,包括读取存储卡中的MP3文件、将MP3文件解压、播放MP3文件等关键步骤。

代码需要经过多次测试和调试,保证程序能够正确运行。

3.2 硬件连接将单片机、电路板、音频模块及存储卡进行正确连接,并进行电路测试,确保硬件连接无误。

3.3 软件设置在WinRAR中将下载好的MP3文件压缩成RAR格式,然后再将RAR文件解压,在MP3转换软件中将非MP3格式的音乐文件转换为MP3格式。

3.4 软硬件联测将存储卡插入到开发板中,开启电源,调试并测试MP3播放器的各项功能。

4. 成果展示完成制作后,基于单片机的MP3播放器可以播放存储卡中的MP3文件。

播放器可以通过更换存储卡,实现播放不同的MP3文件。

5. 结语基于单片机的MP3播放器的制作并不难,但是需要对硬件和软件有一定的了解和掌握。

通过本文的介绍和演示,读者可以体验一下DIY的乐趣,也可以为以后的制作提供参考。

基于单片机控制的音乐播放器设计

基于单片机控制的音乐播放器设计

目录一、前言二、设计课题及要求三、控制任务及要求四、单片机的硬件设计五、单片机的软件设计及要求六、软件流程图七、程序设计八、模拟调试的过程和出现的问题分析九、调试程序所用的实验设备十、毕业设计体会十一、参考文献前言单片机自20世纪70年代问世以来,作为微型计算机的一个很重要的分支,应用非常广泛,已对人类社会产生了巨大的影响。

尤其是MCS-51系列的单片机,由于其具有集成度高、功能强、可靠性好、系统结构简单、价格低廉、易于扩展和使用等优点,在我国已得到广泛的应用并收到很好的成果。

虽然世界各大公司也有各种型号的高性能单片机问世,但MCS-51系列单片机仍然是我国在单片机应用领域的首选机型。

在这我以AT89C52单片机为基础设计音乐播放器。

一、设计课题及要求本次设计的是单片机控制的音乐播放器,要使单片机播放出一首音乐。

二、控制任务及要求在调控单片机时控制面板上的扩音器能放出音乐,能通过仿真软件实现程序的完整运行。

三、硬件设计(1)、确定机型可选用AT89C52单片机,晶振频率选择6HZ。

(2)、选择元器件根据系统要求,应具有蜂鸣器及驱动电路构成单片机音乐演奏器,拟选用蜂鸣器、LCD、三极管、电阻若干、电容若干。

(3)、硬件原理本系统通过AT89C52单片机的P1.1口控制几个9012PNP三极管、三极管、LCD、扩音器等控制电磁蜂鸣器的电源通断。

单片机控制的音乐播放器原理图:四、软件设计及要求(1)、声音三要素由于人耳听觉系统非常复杂,迄今为止人类对它的生理结构和听觉特性还不能从生理解剖角度完全解释清楚。

所以,对人耳听觉特性的研究目前仅限于在心理声学和语言声学。

人耳对不同强度、不同频率声音的听觉范围称为声域。

在人耳的声域范围内,声音听觉心理的主观感受主要有响度、音高、音色等特征和掩蔽效应、高频定位等特性。

其中响度、音高、音色可以在主观上用来描述具有振幅、频率和相位三个物理量的任何复杂的声音,故又称为声音“三要素”;而在多种音源场合,人耳掩蔽效应等特性更重要,它是心理声学的基础。

基于单片机实现的音乐播放器设计

基于单片机实现的音乐播放器设计

目录1、设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务 (1)1.2 功能要求说明 (1)1.3 设计课题总体方案介绍及工作原理说明 (1)2、设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍 (5)2.2 设计课题电路原理图、PCB图、元器件布局图 (5)2.3 设计课题元器件清单 (5)3、设计课题软件系统的设计3.1 设计课题使用单片机资源的情况 (7)3.2 设计课题软件系统各模块功能简要介绍 (7)3.3 设计课题软件系统程序流程框图 (7)3.4 设计课题软件系统程序清单 (7)4、设计结论、仿真结果、误差分析、教学建议等等4.1 设计课题的设计结论及使用说明 (10)4.2 设计课题的仿真结果 (10)4.3 设计课题的误差分析 (10)4.4 设计体会 (10)4.5 教学建议 (11)参考文献 (12)致谢 (13)附录 (14)第一章设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的音乐播放器。

该音乐播放器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。

该音乐播放器可以播放多首音乐,曲目选择可以由键盘控制,曲目名称可以显示在显示器上。

1.2功能要求说明(1) 该音乐播放器上电后显示系统提示符“P.”。

(2) 在按下第一个键后就播放第一首歌曲,并在显示器上显示“1”。

(3) 在按下第二个键后就播放第二首歌曲,并在显示器上显示“2”。

(4) 在按下第三个键后就播放第三首歌曲,并在显示器上显示“3”。

(5) 在播放音乐的中间能切换歌曲,在放完一首歌后回到起始状态,下一步的动作由人控制。

1.3设计课题总体方案介绍及工作原理说明本设计由AT89C52 单片机,3*1独立键盘,数码管等构成。

总体方案图如图1.1所示图1.1 总体方案图(1)总体原理:乐曲中不同的音符,实质就是不同频率的声音。

通过单片机产生不同的频率的脉冲信号,由蜂鸣器放出,就产生了美妙和谐的乐曲。

音乐播放器实验报告

音乐播放器实验报告

一、实验项目名称基于单片机的音乐播放器二、实验目的Ⅰ设计方案设计一个基于AT89C51系列单片机的音乐盒,利用按键控制切换演奏出不同的音乐。

蜂鸣器发出某个音调,与之对应的LED灯亮起。

使用两个按键,一个用来切换歌曲,另一个切换LED的变化花样。

Ⅱ研究内容①电路有两种模式:演奏音乐模式和花样灯模式A 演奏音乐模式:演奏完整的一首歌曲,LED随着音乐变化;B 花样灯模式:LED变化出各种花样,蜂鸣器随着发出“滴滴”声;②按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲;按下按键2进入花样灯模式,再按切换LED花样,共三种花样。

Ⅲ总体方案图a组成框图:音乐盒的系统结构以AT89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。

单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。

系统组成框图如下所示:b功能结构图:Key1负责切换播放歌曲,共两首。

分别是祝你生日快乐和寂寞沙洲冷;Key2负责切换LED显示花样,共3种:顺序显示,由两边向中间移动然后向两边移动,循环显示。

三、实验器材Windows7 操作系统Proteus仿真软件keil4软件AT89C51单片机共阴极数码管开关电容晶振电阻发光二极管蜂鸣器四、实验要求(1)以单片机为主控处理器,用蜂鸣器播放歌曲;(2)系统要求有选择上一首、下一曲功能;(3)两个按键,可在播放和显示花样中进行切换;(4)用一个键控制花样类型的显示功能;(5)用LED灯闪烁“伴奏”。

五、实训基本原理(附原理图、源程序清单)1 硬件设计①LED显示电路设计与原理LED显示电路是由8个LED发光二极管组成,连接方式是共阳极,LED接到单片机的P1口,若是低电平,可使LED亮。

发光二极管的亮灭是由内部程序控制的,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮灭。

②硬件电路图及其功能介绍1)电路中用P3.2、P3.3 控制键;2)P1.0~P1.7控制LED;3)P2.3控制蜂鸣器;4)电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。

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

基于单片机的音乐播放器 The latest revision on November 22, 2020
基于51单片机的音乐播放器制作
一、设计原理
乐曲中有不音符,实质就是不同频率的声音。

通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。

二、AT89C51简介
AT89C51:是一种4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AAT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要功能特性:
1)与MCS-51兼容;
2)4K字节可编程FLASH存储器;
3)全静态工作:0Hz-24MHz;
4)128×8位内部RAM;
5)两个16位定时器/计数器;
6)5个中断源;
7)可编程串行通道;
8)低功耗的闲置和掉电模式;
9)片内振荡器和时钟电路。

三、硬件结构
下图是以AT89C51单片机为核心的音乐播放器系统硬件设计结构图。

该系统主要是由复位电路、按键电路、时钟电路、中心模块、扬声器驱动等组成。

其工作原理为:此音乐播放器,有三个按键及控制按钮:播放/暂停、下一曲、上一曲;通过控制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输出声音。

三、简易仿真原理图
四、音乐发声设计原理
发声原理
一首乐曲是由多个音符构成的。

每个音符都对应着一个确定的频率,乐曲中不同的音符,实质就是不同频率的声音;另外每个音符会根据乐曲的要求设定一个确定的节拍。

可以控制单片机不同频率不同节拍的脉冲信号,蜂鸣器发出就产生了美妙和谐的乐曲。

单片机产生不同频率脉冲信号的原理
1、要产生音频脉冲,只要算出来某一个音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这半周期的时间,每当计时到后就降输出脉冲I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。

2、计算脉冲值与频率的关系公式如下:N=Fi/2/Fr
其中N表示计数值;Fi表示内部计时一次为1uS,故其频率为1MHz;Fr表示要产生的频率。

3、其计数值的求法如下:T=65536-N=65536-Fi/2/Fr
4、每个音符使用1个字节,字节高4位代表音符高低,低4位代表音符节拍。

假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。

只要求得1/4拍的DELAY时间,其余节拍则为它的倍数,此设计取4/4调值,延时时间125ms,其中节拍码与实际节拍对照表如下表所示。

五、音乐播放程序设计
#include <>
#include <>
#include <>
#define uchar unsigned char
#define uint unsigned int
#define w_c_add XBYTE[0x2070] /* 写命令字地址 */
#define w_d_add XBYTE[0x2071] /* 写数据地址 */
#define r_s_add XBYTE[0x2072] /* 读状态字地址 */
#define r_d_add XBYTE[0x2073] /* 读数据地址 */
uchar code * song;
uchar code * song_name;
uchar code * song_lrc;
uchar code
tab[]={0xf8,0x94,0xf9,0x5c,0xfa,0x1a,0xfa,0x6a,0xfb,0x00,0xfb,0x8c,0x fc,0x0e,
0xfc,0x4a,0xfc,0xae,0xfd,0x08,0xfd,0x30,0xfd,0x80,0xfd,0xc6,0xfe,0x02,
0xfe,0x2a,0xfe,0x5c,0xfe,0x84,0xfe,0x98,0xfe,0xc0,0xfe,0xe8,0xfe,0x06 };
uchar code
song_name3[18]={0xc7,0xfa,0xc4,0xbf,0xc8,0xfd,0xa1,0xc3,0xc9,0xfa,0xc 8,0xd5,0xbf,0xec,0xc0,0xd6,0xff};//生日快乐
uchar code
song3[]={0xC4,0x12,0x32,0x44,0x42,0x52,0x52,0x44,0x32,0x32,0x12,0x14,
0x12,0x12,0x32,0x42,0x54,0x44,0x4F,0xC4,0x12,0x32,0x44,0x42,
0x72,0x58,0x42,0x32,0x34,0x14,0x12,0x32,0x34,0x12,0x1F,0xff};
uchar code song_lrc3[]={"祝你生日快乐祝你生日快乐 HAPPY BIRTHDAY TO YOU 祝你生日快乐"};。

相关文档
最新文档