音乐盒电路图

合集下载

单片机课程设计题目及答案

单片机课程设计题目及答案

题目1 智能电子钟(LCD 显示)题目2 电子时钟(LCD 显示)题目3 秒表题目4 定时闹钟题目5 音乐倒数计数器题目6 基于数字温度传感器的数字温度计题目7 基于热敏电阻的数字温度计题目8 十字路口交通灯控制题目9 波形发生器设计题目10 电容、电阻参数单片机测试系统的设计题目11 数字频率计题目12 8位竞赛抢答器的设计题目13 单词记忆测试器程序设计题目14 数字电压表设计题目15 可编程作息时间控制器设计题目16 节日彩灯控制器的设计题目17 双机之间的串行通信设计题目18 电子琴设计题目19 数字音乐盒的设计题目20 单片机控制步进电机题目21 单片机控制直流电动机题目1 智能电子钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心,制作一个LCD 显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。

(2) 闰年自动判别。

(3) 五路定时输出,可任意关断(最大可到16路)。

(4) 时间、月、日交替显示。

(5) 自定任意时刻自动开/关屏。

(6) 计时精度:误差≤1秒/月(具有微调设置) (7) 键盘采用动态扫描方式查询。

所有的查询、设置功能均由功能键K1、K2完成。

2. 工作原理 本设计采用市场上流行的时钟芯片DS1302进行制作。

DS1302是DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM ,可以通过串行接口与计算机进行通信,使得管脚数量减少。

实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。

DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。

(2) 31B 的8位暂存数据存储RAM 。

(3) 串行I/O 口方式使得引脚数量最少。

(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。

音乐盒的设计

音乐盒的设计

目录1 概述 (1)1.1设计意义 (1)1.2主要研究工作 (1)1.3设计目标 (1)2 音乐盒的发音原理及程序设计 (2)2.1播放音乐的原理 (2)2.2音符频率的产生 (2)2.3节拍频率的产生 (4)2.4歌曲的编码改写实例 (4)3 硬件设置 (6)3.1框图及介绍 (6)3.2AT89C51 介绍 (6)3.2.1主要特性 (6)3.2.2管脚说明: (7)3.2.3振荡器特性 (9)3.2键盘系统 (9)3.3时钟电路 (9)3.4LED数码管 (10)3.5程序框图 (11)结束语 (13)参考文献 (14)附录1总设计图 (15)附录2原器件清单 (16)1 概述1.1设计意义音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。

当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。

音乐盒有着300多年的发展历史,是人类文明发展的历史见证。

传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。

但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。

水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。

另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。

本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。

与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。

电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。

基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。

所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。

1.2主要研究工作在本次设计中,首先提出了发音盒的整体设计方案;然后对音乐盒所播放的音乐进行了程序设计;其次设计了音频驱动电路,以驱动播放扬声器;最后设计了直流稳压电源,用于为单片机和音频部分、显示部分提供稳定的+5V电压。

音乐盒实验报告

音乐盒实验报告

音乐盒设计报告音乐盒设计报告目录音乐盒摘要 (3)一、原理说明 (3)二、系统框图及工作原理 (3)1、硬件设计及设计框图 (3)1.1硬件仿真 (3)1.2硬件实现 (4)1.2.1小小系统原理图 (4)1.2.2单片机控制部分 (4)1.2.3音频输出部分 (6)2、软件设计 (6)三、元件清单用价格 (6)四、设计总结及体会 (6)五、参考文献 (7)附录A:单片机汇编程序 (7)附录B:元件清单及价格 (12)音乐盒摘要用一块AT89S52组成的最小系统作为控制中心,编好程序烧录进单片机里,使I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。

输出信号通过三极管放大,由一个蜂鸣器来表现信号的输出。

一、 原理说明接通电源时,启动计数器T0,产生一定频率的脉冲,通过P1.0口输出,经过滤波电容滤波后输入第一个三极管的基极,经过第一个三极管放大后信号输入第二个三极管,最终经过两个三极管放大输出到蜂鸣器。

二、 系统框图及工作原理1、 硬件设计及设计框图1.1硬件仿真用proteus 进行仿真,原理图如下:1.2硬件实现1.2.1最小系统原理图1.2.2 单片机控制部分1)振荡与时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机必须在时钟的驱动下才能进行工作。

