STC89C51单片机的数字音乐盒设计(含代码)
89C51单片机的数字式音乐盒的设计毕业设计说明书
摘要随着改革开放的深入和市场经济体制的不断完善,传统的人工收费方式己越来越不适应现代化管理的需要。
随着电子技术和通信技术的发展,公交系统与IC 卡技术相结合成为发展的必然要求,使公交汽车自动收费的实现从技术上成为可能。
本文以非接触式IC卡读写器为设计对象,研究了系统的总体结构。
以8051单片机为核心,根据公交IC卡控制系统的性能指标,采用无线射频技术,运用一套合理的安全管理策略,完成公交非接触式IC卡控制系统读写器的硬件设计及软件设计。
并开展了对非接触式IC卡控制系统的安全性研究,在本文最后重点论述了系统中心管理的分析与设计。
关健词: 读写器;非接触式IC卡;系统安全;中心管理AbstractWith the deepening reform and opening up,traditional combination of public traffic charging system use manual-observed combination of public traffic monitoring system is not suit for the requirement.With the development of electronic technology and communication technology,the combination of public traffic system and IC card technology becomes inevitable request for development.Various automatic meter charging systems have emerged as the times require.The says as designed object is for the RF reader of the contact-less IC card,according to the design needs of the controlling system which is owned for public traffic IC card,the overall technical blue print is studied.It used 8051 as the core,adopted RFID technology and some information security strategies.Then the hardware and software design of the RF interface coprocessor has been finished.However,The research on the information security of the design has been done.This paper puts emphasis on the analysis and design of system center administration.Keywords: RF Reader and Writer; Contact-less IC Card; System Security;Center Administration毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
(完整版)STC89C51单片机的数字音乐盒设计(含代码)
HEFEI UNIVERSITYFPGA综述报告系别电子信息与电气工程系任课教师汪济洲班级姓名成绩日期数字音乐盒设计摘要:本设计是一个基于STC89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计4种。
播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
关键字:音乐盒STC89C51单片机KEIL PROTEUS 音调目录1概述 (3)1.1设计方案 (3)1.2研究内容 (3)1.3音乐盒的功能结构图 (3)2硬件设计 (4)2.1总体设计框图 (4)2.2各部分硬件设计及其原理 (4)2.2.1 STC89C51简介 (4)2.2.2 LED显示电路设计与原理 (5)2.2.3 时钟振荡电路 (5)2.3硬件电路图及功能 (6)3软件设计 (7)3.1音调、节拍以及编码的确定方法 (7)4.1.1 音调的确定 (7)4.1.2 节拍的确定 (8)4.1.3 编码 (9)4.2软件程序设计 (10)4.2.1 程序流程图及相应代码块 (10)4.2.2 程序源代码(见附录A) (14)5调试 (14)5.1检查硬件连接 (14)5.2检查软件系统 (14)5.3测试结果 (14)5.3.1.总体运行图 (14)5.3.2.花样灯4种花样图 (15)参考文献 (16)附录A 程序源代码及注释 (16)。
单片机的可控数字音乐盒设计说明
微控制器和音乐盒硬件功能随着当代单片机技术的飞速进步,单片机的功能也越来越强大,包括:(1)单片机集成度高;(2)系统结构简单、使用方便、模块化;(3)单片机可靠性高、处理功能强、速度快;(4) 低电压、低功耗,便于生产便携产品;(5) 强大的控制功能。
本文的设计采用了AT89C51单片机,是一款性价比非常高的单片机。
2.1 AT89C51芯片功能AT89C51 是一款低压、高性能 CMOS 8 位微处理器,具有 4K 字节的闪存可编程可擦除只读存储器。
俗称单片机[ 2 ] 。
如图所示:图 2-1 AT89C51 MCU 引脚图图 2-2 AT89C51 单片机实物图引脚功能[ 3 ] :P0.0-P0.7 :8位开漏双向I/O口;P1.0-P1.7:8位双向I/O口,提供上拉电阻;P2.0-P2.7:8位双向I/O口,带上拉电阻;P3.0-P3.7:引脚为8个带上拉电阻的双向I/O口;P3.0:RXD(串口输入);P3.1:TXD(串行输出口);P3.2:INT0(外部中断0);P3.3:INT1(外部中断1);P3.4:T0(定时器0外部输入);P3.6:WR(外部数据存储器写选通);P3.7:RD(外部数据存储器读选通);EA:当EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),无论是否有程序存储器。
请注意,在加密模式 1 中,EA 将被锁定为 RESET;当EA端保持高电平时,这部分程序内存;P3.5:T1(定时器1的外部输入);ALE:访问外部存储器时,地址锁存器使能的输出电平用于锁存地址的状态字节;PSEN:外部程序存储器的选通信号;RST:复位输入;XTAL1:反向振荡放大器的输入,部分时钟工作电路的输入;XTAL2:反相振荡器的输出。
2.2 八音盒的硬件和功能本文设计的数字音乐盒所需硬件为:AT89C51芯片:主控制器;LED灯:灯光闪烁,P1.0-P1.7控制八路LED灯;数码管:音乐序号显示,P0.0-P0.6控制数码管;晶振:为单片机的正常工作提供稳定的时钟信号。
基于89C51的数字音乐盒设计方案
基于89C51的数字音乐盒设计方案1 概述本音乐盒的设计是以AT89C52芯片的电路为基础,外部以蜂鸣器作为发音器件,共同组成了音乐演奏控制器的硬件电路,通过软件程序来控制单片机部的定时器使单片机I/O口发出相应频率的脉冲来驱动蜂鸣器发出某个音调,与之相对应的LED亮起,从而演奏出优美动听的音乐。
利用按键切换演奏出不同的乐曲,并可以在LCD上显示当前曲目序号和时间。
用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址和I/O管脚即可。
该软、硬件系统具有很好的通用性,很高的实际使用价值,为单片机DIY制作者和音乐爱好者具有一定的借鉴作用。
2 系统总体方案设计2.1硬件组成按照数字是音乐盒对控制系统的技术要求,控制系统的硬件应包括以下几部分:(1)控制器。
作为控制系统的核心,可以采用主流的51单片机,MSP430,或处理性能更为优越的ARM来合理控制各个器件有条不紊的运行。
(2)乐曲选择器。
可以采用按键或者触摸屏来切换相应的曲目。
(3)音频输出器件。
做为音乐盒的发声设备,可以用蜂鸣器通过它可以将音乐代码转变为音频信号发出来。
(4)人机交互界面。
可以运用LED或LCD在歌曲播放过程中用来对歌曲信息进行监控显示,反馈给使用者相应的信息。
硬件方框图图2-1-12.2.方案论证。
本次设计以低成本,灵活方便为原则,所以控制器选用主流的51系列单片机,考虑到51部储存空间的限制,故选用容量为51两倍的AT89C52单片机作为总控制器,共有以下两套方案可供选择:方案一:以AT89C52单片机作为总控制器,以机械键盘作为乐曲选择器,以蜂鸣器作为音频输出设备,以LCD1602液晶作为人机交互界面。
方案二:以AT89C52单片机作为总控制器,以机械键盘作为乐曲选择器,以蜂鸣器作为音频输出设备,以LED数码管作为人机交互界面。
由于数码管显示容的单一,操作较为繁琐且难以满足大众对主流时尚的需要,所以选用较为流行的显示效果良好的1620液晶作为人机交互界面,最终确定方案一作为制作方案。
51单片机控制的16介音乐盒程序及图
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。break。
case 8:{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。break。
case 8:{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
STL0=tab4[key_number]%256。
delayms(10>。
}。break。
case 1:{
TR0=1。
P1_7=~P1^7。
STH0=tab4[key_number]/256。
STL0=tab4[key_number]%256。
delayms(10>。
}。break。
case 2:{
64820,64898,64968,65030, 65058,65110,65157,65178}。
void delayms(uchar no>。
void keydetect(>。
void display(>。
void timer0_interrupt(>。
51单片机:音乐盒设计控制程序(音乐汇编) - 日月环的日志 - 网易博客
db 08h,04h,05h,04h,08h,04h,08h,04h
end
;------------------------------------------------------------------------------------------------------
yfh equ 30h ;音符高位
yfl equ 31h ;音符低位
;低1DO 262 1908 f88c 中1DO 523 0956 fc44 高1DO 1046 0478 fe22
;#1DO# 277 1805 #1DO# 554 0903 #DO# 1109 0451
db 08h,04h,09h,04h,0ah,04h,0bh,04h,0ch,04h,0dh,04h,0eh,04h
db 0fh,04h,10h,04h,11h,04h,12h,04h,13h,04h,14h,04h,15h,06h
db 00h*/
/*乐曲---心太软
db 0ch,02h,0ch,02h,0ah,02h,0dh,04h,0ch,02h,0ah,06h,0ah,04h,09h,02h,08h,02h,08h,04h,08h,02h
db 0fh,02h,0fh,02h,0fh,02h,0fh,02h,0dh,02h,0ch,04h,0ah,02h,0dh,02h,0ch,06h*/
mov yyd,a
lcall delay
nop
ljmp music
delay:
基于单片机控制的数字音乐盒的设计 精品
科信学院单片机系统设计项目(三级项目)设计说明书(2012/2013学年第二学期)题目: _基于单片机控制的数字音乐盒的设计___专业班级:通信工程10级2班学生姓名:王敏轩尹艳迪李莎朱江董宣利学号:100312217 100312218 100312225100312226 100312208 指导教师:马小进、贾少锐、李晓东、付佳设计周数: 2周设计成绩:2013年6月21号目录1 概述 (2)2 系统总体方案及硬件设计 (3)2.1 系统构成 (3)2.1.1 AT89C51单片机简介 (3)2.1.2 LED显示器 (5)2.1.3 键盘 (6)2.1.4 系统复位电路的设计 (7)2.1.5 时钟电路模块 (7)2.2硬件电路端口分配 (8)3 软件设计 (9)3.1 主模块的设计 (9)3.2 外部中断源系统设计 (10)3.3 基本显示模块设计 (11)3.4 系统初始化程序 (11)4 Proteus软件仿真 (11)5课程设计体会 (13)参考文献 (15)附1:源程序代码 (15)附2:系统原理图............................... 错误!未定义书签。
1 概述本设计是基于单片机的数字音乐盒设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。
要求利用I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用LCD显示信息,从而演奏乐曲(最少三首乐曲,每首不少于30秒),开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称),可通过功能键选择乐曲,暂停,播放。
本设计采用4*4键盘,16*2 LCD,七段显示数码管LED。
课设准备中根据具体的要求,查找资料,然后按要求根据已学过的时钟程序编写定时闹钟的程序,依据程序利用proteus软件进行了仿真试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。
单片机课程设计(含程序)——基于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单片机的音乐盒的设计-毕业设计
摘要:随着人类社会的不断繁荣与发展,人们对自身生活品质的要求也变得越来越高,在听觉方面传统的音乐盒能带给人们的更多的只是美好的回忆,而由于单片机具有的体积小、成本低、运算快和功耗小等特点得到了人们越来越广泛的运用。
本设计是一个基于STC89C52系列单片机的音乐盒,依据单片机技术及原理,通过硬件电路的制作以及软件编译,设计制作出一个插卡式音乐盒。
该音乐盒主要是由按键电路、继电器电路、LCD显示电路以及扬声器组成。
使用五个按键控制音乐盒,分别用来控制音乐盒的播放/暂停,复位,切换上一曲/下一曲,本音乐盒利用优盘共存有五首歌曲。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,之后下载进51单片机中使用。
关键词:单片机音乐盒 LCDAbstractWith the continuous development of human society, people's quality of life demands are increasingly high, the traditional music box in the auditory aspectto bring people more good memories, but due to the microcomputer has the advantages of small volume, low cost, low power consumption and fast operation has been more and more extensive use. The design is based on the music box STC89C52 Series MCU, based on single chip microcomputer principle, the hardware circuit and software compilation, designed to produce aplug-in music box. The music box is composed of a key circuit, a relay circuit,LCD display circuit and a loudspeaker. The use of four buttons control themusic boxes, music boxes were used to control the play / pause, switch on a /the next song, the music box using the USB coexist with five songs. The design of programming on the music box and debug source code using KEIL programming software, then download into 51 single chip processor.Keywords: SCM Music Box LCD目次目次 (3)1 引言 (4)1.1 音乐盒的意义 (4)1.2 研究内容 (5)2.1系统总体框架图 (6)2.2音乐盒的设计原理 (6)2.3 单片机芯片概述 (6)3 硬件电路设计 (8)3.1 单片机最小系统原理图 (8)3.1.1 复位电路 (8)3.1.2 晶振电路 (9)3.1.3时钟电路 (9)3.2 LCD显示模块 (9)3.3 继电器模块 (11)3.3.1电磁继电器的工作原理和特性 (11)3.3.2 固态继电器的工作原理和特性 (12)3.3.3 继电器主要产品技术参数 (12)3.4 按键模块 (12)3.5 其它 (13)4 软件设计 (14)4.1 软件总体流程图 (14)4.2播放/暂停子程序 (15)4.3 LCD显示模块软件设计 (17)4.3.1 LCD的初始化函数 (17)4.3.2 LCD与继电器的函数 (17)5 系统实现 (19)5.1 硬件调试 (20)5.1.1 按键控制的实现 (20)5.1.2 LCD显示 (20)5.1.3 其他 (21)总结 (22)致谢................................................ 错误!未定义书签。
基于单片机数字音乐盒的设计
精心整理单片机实物设计题目:单片机音乐盒设计班级:K0312416-17通过个按1.1设计目标................................................................................................第二章软件设计与分析 .......................................................................................2.1软件设计的组成 ....................................................................................2.2各部分软件分析 ....................................................................................2.2.1延时165MS,即十六分音符子函数.............................................2.2.2延时1MS子函数.........................................................................2.2.3定时器0中断子函数.................................................................精心整理2.2.4播放音乐子函数 .........................................................................2.5定时器1中断子函数 .....................................................................2.6按键扫描子函数.............................................................................2.2.7主函数 ........................................................................................2.3总源程序 ................................................................................................ 第三章软件仿真 ...................................................................................................3.仿真图.......................................................................................................3.1总结第一章工作原理1.1设计目标具体要求是:以单片机为核心,设计一个数字音乐盒:利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从2.2各部分软件分析2.2.1延时165MS,即十六分音符子函数//延时165MS,即十六分音符子函数voiddelay1(uintz){uintx,y;for(x=z;x>0;x--)for(y=19000;y>0;y--); }2.2.2延时1MS子函数2.2.4播放音乐子函数//播放音乐子函数voidsong(){uinttemp;ucharaa;//aa是简谱c=0;while(1){if(count2==0){break;else{TR1=0;BEEP=1;//关蜂鸣器}delay1(temp%16);//取数的低4位TR1=0; //唱完一个音停10MSBEEP=1;delay2(10);TR1=1;c++;}TR1=0;BEEP=1;{num1++;if(num1==1){TR1=0;aa=count2;count2=0;}if(num1==2){num1=0;count2=aa;TR1=1;}write_date('l'); write_com(0x80+3); write_date('c'); write_com(0x80+4); write_date('o'); write_com(0x80+5); write_date('m');write_com(0x80+6);write_date('e');write_com(0x80+7);write_date('');write_com(0x80+8);write_date('t');write_com(0x80+9);IT1=1;//下降沿时触发中断EX0=1;//开外部中断0IT0=1;//下降沿时触发中断count2=0;//唱第一首歌LCD1602_init();while(1)//大循环{song();}}2.3总源程序//最后的0是结束标志ucharcodetable1[]={ //千年之恋0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0 x72,0x82,0x94,0xA8,0x08,//前奏0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,//竹林的灯火到过的沙漠0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,//七色的国度不断飘逸风中0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,//有一种神秘灰色0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,//是你在尽头等我0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,//最美丽的感动会值得0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff//结束标?//睾?};ucharcodetable2[]={ //寂寞沙洲冷0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,//自你走后心憔悴0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,//白色油桐风中纷飞0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,//落花不样夜是0x31,0x81,0x81,0x81,0x61,0x91,0x82,//有花儿伴着蝴蝶0x51,0x51,0x51,0x51,0x31,0x61,0x53,//孤雁可以双飞0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26,//夜深人静独徘徊0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0 x52,//当幸福恋人寄来红色分享喜悦0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,//闭上双眼难过头也不敢回0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0 x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0 x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0 x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0 x20,0x20,0x20,ucharcodetable4[]={0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10, 0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0 x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0 x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0 x2B,0x20,0x30,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0 x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0 xff,};//简谱音调对应的定时器初值//适合12的晶振ucharcodecuzhi[]={0xff,0xff,//占位0xFC,0x8E,//中央C调1-70xFC,0xED,0xFD,0x43,{uintx,y;for(x=z;x>0;x--)for(y=19000;y>0;y--);}//延时1MS子函数voiddelay2(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//LCD1602液晶写命令子函数voidwrite_com(ucharcom)delay2(5);//无延时不能正常工作E=0;}//LCD1602液晶初始化子函数voidLCD1602_init()//初始化{delay2(15);//主函数voidmain(){TMOD=0x11;//定时器0工作在方式1 TH1=0;TL1=0;ET1=1;voidt0()interrupt1{num2++;if(num2==5){num2=0;key();}}//定时器1中断子函数voidt1()interrupt3 //用于产生各种音调{TH1=a;TL1=b;write_date('');write_com(0x80+1);write_date('');write_com(0x80+2);write_date('');write_com(0x80+3);write_com(0xc0+8);write_date('');write_com(0xc0+9);write_date('f');write_com(0xc0+10);write_date('l');write_com(0xc0+11);write_date('o');}}voidwb1()interrupt2{TR1=0;if(k2==0){delay2(10);if(k2==0){count2--;c=0;//从头开始唱if(count2==1)}这次设计进一步端了我的学习态度,学会了实事求是,严谨的作风,对自己要严格要求,不能够一知半解,要力求明明白白。
单片机课程设计_基于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单⽚机⾳乐盒程序#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longcode unsigned char gao[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;code unsigned char di[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};uchar data gepu[55]; //必须要指明长度uchar data time[55];uchar a;//中间变量把ram数组的值赋给它,传递给定时器中断//第⼀⾸:⽣⽇歌uchar code gepu1[]={5,0,5,6,5,8,7, 5,0,5,6,5,9,8, 5,0,5,12,10,8,7,6, 11,0,11,10,8,9,8,8};//30uchar code time1[]={2,0,2,4,4,4,6, 2,0,2,4,4,4,6, 2,0,2,4,4,4,4,6, 2,0,2,4,4,4,4,4 };//第⼆⾸:两只⽼虎 //⼤于14是指低⾳uchar code gepu2[]={1,2,3,1, 1,2,3,1, 3,4,5,0, 3,4,5,0, 5,6,5,4,3,1, 5,6,5,4,3,1, 2,19,1,0, 2,19,1,0};//36uchar code time2[]={4,4,4,4, 4,4,4,4, 4,4,4,4, 4,4,4,4, 3,1,3,1,4,4, 3,1,3,1,4,4, 4,4,4,4, 4,4,4,4};////第三⾸:多年以前uchar code gepu3[]={1,0,1,2,3,0,3,4, 5,6,5,3, 5,4,3,2, 4,3,2,1,0, 1,0,1,2,3,0,3,4, 5,6,5,3, 5,4,3,2,3,2,1,0};//41uchar code time3[]={4,0,2,2,4,0,2,2, 4,2,2,8, 4,2,2,8, 4,2,2,8,0, 4,0,2,2,4,0,2,2, 4,2,2,8, 4,2,2,4,2,2,10,1};//第四⾸:⼩步舞曲uchar code gepu4[]={5,1,2,3,4,5,1,0,1, 6,4,5,6,7,8,1,0,1, 4,5,4,3,2,3, 4,3,2,1,2, 3,2,1,21,1};//34uchar code time4[]={4,2,2,2,2,4,4,0,4, 4,2,2,2,2,4,4,0,4, 4,2,2,2,2,4, 2,2,2,2,4, 2,2,2,2,10};//第五⾸:字母歌uchar code gepu5[]={1,0,1,5,0,5,6,0,6,5, 4,0,4,3,0,3,2,0,2,1, 5,0,5,4,3,0,3,2, 5,0,5,4,0,4,3,0,3,2, 1,3,5,6,8,5, 4,0,4,3,0,3,2,0,2,1,0};//55 uchar code time5[]={2,0,2,2,0,2,2,0,2,4, 2,0,2,2,0,2,2,0,2,4, 2,0,2,4,2,0,2,4, 2,0,2,2,0,2,2,0,2,4, 2,2,4,2,2,4, 2,0,2,2,0,2,2,0,2,4,1}; uchar i,s;sbit led1=P3^3;sbit led2=P3^4;sbit led3=P3^5;sbit led4=P3^6;sbit led5=P3^7;sbit buzzer=P1^0;sbit key1=P2^0;//开始停⽌sbit key2=P2^1;//上⼀⾸sbit key3=P2^2;//下⼀⾸void delay(uchar t);void delayms(uchar t);void main(){uchar flag=0;uchar k=5;uchar stop;TMOD=0X01;EA=1;ET0=1;while(1){while(key2==0 || key3==0 || flag==0) {flag=1;if(key3==0){k++;delay(5);if(k>5)k=k%5;}if(key2==0){k--;delay(5);if(k==0)k=5;}switch(k%5){case 0:{P3=0x7f;s=30;for(i=0;i<s;i++){gepu[i]=gepu1[i];time[i]=time1[i];}break;}case 1:{P3=0xbf;s=36;for(i=0;i<s;i++){gepu[i]=gepu2[i];time[i]=time2[i];}break;}case 2:{P3=0xdf;s=41;for(i=0;i<s;i++){gepu[i]=gepu3[i];time[i]=time3[i];}break;}case 3:{P3=0xef;s=34;for(i=0;i<s;i++){gepu[i]=gepu4[i];time[i]=time4[i];}break;}case 4:{s=55;for(i=0;i<s;i++){gepu[i]=gepu5[i];time[i]=time5[i];}break;}}}while(key2!=0 && key3!=0){for(i=0;i<s;i++){TR0=1;a=gepu[i];///////////////////////////P0=(~gepu[i]);////////////////////////////if(time[i]>0)delay(time[i]);elsedelayms(1);if(key1==0){delay(5);stop++;}if(stop%2==0)TR0=1;elseTR0=0;while(stop%2){if(key1==0){delay(5);stop++;}}if(key2==0 || key3==0){TR0=0;break;}}}}}void dingshi0() interrupt 1 using 0 {if(a<15){TH0=gao[a+6];TL0=di[a+6];}else{TH0=gao[a-14-1];TL0=di[a-14-1];}buzzer=0;elsebuzzer=~buzzer;}void delay(uchar t) {uint i;while(t--){for(i = 0; i < 10001; i++); }}void delayms(uchar t) {uchar t1; uint t2;for(t1=0;t1<t;t1++){for(t2=0;t2<800;t2++) {;}}}。
数字音乐盒
单片机课程设计-数字音乐盒作者:杜斐斐/王薄单片机课程设计实验报告课程设计题目:数字音乐盒课程设计要求:1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)2.采用LCD显示信息3.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)4.可通过功能键选择乐曲,暂停,播放。
5.选作内容:显示乐曲播放时间或剩余时间硬件电路:本设计中用到了89C51单片机,4*4键盘,蜂鸣器,16*2 LCD,七段显示数码管LED。
原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
也可在LED显示歌曲号。
(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。
(2)用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a,b,c,d,e,f,g,用P2.0~P2.7为数码管位选信号。
(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0~P0.7作为LCD的D0~D7的控制信号。
(4)用P3.7口控制蜂鸣器。
(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
电路图:【试验时请仔细阅读后文说明!此图仅为我站制作,并不代表原作者意愿;若您制作成功,望在网络推广。
】实验控制流程图如下:键盘如下:实验程序如下:RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2;******************************************** L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;******************************************* org 0000hljmp mainORG 000BHLJMP TT0ORG 001BHLJMP T1INTorg 1000hmain:;-----------------------;液晶初始化MOV SP,#70HMOV P0,#01H ;清屏CALL ENABLEMOV P0,#38H ;8位,2行显示lCALL ENABLEMOV P0,#0FH ;屏显on,光标on,闪烁on lCALL ENABLEMOV P0,#06H ;计数地址加1,显示幕on lCALL ENABLE;-------------------------------内存初始化lcall initil;-------------------------------key1:lcall keylcall moddljmp key1;---------------------键盘扫描key:nopnoplcall ksjnz k1 ;有按键转到K1lcall kaijilcall SOPxn:ljmp keyk1:lcall moddlcall moddlcall ksjnz k2ljmp keyk2:mov R2,#0feh ;读键盘mov R4,#00hk3:mov A,R2mov P1,Amov A,P1JB ACC.4,L1 ;为1跳转,第一行无按键mov a,#00hljmp lkL1:jb acc.5,L2mov a,#04hljmp lkL2:jb acc.6,L3mov a,#08hljmp lkL3:jb acc.7,next1mov a,#0ch;------------------------------------------------------- lk:add a,R4push acck4:lcall delay1 ;若同时有其他按键,则等待lcall ksjnz k4;-------------------------------------------------------- mov r3,#07hclr amov r0,#30hmov r1,#31hmm1:mov a,@r1mov @r0,ainc r0inc r1djnz r3,mm1pop accmov @r0,aRET;------------------------------------------------------ next1:inc R4 ;------列扫描mov a,R2JNB acc.3,n2ljmp n1n2:ljmp keyn1:rl amov R2,aljmp k3;----------------------------------------------ks:mov a,#0f0h ;判断P1口mov P1,anopmov a,P1cpl aanl a,#0f0hRET;-------------------------------------------------- DELAY1:SETB RS0dl:mov R5,#0ahdl2:mov R6,#63dl3:nopnopdjnz R6,dl3djnz R5,dl2CLR RS0RET;--------------------------------------------------- ;30H-37H初值为零;---------------------------------------------------- initil:mov r3,#08hmov r0,#30hm1:mov @r0,#00hinc r0djnz r3,m1RET;---------------------------------------------------- ;显示;--------------------------------------------------- modd:MOV P0,#8EHlCALL ENABLEmov A,37Hmov DPTR,#TABLE3MOVC A,@A+DPTRlCALL WRITE2RET;-------------------------------------------------- ;开机提示字;-------------------------------------------------mov a,37hcjne a,#0fh,DFFMOV P0,#80H ;设光标地址lCALL ENABLEMOV DPTR,#TABLE1;写数据lCALL WRITE1DFF:RET;---------------------------------------------- ;按键值播放歌曲;---------------------------------------------- SOP:mov a,37hcjne a,#01h,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2lcall MAIN0A11:CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20LCALL INITILE2lcall MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30LCALL INITILE2lcall MAIN0A33:CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE40MOV 53H,#LOW TABLE40LCALL INITILE2lcall MAIN0A44:CJNE A,#05H,A55LCALL MODDMOV 52H,#HIGH TABLE50MOV 53H,#LOW TABLE50LCALL INITILE2lcall MAIN0A55:CJNE A,#06H,A66LCALL MODDMOV 52H,#HIGH TABLE60MOV 53H,#LOW TABLE60LCALL INITILE2lcall MAIN0A66:CJNE A,#07H,A77LCALL MODDMOV 52H,#HIGH TABLE70MOV 53H,#LOW TABLE70LCALL INITILE2lcall MAIN0A77:CJNE A,#08H,A88LCALL MODDMOV 52H,#HIGH TABLE80MOV 53H,#LOW TABLE80LCALL INITILE2lcall MAIN0A88:CJNE A,#09H,A99LCALL MODDMOV 52H,#HIGH TABLE90MOV 53H,#LOW TABLE90LCALL INITILE2lcall MAIN0A99:CJNE A,#0AH,AAALCALL MODDMOV 52H,#HIGH TABLE100MOV 53H,#LOW TABLE100LCALL INITILE2lcall MAIN0AAA:RET;****************************************** INITILE2:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HMOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0DH ;显示冒号CALL ENABLECALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0CDH ;显示冒号CALL ENABLECALL WRITE2MOV A,SECMOV B,#10DIV ABADD A,#30HMOV P0,#0CEH ;显示秒十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位CALL ENABLECALL WRITE2MOV P0,#0C0H ;设光标地址CALL ENABLEMOV DPTR,#TABLE2;写数据CALL WRITE1RET;*********************************************写指令ENABLE:CLR RSCLR RWCLR ELCALL DELAYSETB ERET;**********************************************写数据WRITE1:MOV R1,#00HA1:MOV A,R1MOVC A,@A+DPTRCALL WRITE2INC R1CJNE A,#0FEH,A1 ;未到字符串末尾继续RETWRITE2:MOV P0,ASETB RSCLR RWCLR ECALL DELAYSETB ERET;********************************************** DELAY:MOV R4,#05D1:MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET;----------------------------------------------TAB:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0a1h,86h,8ehTAB1:db 89h,86h,0c7h,0c7h,0c0hTAB2:db 0c6h,88h,0c0hTABLE1:DBWELCOM HERE,0FEHTABLE2:DBDFF WB ,0FEHTABLE4:DB CAU,0FEHTABLE3:DB 30H,31H,32H,33hDB 34H,35H,36H,37HDB 38h,39H,41H,42HDB 43H,44H,45H,46H;-------------------------------------------------------------------- ;播放歌曲程序;-------------------------------------------------------------------- MAIN0:MOV TMOD,#11HMOV IE,#8aH;MOV TH1,#3cH;MOV TL1,#0b0Hlcall ksjnz TTM12MOV 40H,#00H;---------------------------------------------------------NEXT20:MOV A,40HMOV DPH,52HMOV DPL,53HMOVC A,@A+DPTRMOV R2,AJZ STOPANL A,#0FHMOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1;---------------------------------------------------------- SING:DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,@A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,@A+DPTRMOV TL0,AMOV 20H,ASETB TR0SETB TR1W1:LCALL DELAY30INC 40HLCALL KS ;------有键跳出JNZ STOPLJMP NEXT20;----------------------------------------------------------- STOP:CLR TR0CLR TR1LJMP MAIN0;---------------------------------------------------------- TTM12:LCALL K2MOV A,37HCJNE A,#0EH,TTM13CLR TR1LCALL DELAY1TTM120:LCALL KSLCALL DELAY1JZ TTM120LCALL K2MOV A,37HCJNE A,#0EH,TTM120SETB TR1LJMP NEXT20TTM13:CJNE A,#0CH,TTM14MOV A,52HINC AMOV 52H,AINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM14:CJNE A,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AMOV A,36HDEC AMOV 37H,A;------------------------------------------------------TTM2:RET;*************************************************** ;定时器中断子程序0;*************************************************** TT0:PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI;*************************************************** ;定时器中断子程序1;*************************************************** T1INT:MOV TH1, #3cHMOV TL1, #0b0HDJNZ L50MS,X4MOV L50MS,#20;****************---每秒种时钟刷新秒显示一次SECSET:MOV A,SECDIV ABADD A,#30HMOV P0,#0CEH ;显示秒十位lCALL ENABLElCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位lCALL ENABLElCALL WRITE2MOV A,SECINC AMOV SEC,AXRL A,#60X4:JNZ OUTMINSET:MOV SEC,#00H;*************************************每分钟刷新分显示一次MOV A,MININC AMOV MIN,AMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位lCALL ENABLElCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位lCALL ENABLElCALL WRITE2MOV A,MINMOV B,#3MUL ABMOV B,#100DIV ABMOV R2,AMOV A,#10XCH A,BDIV ABMOV A,MINJNZ OUTHOUSET:MOV MIN,#00H;**************************************每小时刷新小时显示一次MOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,HOUINC AMOV HOU,AXRL A,#10JNZ OUTSJMP OVERFLOWOUT:RETI;*************************************溢出处理OVERFLOW:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HRETI;--------------------------------------------------------------------DELAY30:MOV R7,#2W2:MOV R4,#125W3:MOV R3,#248DJNZ R3,$DJNZ R4,W3DJNZ R7,W2DJNZ R1,DELAY30RET;--------------------------------------------------------------------TABLE00:DW 64580,64684,64777,64820DW 64898,64968,65030,64260DW 64400,64524,65058,63835,64021;-------------------------------------------------------------------;第一首《精忠报国》;--------------------------------------------------------------------TABLE10:DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H DB 52H,62H,7FH,74H,04H,58H,6FHDB 00;--------------------------------------------------------------------;第二首《月亮代表我的心》;--------------------------------------------------------------------TABLE20:DB 02H,82HDB 16H,32H,54H,02H,52HDB 0A6H,32H,54H,02H,52HDB 64H,74H,0B6H,64HDB 52H,5CH,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB 26H,12H,94H,22H,32HDB 2CHDB 32H,52HDB 36H,22H,14H,54HDB 0ACH,92H,0A2HDB 96H,0A2H,96H,82HDB 3CH,54HDB 36H,22H,14H,54HDB 0ACH,92H,0A2HDB 16H,12H,14H,22H,32HDB 2CH,02H,82HDB 16H,32H,56H,12HDB 0A6H,32H,56H,52HDB 66H,72H,0B6H,62HDB 62H,52H,58H,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB 26H,92H,0A4H,12H,22HDB 1CHDB 00;------------------------------------------------------------------- ;第三首《看我七十二变》;------------------------------------------------------------------- TABLE30:DB 0d4H,84H,94H,82H,92HDB 12H,22H,82H,92H,02H,92H,82H,0d2HDB 82H,92H,14H,84H,02H,0d1H,0d1HDB 0c2H,0d2H,84H,0d2H,0d2H,82H,82HDB 84H,82H,82H,94H,82H,0d2HDB 82H,82H,82H,92H,02H,82H,82H,0d2HDB 0c4H,84H,0d4H,92H,0d2HDB 82H,0d2H,82H,92H,98HDB 04H,94H,88HDB 04H,94H,88HDB 04H,94H,88HDB 04H,94H,88H,04HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,22HDB 54H,44H,34H,12H,22HDB 34H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,22HDB 54H,44H,32H,22H,12H,92HDB 00;-------------------------------------------------------------------- ;第四首《同一首歌》;-------------------------------------------------------------------- TABLE40:DB 88h,14h,24h,36H,42H,34H,14H,28H,14H,94HDB 1fH,88H,14H,24H,34H,32H,42H,54H,14HDB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H DB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3fHDB 46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2H DB 92H,84H,94H,1fH,0b8H,68H,46H,52H,68HDB 74H,72H,72H,74H,62H,52H,3fH,0b8H,68HDB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2fHDB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12HDB 94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fHDB 00;--------------------------------------------------------------------;第五首《大海》;--------------------------------------------------------------------TABLE50:DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1cHDB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52HDB 62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22HDB12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,14H,0b2H,62H,52H,54H,62H,54H,32H,52 HDB 66H,0b2H,0b4H,62H,52H,5cH,32H,52H,62H,64H,62H,64H,0b2H,62H,52H,54HDB 62H,54H,32H,22H,12H,14H,12H,14H,54H,3cH,32H,22H,12H,14H,12H,14H,22H,32HDB 52H,54H,32H,54H,32H,52H,6fH,04H,02H,92H,32H,24H,12H,1fHDB 00;--------------------------------------------------------------------;第六首《两只蝴蝶》;--------------------------------------------------------------------TABLE60:DB32H,22H,38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,92H,88H,04H, 32H,22HDB38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,21H,92H,12H,28H,04H,32H,22H DB 38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,91H,11H,88HDB 04H,32H,52H,58H,02H,52H,62H,52H,38H,04H,22H,22H,24H,22H,32H,22H,12H,92H,92H DB 12H,12H,1cH,08H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22HDB38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4 H,72HDB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,32H,22H,32HDB 58H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22HDB38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4 H,72HDB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,84H,92H,1cHDB 00;--------------------------------------------------------------------;第七首<<世上只有妈妈好>>;--------------------------------------------------------------------TABLE70:DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 00;--------------------------------------------------------------------;第八首歌《彩云追月》;--------------------------------------------------------------------TABLE80:DB86H,92H,12H,22H,32H,52H,68H,63H,52H,34H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H DB62H,0B2H,0B2H,62H,52H,32H,52H,52H,51H,61H,51H,31H,34H,52H,62H,74H,32H,52H,52H,3 2H,21H,31H,21H,11H,24HDB32H,52H,52H,32H,22H,12H,24H,32H,52H,52H,32H,62H,52H,61H,51H,31H,21H,21H,31H,21H, 11H,1CHDB21H,31H,22H,23H,31H,21H,18H,02H,0B2H,0BCH,0B4H,72H,61H,51H,72H,61H,71H,61H,51H ,61H,71H,61H,6FHDB86H,94H,12H,22H,32H,52H,64H,62H,51H,31H,52H,21H,31H,21H,33H,62H,0B2H,0B2H,62H,5 1H,61H,51H,31H,54HDB62H,0B2H,72H,61H,51H,51H,61H,51H,31H,54H,61H,0B2H,72H,61H,51H,51H,61H,51H,31H,3 2H,21H,11H,32H,51H,61H,54HDB02H,32H,24H,32H,52H,52H,32H,22H,31H,21H,11H,24H,32H,52H,62H,0B2H,72H,61H,51H,61 H,51H,31H,32H,52H,52H,32H,62HDB51H,31H,31H,21H,11H,91H,23H,31H,21H,1CH,12H,24H,32H,62H,51H,31H,34H,0B4H,72H,61 H,51H,63H,71H,64HDB0B2H,54H,72H,62H,71H,61H,54H,61H,51H,31H,21H,34H,73H,61H,54H,22H,32H,52H,22H,36 H,52H,62H,61H,31H,32H,21H,11H,21H,11H,91H,81HDB94H,52H,62H,52H,42H,32H,22H,32H,52H,0B4H,74H,64H,52H,61H,51H,41H,5CH,02H,52H,0B 4H,74H,63H,51H,61H,51H,31H,21H;--------------------------------------------------------------------;第九首<<十年>>;--------------------------------------------------------------------TABLE90:DB02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H,83H,91H,0A2H,91H,81H ,94H,11H,0A1H,91H,0A1H,98H,03H,81H,0A1H,0A1H,91H,0A1HDB98H,04H,02H,11H,21H,32H,32H,22H,32H,21H,31H,51H,11H,13H,31H,22H,22H,21H,11H,0A1 H,11H,13H,11H,11H,0A1H,91H,0A1HDB11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08H,03H,81H,32H,21H,11H,2 2H,31H,21H,21H,83HDB01H,11H,91H,0A1H,11H,61H,51H,11H,34H,01H,31H,21H,31H,48H,23H,31H,32H,42H,38H,03 H,11H,21H,52H,31HDB33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H ,91H,92H,91H,11H,0A1H,91HDB0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31H,42H,51H,31H,31H,22H,11H,2 1H,52H,31H,33H,31H,31H,41HDB51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H, 0A1H,91HDB0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31H,63H,51H,32H,11H,21H,26H,11H,0A 1H,18HDB 00;--------------------------------------------------------------------;第十首<<你的爱给了谁>>;--------------------------------------------------------------------TABLE100:DB02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0 A1H,11H,0A1HDB9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21 H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92HDB02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,7 6H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 72H,62H,68H,02H,61H,51H,66H,62H,58H,0CH,02H,51H,41H,5FH02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0 A1H,11H,0A1HDB9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21 H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92HDB02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,7 6H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 66H,62H,54H,0B2H,71H,61H,6CHDB 00END按键功能说明:1~A:十首歌曲C:上一首歌曲D:下一首歌曲E:歌曲暂停F:开机画面程序调试中出现的问题及解决的办法:1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
基于AT89C51单片机音乐盒设计(含程序设计)(word文档良心出品)
1前 言乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。
实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA 集成度的提高,价格下降,EDA 设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。
如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。
使用现今的EDA 软件工具来应付这些问题,并不是一件简单的事情。
FPGA 预装了很多已构造好的参数化库单元LPM 器件。
通过EDA 软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
本文介绍在EDA 开发平台上利用单片机及汇编语言设计音乐硬件演奏电路,并定制单片机存储音乐数据,以十首乐曲为例,将音乐数据存储到单片机,就达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改单片机所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新连接到程序中就可以实现其它乐曲的演奏。
目录摘要 (4)第1章概述 (5)第2章音乐盒的发音原理 (6)2.1 播放音乐的原理 (6)2.2 音符频率的产生 (6)2.3 节拍频率的产生 (8)第3章硬件电路设计 (9)3.1 硬件电路 (9)3.2 整体硬件电路 (10)3.3 原理说明 (11)22.4 键盘按键 (11)第4章软件设计 (12)4.1 程序设计流程 (12)4.2 设计源程序代码 (12)第5章仿真及调试 (13)5.1 调试 (13)5.2 仿真 (13)5.3 程序调试中出现的问题及解决的办法 (15)第6章设计小结及建议 (17)致谢 (18)参考文献 (19)附录一元器件清单 (20)附录二部分源程序代码 (21)3基于AT89C51单片机的音乐盒的设计【摘要】:随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
单片机课程设计数字音乐盒的设计
数字音乐盒的设计摘要本设计采用了扬声器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。
现选用AT89C51 单片机。
用PROTEUS 单片机仿真软件仿真。
利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
通过单片机P1 口控制,实现功能键盘控制;功能键盘采用按键开关,通过单片机P2 口控制,实现歌曲播放顺序的调换和暂停播放功能;扬声器由单片机的P3 口控制,实现歌曲播放;主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有液晶屏显示当前播放歌曲的序号,扬声器播放出音乐。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。
本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。
关键词:AT89C51 单片机,方波,音调目录1 绪论 (1)1.1设计简述 (1)1.2设计目的 (1)1.3主要问题 (1)1.4 技术指标 (1)2 设计方案简述 (2)2.1 设计功能要求 (2)2.2 总体设计原理 (2)2.3 总体设计框图 (2)3 硬件电路设计 (3)3.1 硬件电路 (3)3.2 时钟复位电路 (3)3.3 按键输入电路 (4)3.4 输出显示电路 (4)3.5 整体硬件电路 (5)3.6 原理说明 (6)3.7 键盘按键 (6)4 软件设计 (7)4.1 设计源程序代码(见附录) (7)4.2程序设计流程图 (7)5 仿真 (8)6 设计结果及分析 (10)总结 (11)致谢 (12)参考文献 (13)附录 (14)1 绪论1.1设计简述本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。
与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。
电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。
音乐盒设计(单片机课程设计
音乐盒设计(单片机课程设计数字音乐盒的设计目录摘要 I II 第一章设计方案的对比 1 第二章总体方案设计 2原理简介 2方案设计思想 2 第三章方案实现 3、音频脉冲的产生 3 .音乐节拍的生成 4建立音乐的步骤 4 第四章硬件设计 5硬件电路 5、89C51的工作特性 5 原理说明 6 电路各模块说明 6键盘系统 6 放大电路 7 时钟电路 8 复位电路 8 显示电路 9 第五章软件设计10主模块的设计 10 第六章仿真、安装和调试 12 总结 13 致谢 14 参考文献 14 附录 15附录一:音乐程序 15 附录二:基于单片机的数字音乐盒总电路图 32数字音乐盒的设计摘要本设计是基于单片机的数字音乐盒设计由单片机89C51芯片和显示器为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒要求利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用显示信息,从而演奏乐曲,开机时有英文欢迎提示字符,播放时显示歌曲序号,可通过功能键选择乐曲,暂停,播放本设计采用4*4键盘,用99来画系统硬件图,采用汇编语言进行编程,编程后利用C51来进行编译,再生成的文件装入芯片中,采用软件来仿真,检验功能得以正常实现该音乐盒的设计可以通过按键选择不同的曲目,播放和暂停,并通过显示歌曲号及播放时间本设计键盘采用动态扫描方式每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音同时启动定时器T1,计算音乐的播放的时间关键词:数字音乐盒 89C51 显示器软件 4*4键盘动态扫描 C5I数字音乐盒的设计- - 89C51 - I/O a ( 3 30 )4*4 99 - - a pl-ayT0a T1: 89C51 4*4 C51II数字音乐盒的设计第一章设计方案的对比方案一:本设计以89C51为核心,配合键盘系统,放大电路,时钟电路和数码管显示电路实现音乐的演奏音乐盒设计采用独立的键盘做为音符的输入以89C51为核心本设计中用到了89C51单片机,4*4矩阵式键盘,蜂鸣器,14引脚的,可以通过以下原理框图来实现该音乐盒的设计图系统结构框图时钟电路单片机89C51琴键电路|放大电路显示电路复位电路方案二:该方案以89S52单片机为核心,主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分数码管采用共阳极数码管,通过单片机P1口控制,实现歌曲序号的显示;功能键盘采用1*8键盘按键开关,通过单片机P3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的P2口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效综上所述:由于方案一的琴键输入是通过独立式键盘来完成的这样便于控制且直观且本方案是采用我们所熟知的单片机类型和显示电路,便于我们理解而方案二中其他电路部分与方案一相差不大,但系统实现比较困难且主控芯片采用的是我们少用的89S51,所以我们选择方案一1数字音乐盒的设计第二章总体方案设计原理简介当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲同时启动定时器T1,显示乐曲播放的时间,并驱动显示歌曲号方案设计思想(1)要产生音频脉冲,只要算出某一音频的周期(1/音频)然后将此周期除以2即为半周期的时间利用定时器计时这个半周期时间每当计时到后就将输出脉冲的I/O反相然后重复计时此半周期时间再对I/O口反相就可在I/O脚上得到此频率的脉冲(2)利用的内部定时器使其工作在计数器模式1下改变记数值TH0及TL0以产生不同频率的方法例如频率为HZ其周期T=1/=微秒因此只要令计数器定时/1=在每记数9次时将I/O口反相就可得到中音D0(HZ)记数脉冲值与频率的关系公式如下: N=Fi/2/Fr N:记数值Fi:内部计时一次为1微秒.故其频率为1 Fr;要产生的频率 (3):起记数值的求法如下: T=-N=-Fi/2/Fr例如:设K=,F==Fi=1,求低音D0,高音的D0的记数值T=-N=-Fi/2/Fr=-/2/Fr=-/Fr低音D0的T=-/=中音D0的T=-/=低音D0的T=-/=2数字音乐盒的设计第三章方案实现、音频脉冲的产生对于音乐盒而言发出悦耳的音乐是其最主要的功能,那么对于使用单片机来制作出来的音乐盒怎么实现音符的发声呢?通过查看资料我们知道音符的发音主要靠不同的音频脉冲利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制引脚的输出音乐只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲具体做法如下所示:例如:中音1的音频=HZ周期T=1/s=s 定时器/计数器0的定时时间为:T/2=/2s=s定时器s的计数值=定时时间/机器周期=s/1s=(时钟频率=12)装入T0计数器初值为-=将装入T0寄存器中,启动T0工作后,每计数次时将产生溢出中断,进入中断服务时,每次对引脚的输出值进行取反,就可得到中音的音符音频将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0TL0以产生不同的频率下表3-1是C调各音符频率与计数初值T的对照表:3数字音乐盒的设计表3-1 C调各音符频率与计数初值T的对照表频率/音符低1 高1 中2RE 低3M 高3M 中4FA 低5 高5 中6LA 低7SI 高7SI初值(s)// /// /// / / /音符中1 低2RE 高2RE频率/初值(s)// /中3M 低4FA 高4FA// /中5 低6LA 高6LA 中7SI// / /.音乐节拍的生成要唱出一首歌,只产生出音频脉冲还不够,还要考虑节拍定义:每个音符占用一个字节,字节的高4位代表音符的高低,低4位表示该音符的节拍,如果一拍为秒,则1/4拍是秒,只要设定延迟时间就可获得节拍的时间我们也可以设1/4拍为1个则1拍应该是4个,只要求得1/4拍的时间,其余的节拍就是它的倍数表3-2节拍数节拍码节拍数节拍码1/4节拍1 1又1/2拍62/4节拍2 2拍 83/4节拍3 2又1/2拍A1拍 4 3拍 C1又1/4拍5 3又3/4拍F建立音乐的步骤先把谱的音符找出,然后由上表建立时间常数初值T的顺序表,标号为4数字音乐盒的设计1建立音符和节拍表,标号为,将构成发音符的计数值放在其中表的结构为:简谱码为高4位,节拍码为低4位,在唱歌程序中对每一个有节拍的音符能通过设计共同生成音符节拍码,本程序的音符节拍码表见表3-2第四章硬件设计硬件电路本设计中用到了89C51单片机,其引脚图如右图4-1-1所示,矩阵式键盘模块,蜂鸣器,16*2 ,扬声器、数码管显示器等图4-1-9C51引脚图、89C51的工作特性•内含4KB的存储器檫写次数次;•内含字节的;5数字音乐盒的设计•具有32根可编程I/O线;•具有2个16位编程定时器•具有6个中断源,5个中断矢量,2级优先权的中断结构;•具有1个全双工的可编程串行通信接口;•具有1个数据指针;•具有可编程3级程序锁定位;•89C51的工作电源为5V且典型值为5V;•89C51最高工作频率为24;•89C51的编程频率为3~24,编程启动电流和启动电压分别为1mA、5或12V原理说明当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲同时启动定时器T1显示歌曲号硬件电路中用、1分别接S1、S2作为上、下一曲的功能键用控制七段码abcdef 用口控制喇叭电路为12晶振频率工作,起振电路中C1C2均为30pf电路各模块说明键盘系统键盘模块采用4*4按键模式,接在单片机的P1口上键盘系统的链接电路图如图4-3-1所示:当用手按下一个键时,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况这就是抖动抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms很容易想到,抖动问题不解决就会引起对闭合键的识别用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码具体编码如下所示:6数字音乐盒的设计: TR0 ;关闭上一次定时,进入下一次按键判断#01H IE #82H A P130H A ;保存键盘状态值D10MS ;延迟10ms消除抖动A P1 ;再读键盘状态A 30H ;两次结果不同,是抖动引起,转图4-3-1 键盘模块电路图放大电路放大电路的分析如下所示,其电路图如图4-3-2所示:此部分的放大电路简单容易实现可以采用一个小功率型硅管,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定分压电阻分别选择1K和蜂鸣器一端接+5V电压,一端接晶体管的发射极由输出预定的方波,加到晶体管进行放大,再输出到嗡宁器,很好的实现了频率、声音的转换7数字音乐盒的设计图4-3-2 放大电路模块电路图时钟电路此系统的时钟电路设计是采用内部方式,即是利用芯片内部的振荡电路-51内部有一个用于构成振荡器的高增益反相放大器以此系统电路采用12的晶振,起振电路中C1C2均为30pf时钟电路模块电路图如图4-3-3所示图4-3-3 晶振电路模块电路图复位电路51单片机的引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期以上一般有两种复位方式:上电复位和手动复位复位电路图如图4-3-4所示8数字音乐盒的设计图4-3-4 复位电路模块电路图上电复位上电时,利用电容C1的充电延时特性,一开始,+5V电压全部降落在电阻R6上,高电平输入脚,单片机复位操作,当电容C1充电接近结束时,电阻R6电压趋于0,脚输入低电平,结束复位操作手动复位在系统出现操作错误或程序运行出错时使用在单片机系统运行过程中,按下复位键K0,高电平输入脚,单片机被强制执行复位操作,系统可退出错误运行状态,恢复正常工作显示电路显示电路采用模块,显示模块采用14引脚的 LML,它有八个数据端口,三个控制口当控制口R/W为低电平时,单片机向写入指令,当其为高电平时,单片机读取的信息单片机的~作为的RSR/WE的控制信号用~作为的D0~D7的控制信号用来显示播放歌曲时间和歌曲号当按下开机键时,会在上显示英文欢迎字符,按其他键可显示歌曲号和播放时间显示模块电路图分别如图4-3-5所示9数字音乐盒的设计图4-3-5 显示模块电路图第五章软件设计主模块的设计主模块是系统软件的主框架结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建它的合理与否关系到程序最终的功能的多少和性能的好坏本程序可以实现课程设计的基本要求,并可以通过按键播放多首歌曲,主程序流程图如下所示,其中显示子程序的流程图如图5-1-2所示10数字音乐盒的设计图5-1-1 数字音乐盒主程序流程图图5-1-2 显示子程序流程图11数字音乐盒的设计第六章仿真、安装和调试按照上面设计的电路在软件内画图打开单片机软件开发系统选择89c51单片机在其中编写程序运行生成一个后缀名为的文件然后将该文件下载到中的89c51单片机中进行仿真观察实验现象仿真能实现播放音乐,按键选择曲目,暂停,播放功能仿真成功后,安装好实验板然后将音乐程序下载到电路板内观察结果能实现播放音乐,按键换曲等功能程序调试中出现的问题及解决的办法:有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的返回指令一定要按正确格式书写或在两行指令间最好不要留空行程序中的跳转指令的运用很重要,为保险起见,都用我们就遇到过跳转指令用错程序无法正常运行的现象当用指令时,跳转范围比较少,这时要用一个标号中转编程时要注意,在程序开始时,要写入各定时器中断的入口地址编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图计时正常显示的解决办法:a 两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计,由于定时中断过于频繁,使负载过大,导致音乐不能正常播放,时间不能正常显示解决办法:将定时器1设定在工作方式1,16位计数,计50ms效果有很大改观但还有问题b 当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,显示和音乐播放都会好一些c 另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,12数字音乐盒的设计中断对歌曲播放影响减弱,但音乐效果变差改进方案:若采用可以定时时间更长的单片机,可以避免所有问题图6-1-1 仿真图总结这学期我们已接触了单片机的课,有了一定的基础知识,这次的单片机课程设计使我有了实践和提高能力的机会,让我受益良多在此次单片机的课程设计中,我不但对单片机的基础知识掌握的更牢固,而且对其硬件和软件方面有了更深一层的认识在做数字音乐盒的课程设计时,我13数字音乐盒的设计掌握了89C51单片机的内部振荡方式及振荡频率和单片机的复位电路形式此次设计的软件编程采用的是我们所学的汇编语言,通过对数字音乐盒的编程,我更熟悉了键盘扫描和动态显示的编程以及定时计数器和中断的编程巩固了对89C51的内部结构和接口扩展的知识本次设计中,我用到了99画图软件, C51编程软件和仿真软件以前虽然对99有一定的认识,能运用其画图,不缺不熟练,这次设计是我对其的熟练程度提高了不少在大三上学期我自学过一点 C51软件,但并不会用,更不知道怎样将其结合起来使用在做数字音乐盒的仿真时,通过向同学青椒和查找资料,我能够运用它来画图,并和 C51结合起来进行仿真,更有幸的是,仿真实现了这次课程设计,让我收获到了成功的喜悦,学会了做事严谨的态度希望下次还有这样学习的机会,并且希望下次能做的更好致谢这次基于单片机的数字音乐盒设计得以完成,首先要感谢不畏辛辞地知道我们的王南兰老师,通过王老师的指导,是我增涨了单片机的知识,也使这次课程设计得以顺利完成其次,还要感谢我的同学,在这次课程设计中,遇到了许多的困难,是通过询问他们才解决的,所以要感谢他们的赐教参考文献[1] 许珉单片机原理及应用[M]北京:中国电力出版社 [2] 三恒星科技-51单片机原理与应用实例[M] 北京:电子工业出版社,[3] 王为青,程国钢单片机 Cx51应用开发技术[M] 北京:人民邮电出版社[4] 电子电路大全[M]北京:计量出版社,[5] 阎石数字电子技术基础[M]北京:高等教育出版社,,第4版[6] 邓元庆数字电路与逻辑设计[M]北京:电子工业出版社, [7] 高锋,单片微型计算机原理与接口技术科学出版社XX年14数字音乐盒的设计[8] 李传军单片机原理及应用河南科学技术出版社XX年[9] 杨志忠数字电子技术高等教育出版社[M]XX年 [10] 张友德单片微型机原理应用与实验上海复旦大学出版社, [11] 《融会贯通 99电路设计》弘道工作室北京人民交通出版设,[12] 《单片机原理及接口技术实验》朱定华北京北方交通大学出版社附录一:音乐程序RS RW E;******************** L50MS 60H L1MS 61H LMS 62H 65H 64H 63H;********************* H BH TT0 BH T1 H : 液晶初始化SP#70H P0#01H ;清屏附录15数字音乐盒的设计P0#38H ;8位,2行显示P0#0FH ;屏显,光标闪烁P0#06H ;计数地址加1,显示幕内存初始化 1:1键盘扫描 : KSK1 有按键转到K1 XN: K1:KS K2 K2:R2#0 ;读键盘 R4#00H K3: AR2 P1A AP116数字音乐盒的设计JB L1为1跳转,第一行无按键 A#00H LK L1:JB L2 A#04H LK L2:JB L3 A#08H LK L3:JB 1 A#0CH LK: AR4 K4:1 KS K4R3#07H A R0#30H R1#31H MM1: AR1 R0A R0 R1 R3MM1 R0A ;若同时有其他按键,则等待17数字音乐盒的设计1:R4 ;列扫描 AR2 N2 N1 N2: N1: RL A R2A K3 KS:A#0F0H P1A AP1 A A#0F0H 1: RS0 DL:R5#0AH DL2: R6#63 DL3: R6DL3 R5DL2 RS0;判断P1口 18数字音乐盒的设计30H-37H初值为零 : R3#08H R0#30H M1:R0#00H R0R3M1 : P0#8EHA37H#3 AA+ 2 开机提示字 : A37H A#0FH P0#80H ;设光标地址#1;写数据 1 :按键值播放歌曲 : A37H A#01HA1152H# 10 53H# 10 219数字音乐盒的设计0 A11:A#02HA2252H# 20 53H# 20 2 0 A22:A#03HA3352H# 30 53H# 30 2 0 A33:A#04HA44 2 0 A44:A#05HA55 2 0 A55:A#06HA66 2 0 A66:A#07HA77 220数字音乐盒的设计0 A77:A#08HA88 2 0 A88:90 A#09HA99 2 0 A99:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。
用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址即可.1.1设计方案设计一个基于STC89C51系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。
蜂鸣器发出某个音调,与之相对应的LED亮起。
使用两个按键,一个用来切换歌曲,另一个切换八路LED的变化花样。
1.2研究内容1)电路有两种工作模式:演奏音乐模式和花样灯模式。
演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变化。
花样灯模式:八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声。
2)按下按键1进入花样灯模式,再按切换LED花样,共四种花样。
3)按下按键2进入演奏音乐模式,再按切换歌曲,共两首歌曲。
1.3音乐盒的功能结构图音乐盒的功能结构如图2.2所示。
Key1负责切换LED显示花样,显示花样共4种。
Key2负责切换播放歌曲,播放歌曲共2首,分别是千年之恋和寂寞沙洲冷。
图1.1 音乐盒功能结构图2硬件设计2.1 总体设计框图图2.1总体设计框图2.2各部分硬件设计及其原理2.2.1 STC89C51简介STC89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。
STC89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的STC89C51是一种高效微控制器,STC89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图3.2所示。
图2.2 STC89C51系列单片机2.2.2 LED显示电路设计与原理LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,若为低电平,可使LED亮起。
发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、灭。
2.2.3 时钟振荡电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、±10PF,而如果使用陶起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF±10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况瓷振荡器建议选择40PF下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
振荡器电路图如下:图2.3 单片机内部、外部振荡电路2.3 硬件电路图及功能总体硬件电路实现功能如下,如图2.4所示1)电路中用P3.2、P3.3分别控制按键Key1和Key2。
2)P1.0~P1.7控制LED 。
3)P2.3控制蜂鸣器。
4)电路为12MHZ 晶振频率工作,起振电路中C1、C2均为30PF 。
XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D1LED-REDD2LED-REDD3LED-RED D4LED-RED D5LED-RED D6LED-RED D7LED-RED 234567891RP1500D8LED-REDVCCR110kX1CRYSTALC130PFC230PF LS1SPEAKERVCCGNDQ1NPNR21k图2.4 硬件电路图3软件设计在本程序中设置了两个标志——count1和count2,分别初始化为1和0。
按键1使得count2在1~4之间切换,按键2使得count1在1和2之间切换,程序检测count1的值,count1的值来切换LED的花样。
另一方面根据count2等于1时播放第一首歌曲,等于2时播放第二首。
count1和count2的值是互斥的,设置count2等于1、2时,count2同时设置为0;设置count1等于1~4时,count2也同时设置为0。
3.1 音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
4.1.1 音调的确定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。
把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。
两个音之间的距离有两个“半音”,就叫“全音”。
在钢琴等键盘乐器上,C–D、D –E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B –C两音之间没有黑键相隔,它们之间的距离就是半音。
通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。
﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。
例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。
1)要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。
利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O 反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
2)利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。
此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。
3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系公式如下:N=Fi÷2÷FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz;4)其计数值的求法如下:T=65536-N=65536-Fi÷2÷Fr例如:设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。
中音DO(523Hz)。
高音的DO(1046Hz)的计算值T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627低音DO的T=65536-500000/523=64580低音DO的T=65536-500000/1047=650595)C调各音符频率与计数值T的对照表如表4.1所示。
表4.1 C调各音符频率与计数值T的对照表低音频率T 参数中音频率T 参数高音频率T 参数Do 262 1908 229 Do 523 956 115 Do 1046 57 57Do﹟277 1805 217 Do﹟554 903 108 Do﹟1109 54 54Re 294 1701 204 Re 587 852 102 Re 1175 51 51Re﹟311 1608 193 Re﹟622 804 97 Re﹟1245 48 48Mi 330 1515 182 Mi 659 759 91 Mi 1318 45 45Fa 349 1433 172 Fa 698 716 86 Fa 1397 43 43Fa﹟370 1351 162 Fa﹟740 676 81 Fa﹟1480 41 41So 392 1276 153 So 784 638 77 So 1568 38 38So﹟415 1205 145 So﹟831 602 72 So﹟1661 36 36La 440 1136 136 La 880 568 68 La 1760 34 34La﹟464 1078 129 La﹟932 536 64 La﹟1865 32 32Si 494 1012 121 Si 988 506 61 Si 1976 30 304.1.2 节拍的确定若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。