根据硬件电路的不同,单片机可以有邮件管理员时钟方式,即内部时钟方式和外部时钟方式。

本电路采用的是外部时钟方式。

在由多片单片机组成的系统中,为了单片机之间的时钟信号的同步,应当引入唯一的公用脉冲信号作为各单片机的振荡脉冲。

这时,外部的脉冲信号是经过XTAL2引脚注入的。

如上图所示:2)单片机的复位及复位电路① 复位状态计算机在启动运行时都需要复位,复位使中央处理器CPU 和系统中的其他器件都处于一种初始状态,并从这个初始状态工作。

MCS-51系列单片机有一个复位引脚RST 。

在MCS-51系列单片机的RST 引脚上输入一个高电平信号,该高电平信号至少要维持两个机器周期以上的时间,单片机被复位。

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

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

摘要本设计是采用单片机为核心设计的数字音乐盒。

具体硬件电路包括:AT89C2051单片机、音频发生器、音频放大器、按键电路、复位电路、时钟电路。

本音乐盒可以播放三首音乐,通过软件程序来控制单片机内部的定时器使其产生音乐频率,演奏出优美动听的音乐同时,用户通过选择按键电路来选择自己喜欢的音乐,同时具有播放\暂停功能。

与传统的机械式音乐盒相比,用单片机设计的音乐盒体积更小巧,且制作工艺简单,音质更优美能演奏出和弦音乐。

关键词:音乐盒AT89C2051播放\暂停AbstractThis design is used as the core design of single chip digital music box. Specific hardware circuit includes: AT89C2051 microcontroller, audio generator, audio amplifier, keypad circuit, reset circuit, clock circuit. The music box can play three songs, through the software program to control the microcontroller's internal timer frequency to produce music, playing the beautiful sounds of music at the same time, the user by selecting the button circuit to select your favorite music, both play \ pause function. With the traditional mechanical music box than a music box with a single chip design is more compact size and simple fabrication process, can play a sound more beautiful polyphonic music.Keywords: music box AT89C2051 Broadcast \ pause目录摘要 (i)Abstract (i)第一章绪论 (1)第一节选题目的及国内外发展情况 (1)一、选题目的 (1)二、国内外发展情况 (1)第二节设计所研究的内容及所做工作 (2)第二章方案论证 (3)第一节设计方案 (3)第二节设计方案的确定 (4)第三章音乐盒的硬件系统设计 (5)第一节音乐盒的硬件电路设计框图 (5)第二节控制系统的设计 (5)一、AT89C2051介绍 (5)二、时钟电路设计 (8)三、复位电路的设计 (10)第三节音频放大器的设计 (13)一、音频放大器的作用 (13)二、LM386的性能介绍 (13)第四节按键选择输入电路 (15)一、键盘接口设计 (15)二、按键识别方式 (16)三、键盘模块处理方式 (17)四、键盘设计实用技巧 (19)第四章音乐盒的软件系统设计 (20)第一节音符盒的发音原理 (20)一、音符频率 (20)二、音符节拍 (21)三、建立曲谱编码表 (23)第二节程序模块设计 (24)一、主程序模块设计 (24)二、音乐部分模块设计 (25)三、外部中断模块设计 (30)四、定时器模块设计 (31)第五章软硬件调试 (33)第一节硬件调试 (33)第二节软件调试 (34)第三节性能分析 (35)第六章抗干扰措施 (36)第一节干扰的来源及后果 (36)一、干扰的来源 (36)二、干扰产生的后果 (36)第二节硬件抗干扰设计 (37)第三节软件的抗干扰设计 (38)结束语 (39)参考文献 (40)附录一:音乐盒硬件电路原理图 (41)附录二:程序 (42)外文资料 (47)中文翻译 (53)致谢 (58)第一章绪论第一节选题目的及国内外发展情况一、选题目的通过设计电子音乐盒这个系统,有利于进一步巩固单片机的知识,将所学知识综合运用到实际当中来,并且提高自身的设计能力、动手操作能力以及解决问题的能力。

(完整版)STC89C51单片机的数字音乐盒设计(含代码)

(完整版)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)。

音乐盒实验报告

音乐盒实验报告

引言随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。

音乐始终是深受广大消费者喜爱的文化生活元素。

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

设计要求以单片机为核心,设计一个数字音乐盒:利用I/0口产生一定频率的方波驱动蜂鸣器,发出不同音调,从而演奏乐曲采用LCD显示信息,开机时有英文欢迎提示字符,播放时显示歌曲序号。

可通过功能键选择乐曲、暂停、播放。

晶振频率为11.0592MHz原理说明用一块AT89C51作为控制中心,编好程序烧录进单片机里,使I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。

输出信号通过三极管放大,由一个蜂鸣器来表现信号的输出。

发声程序接通电源时,启动计数器T0、T1,工作于模式1,T0在主程序中用查询中断,每次R0、R1给定的定时时间到就给P1.3口取反,再查询是否有按暂停键,没有就通过下面的AJMP L0循环到L0中再次装初值,定时并循环产生一定频率的脉冲,通过P1.3口输出,经过PNP三极管的基极放大输出到蜂鸣器。

T1定时0.006s,并且是利用中断功能,每过0.OO6秒就跳入中断程序YINFU,重装初值后,经过给P2送显示的程序后,用R2判断是否经过150次定时达到0.6S,达到0.6就先查询R5的值看是在播放那一首歌曲,再跳入相应的查询字库程序,查询A的值是否已经为一首歌的最后一个音符,是则从新给A赋值#OOH,并改变R5的值换下一首歌曲,在换R5的值之前还要查询R5的值是否为最后一首歌的值,最终通过寄存器A的自动累加,不断替换R0、R1的值,改变主程序中T0的初值换下一个频率的音,从而达到发出音乐的目的。

下图为音乐盒的扬声器部分电路:数码管显示由于能力与时间的有限未能实现LCD显示而采用的数码管代替,歌曲的序号显示是通过单片机的P2口的输出的信号控制的,P2口的信号输出程序在T1的定时中断中断程序中,由于T1的定时中断每过0.006秒就执行一次,所以看不出有闪动。

基于AT89C52单片机的音乐盒设计方案

基于AT89C52单片机的音乐盒设计方案

1/4和1/8节拍的时间设定
曲调值
DELAY 曲调值 DELAY
调4/4
125毫秒
调4/4 62毫秒
调3/4 调2/4
187毫秒 250毫秒
调3/4 94毫秒 调2/4 125毫秒
对于单片机来说,产生不同频率的脉冲是非
常方便的,利用单片机的定时/计数器来产生这样
的方波频率信号。因此,需要弄清楚音乐中的音
Page 3
传统音乐盒
Page 4
设计任务及要求
本设计是以AT89C52芯片的电路为基础,外
部加上放音设备,以此来实现音乐盒的硬件电
路,通过软件程序来控制单片机内部的定时器
■设 使其演奏出优美动听的音乐。用户可以按照自
■计 己的喜好选择音乐并将其转化成机器码存入单
■任 片机的存储器中。该系统具有很好的通用性,
21
基于AT89C52单片机的音乐盒设计
论文结构
1 2 3 4 5
■课题意义、任务及要求 ■应用软件简介 ■设计方案 ■设计结构 ■系统电路图
Page 2
设计意义
传统的音乐盒多是机械音乐盒,其工作原理是通过齿 轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁 片制成的琴键,从而发出声音但是,机械式的音乐盒体 积比较大,比较笨重,且发音单调。水、灰尘等外在因 素,容易使内部金属发音条变形,从而造成发音跑调。 另外,机械音乐盒放音时为了让音色稳定,必须放平不 ■设 能动摇,而且价格昂贵,不能实现大批量生产。 ■计 本文设计的音乐盒,是基于单片机设计制作的电子 ■意 式音乐盒。与传统的机械式音乐盒相比更小巧,能演奏 ■义 多个曲目且携带方便。电子式音乐盒动力来源是电池, 制作工艺简单,可进行批量生产,且价格便宜。基于单 片机制作的电子式音乐盒,控制功能强大,可根据需要 选歌,使用方便。根据存储容量的大小,可以尽可能多 的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒 的功能更加丰富。

基于单片机的带流水灯的音乐盒设计解析

基于单片机的带流水灯的音乐盒设计解析

前言本次课程设计是一个基于AT89C51系列单片机的音乐盒的设计,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个音乐盒。

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

使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路led的变化花样。

本音乐盒共有两首歌曲,花样灯花样共计3种。

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

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

该音乐盒使用c语言编程和汇编语言相结合,程序段使用C语言,歌曲音谱和led显示花样使用汇编语言。

目录绪论 (1)1.设计题目要求 (2)1.1课题意义 (2)1.2设计目的 (2)1.3设计要求 (2)2 方案设计及硬件设计及其原理 (2)2.1方案设计和硬件设计 (2)2.1.1系统总体方案设计 (2)2.1.2音乐盒设计 (3)2.1.3硬件总体设计 (3)2.1.4硬件仿真图及功能 (4)2.2相关知识,原理和理论介绍 (5)2.2.1 AT89C52简介 (5)2.2.2 LED显示电路设计与原理 (5)2.2.3 时钟振荡电路 (5)2.2.4 花样灯3种花样图 (6)3软件设计 (7)3.1音调、节拍以及编码的确定方法 (7)3.1.1音调的确定 (7)3.1.2节拍的确定 (8)3.1.3编码 (9)3.2软件程序设计 (10)3.2.1主程序流程图 (10)3.2.2播放音乐子程序设计 (13)3.3调试成果 (15)4心得体会 (15)参考文献 (17)附录 (18)绪论21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。

STC89C51单片机的数字音乐盒设计(含代码)

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年12月12日摘要本设计是一个基于AT89C52系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒,最终达到设计电路的乐器演奏、点歌、存储及显示功能。

设计中使用中断系统和定时/计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现,可以用它来弹奏和播放乐曲。

本设计的特点是设计思路简单、清晰,成本低。

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

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

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

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

关键字:音乐盒;AT89C52单片机;KEIL;PROTEUS;AbstractThe design is based on a series of AT89C52 SCM Music Box.The design of a multi-function music box through the production of hardware andsoftware compilation, On the basis of the principles of microcomputer technology.The design use interruption system and timing / counting principle to control performance sound production, which used for playing the songs. And the music must determine the notes and beats program language to realize the separation of.The characteristic of this design is simple, clear design, low cost.The music box is mainly composed of a key circuit, reset circuit, clock circuit and a buzzer.The circuit using two buttons to control music box, a used to switch the song, another used to switch the 8 road LED change pattern。

音乐盒的简易设计(电路和程序)

音乐盒的简易设计(电路和程序)

#include <reg52.h>sbit BeepIO=P2^6; //定义输出管脚#include "zuoye.h"unsigned char RunMode;//**********************************SystemFuction*************************************************void Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}unsigned char code LEDDisplayCode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //0~70x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};void Display(unsigned char Value) //数码管{P3 = LEDDisplayCode[Value];}unsigned char GetKey(void){unsigned char KeyTemp,CheckValue,Key = 0x00;CheckValue = P2&0x32;if(CheckV alue==0x32)return 0x00;Delay1ms(10);KeyTemp = P2&0x32;if(KeyTemp==CheckValue)return 0x00;if(!(CheckValue&0x02))Key|=0x01;if(!(CheckValue&0x10))Key|=0x02;if(!(CheckValue&0x20))Key|=0x04;return Key;}unsigned int Timer0Count,SystemSpeed,SystemSpeedIndex; void InitialTimer2(void){T2CON = 0x00; //16 Bit Auto-Reload Mode TH2 = RCAP2H = 0xFC; //重装值,初始值TL2 = RCAP2L = 0x18;ET2=1; //定时器2 中断允许TR2 = 1; //定时器2 启动EA=1;}void LEDShow(unsigned int LEDStatus){P1 = ~(LEDStatus&0x00FF);P0 = ~((LEDStatus>>8)&0x00FF);}void InitialCPU(void){RunMode = 0x00;Timer0Count = 0;SystemSpeedIndex = 9;P1 = 0x00;P0 = 0x00;P2 = 0xFF;P3 = 0x00;Delay1ms(500);P1 = 0xFF;P0 = 0xFF;P2 = 0xFF;P3 = 0xFF;}void Timer0EventRun(void){Display(RunMode);}void Timer2(void) interrupt 5 using 3{TF2 = 0; //中断标志清除( Timer2 必须软件清标志!)if(++Timer0Count>=SystemSpeed){Timer0Count = 0;Timer0EventRun();}}unsigned char MusicIndex = 0;void KeyDispose(unsigned char Key){if(Key&0x01){RunMode = (RunMode+1)%10;Display(RunMode);if(RunMode==0x09)TR2 = 0;else if(RunMode==0x00)TR2 = 0;else if(RunMode==0x01)TR2 = 0;else if(RunMode==0x03)TR2 = 0;else if(RunMode==0x05)TR2 = 0;else if(RunMode==0x07)TR2 = 0;elseTR2 = 1;}if(Key&0x02){MusicIndex =(MusicIndex+MUSICNUMBER-1)%MUSICNUMBER;}if(Key&0x04){MusicIndex =(MusicIndex+1)%MUSICNUMBER;}}//*****************************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,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,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, 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,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 };//***************************************************************************** ******main(){unsigned char Key;InitialCPU();InitialSound();InitialTimer2();while(1){Key = GetKey();if(RunMode==0x09)Play(Music_Girl,0,3,360);else if(RunMode==0x00)Play(Music_Girl,0,3,360);else if(RunMode==0x01)Play(Music_Two,0,3,360);else if(RunMode==0x03)Play(Music_Same,0,3,360);else if(RunMode==0x05)Play(Music_Two,0,3,360);else if(RunMode==0x07)Play(Music_Same,0,3,360);if(Key!=0x00){KeyDispose(Key);}}}Zuoye.h程序如下:#define SYSTEM_OSC 12000000 //定义晶振频率12000000HZ#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔#define MUSICNUMBER 3 //歌曲的数目extern void LEDShow(unsigned int LEDStatus);extern unsigned char GetKey(void);extern void KeyDispose(unsigned char Key);extern void Delay1ms(unsigned int count);extern unsigned char MusicIndex;unsigned 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; //音长定时器初值暂存//************************************************************************** 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;ET0 = 1;ET1 = 0;TR0 = 0;TR1 = 0;EA = 1;}void BeepTimer0(void) interrupt 1 //音符发生中断{BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0;}//************************************************************************** void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed){unsigned int NewFreTab[12]; //新的频率表unsigned char i,j;unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD,Key,LEDFlash,OFFSet;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){SL=Tone%10; //计算出音符SM=Tone/10%10; //计算出高低音SH=Tone/100; //计算出是否升半LEDFlash = SM*((SL/2)+1)+2;LEDShow(~(0xFFFE<<LEDFlash));OFFSet = 2;CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率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 + 6; //加6是对中断延时的补偿}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 (SL!=0){TR0=1;for(i=LDiv1;i>0;i--) //发规定长度的音{while(TF1==0){Key = GetKey();if(Key!=0x00){KeyDispose(Key);TR0 = 0;TR1 = 0;BeepIO = 0;return;}}TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;}}if(LDiv2!=0){TR0=0; BeepIO=0;for(i=LDiv2;i>0;i--) //音符间的间隔{while(TF1==0){Key = GetKey();if(Key!=0x00){KeyDispose(Key);TR0 = 0;TR1 = 0;BeepIO = 0;return;}}TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;}}Point+=2;Tone=Sound[Point];Length=Sound[Point+1];}BeepIO=0;MusicIndex=(MusicIndex+1)%MUSICNUMBER;Delay1ms(300);}OUT BIT P2.4 ;定义音频输出端口,p2.3N EQU 9 ;歌曲总数OUT_NUM EQU P0 ;数码管显视当前所放歌曲曲数ORG 0000HAJMP MAINORG 0003HAJMP LAST_SONG ;外部中断0用于接上一曲歌按键ORG 000BHAJMP F_T0 ;定时器0用于定时,作音符发生器用ORG 0013Hq4: AJMP NEXT_SONG ;外部中断1接下一曲歌按键ORG 001BHAJMP START_PAUSE ;定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffH,方式2ORG 0030HMAIN: MOV SP,#60HMOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。

电工实习报告(555的LED控制电路音乐盒制作)

电工实习报告(555的LED控制电路音乐盒制作)

555的LED控制电路音乐盒制作●实验目的1.了解555的LED控制电路工作原理2. 基本掌握手工电烙铁的焊接技术,焊机工艺。

3.进一步掌握电子产品制作的方法●实习内容1.画出实物电路图、装配图与连线工艺图。

2.在万用板上完成电路的安装与连接。

3. 调试已完成的电路。

●实验原理1、555的LED控制电路电路原理分析电路中开关闭合,二极管D2亮。

555的2和6脚为低电平0,输出端3为高电平1,D1亮,三极管8550截止,D3不亮,7脚为高阻态;随着时间的增长,电容C1通过电阻R1和R2充电,2和6脚电位升高,最终达到高电位1,3脚输出地电位0,D1灭,三极管8550通,D3亮,7脚为低阻态,通过电源负开始放电,致使2和6脚电位降低,循环反复。

其中电路的定时时间为:T=(R1+R2)C1附:555真值表将电位U<1/3V、U>=1/3V分别视为2脚的“0”和“1”电位,将U<2/3V、U>=2/3V 视为6脚的“0”和“1”电位,555真值表见表1。

555真值表说明:1)2脚为0,输出3脚为1,7脚为高阻(与电源负断开);2)6脚为1,输出3脚为0,7脚为低阻(与电源负联通);3)2、6脚电位在中间段时,3脚保持原状态不变;4)在任何时候,4脚都为0,输出为低(强制复位)。

实物电路图音乐电路音乐盒的调试将制作的555的LED控制电路音乐盒接上4.5 v的电源,会看到绿色的二极管常亮,另外两个红色的发光二极管交替亮,在此期间音乐一直响着。

音乐盒制作实物图总结与体会通过一个周的电工实习,我的到了很大的收获,这些都是平时在课堂学习理论学习中无法学到的。

首先,在这次实习中我学会了电烙铁的使用,知道了焊接的一些基本方法和注意事项,其基本操作“五步法”准备施焊、加热焊件、熔化焊料、移开烙铁、移开焊丝。

看似简单,其实需要大量的操作才能够熟练。

其次,我学会了在设计电路是应该合理的布局线路,此项工作必须在焊接元件时就考虑好。

基于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。

单片机课程设计_基于89C51的数字音乐盒设计

单片机课程设计_基于89C51的数字音乐盒设计

单片机系统课程设计成绩评定表设计课题基于89C51的数字音乐盒设计设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:基于89C51的数字音乐盒设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录引言 (5)1 概述 (5)2 系统总体方案设计 (5)2.1硬件组成 (5)2.2.方案论证。

(6)2.3音乐盒的功能图用框图表示 (7)3硬件电路设计 (7)3.1单片机电路 (7)3.2 晶振电路 (8)3.3复位电路 (8)3.4键盘 (9)3.5蜂鸣器电路 (9)3.6 LCD液晶电路 (10)3.7电源电路 (11)4 软件设计 (11)4.1 音调、节拍、及编码的设置 (11)4.1.1音调 (11)4.1.2节拍的确定 (13)4.2 (15)4.3播放音乐子程序流程图(包含了键盘扫描) (16)4.4定时器0中断服务子程序框图: (16)5,调试 (17)5.1 检查硬件连接 (17)5.2 检查软件系统 (17)5.2.1. (17)5.2.2. (18)5.3测试结果 (18)5.3.1整体运行图 (18)5.3.2LED灯运行图 (19)6 总结 (19)7参考文献 (20)附录A (20)附录B (21)引言在电子信息技术飞速发展的今天,现代电子产品几乎渗透了社会的各个领域,它不仅推动了社会的进步,而且为我们的生活带来了诸多的便利。

由于人们生活质量的提高,人们对视觉、听觉方面的享受提出了越来越高的要求。

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

传统音乐盒多是机械型的,体积笨重,发音单调,可以选择的曲目较为单一。

本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,它体积小,重量轻,可以随心添加自己喜欢的音乐,外观效果多彩,使用方便,并且具有一定的商业价值。

基于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,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。

数字音乐盒的设计

数字音乐盒的设计

电子技术课程设计《数字音乐盒》课程设计报告院(系)名称信息工程学院专业班级10级测控技术与仪器学号 6学生姓名刘祖林指导教师杨全玖目录第一章摘要 (1)第二章概述............................................ 错误!未定义书签。

第一节单片机总体功能简介 (3)第二节AT89C51芯片功能和硬件 (4)第三节功能键介绍 (5)第三章系统总体方案及硬件设计 (5)第一节系统设计要求 (5)第二节总体设计方案 (5)第三节系统硬件设计 (6)第四节软件设计................................ 错误!未定义书签。

第四章程序设计流程图 .......................... 错误!未定义书签。

第五章P ROTEUS功能仿真 (8)总结 ........................................................ 错误!未定义书签。

致谢 (9)附1原程序代码..................................... 错误!未定义书签。

附2系统原理图 (14)第一章摘要本设计是基于51系列单片机,蜂鸣器,数码管LED的数字音乐盒设计,通过利用I/o一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏各种乐曲(本设计为四首,若有必要,可以增加),可以通过功能键来选择乐曲,暂停,播放,前进,后退等功能。

音乐盒的电路设计过程在硬件与软件方面进行同步。

其中,硬件方面选择内部存储资源丰富的AT89C51单片机,时钟采用12MHZ晶体振荡电路。

软件方面,从分析电路各个功能子模块的功能、流程图设计,在到程序的编写设计均进行了综合的考虑。

编成语言从程序总体设计以及高效性的硬件方面考虑,采用汇编语言进行编写。

在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面复习与准备。

在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大的限制,每项功能实现时需要那种硬件,程序该如何编写,如何调试等,没有一定的基础就不可能很好的实现。

单片机的可控数字音乐盒设计

单片机的可控数字音乐盒设计

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

而本文设计采用的是A T89C51单片机,这是一款性价比非常高的单片机。

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

俗称单片机[2]。

如图:图 2-1 AT89C51单片机引脚图基于单片机的可控数字音乐盒设计图 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控制数码管;晶振:给单片机正常工作提供稳定的时钟信号,电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。

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