数字音乐盒的课程设计报告_第1页
数字音乐盒的课程设计报告_第2页
数字音乐盒的课程设计报告_第3页
数字音乐盒的课程设计报告_第4页
数字音乐盒的课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z数字音乐盒的设计摘 要传统音乐盒,多是机械型的,体积笨重,发音单调,水、灰尘等外在因素,容易使部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本设计是一个基于AT89C51系列单片机的音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路、显示电路以及蜂鸣器组成。使用四个按键控制音乐盒,其中两个按键用来控制歌曲的播放、暂停,另两个用来控制液晶上歌曲次序的变化,本音乐盒共有三首歌曲。播放歌曲时,相应歌曲对应相应数码管上歌曲次序及歌名的显示。关键词:AT89C51,蜂鸣器,LCD液晶显示,音乐盒目 录 TOC o 1

2、-3 h z u TOC o 1-3 h z u HYPERLINK l _Toc4846328321 绪论 PAGEREF _Toc484632832 h 1HYPERLINK l _Toc4846328331.1 课题描述 PAGEREF _Toc484632833 h 1HYPERLINK l _Toc4846328341.2 根本工作原理及框图 PAGEREF _Toc484632834 h 1HYPERLINK l _Toc4846328352 相关芯片及硬件电路设计 PAGEREF _Toc484632835 h 1HYPERLINK l _Toc4846328362.1 AT89

3、C51芯片 PAGEREF _Toc484632836 h 2HYPERLINK l _Toc4846328372.1.1 AT89C51的功能特性 PAGEREF _Toc484632837 h 2HYPERLINK l _Toc4846328382.1.2 AT89C51的主要性能参数 PAGEREF _Toc484632838 h 2HYPERLINK l _Toc4846328392.2时钟电路 PAGEREF _Toc484632839 h 3HYPERLINK l _Toc4846328402.3 复位电路 PAGEREF _Toc484632840 h 3HYPERLINK l

4、_Toc4846328412.4 按键电路 PAGEREF _Toc484632841 h 4HYPERLINK l _Toc4846328422.5 蜂鸣器电路 PAGEREF _Toc484632842 h 4HYPERLINK l _Toc4846328432.6 显示电路 PAGEREF _Toc484632843 h 5HYPERLINK l _Toc4846328442.6.1 线段的显示 PAGEREF _Toc484632844 h 5HYPERLINK l _Toc4846328452.6.2 字符的显示 PAGEREF _Toc484632845 h 5HYPERLINK

5、l _Toc4846328462.7 总体电路 PAGEREF _Toc484632846 h 6HYPERLINK l _Toc4846328473 系统软件设计 PAGEREF _Toc484632847 h 7HYPERLINK l _Toc4846328483.1 程序主要流程 PAGEREF _Toc484632848 h 7HYPERLINK l _Toc4846328493.2 程序设计 PAGEREF _Toc484632849 h 8HYPERLINK l _Toc4846328504 系统软件仿真 PAGEREF _Toc484632850 h 15HYPERLINK l

6、_Toc484632851总 结 PAGEREF _Toc484632851 h 18HYPERLINK l _Toc484632852致 PAGEREF _Toc484632852 h 19HYPERLINK l _Toc484632853参考文献 PAGEREF _Toc484632853 h 20-. z1 绪论1.1 课题描述随着人类社会的开展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统的音乐盒大多数是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻

7、,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。本设计是基于单片机的数字音乐盒设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒1。1.2 根本工作原理及框图本次设计是一个基于AT89C51单片机的音乐盒,该音乐盒主要由时钟电路、复位电路、按键电路、蜂鸣器以及显示电路组成。使用其中两个按键来控制播放和暂停另外两个按键用来控制换曲。利在液晶上显示曲目的更换,共三首音乐,蜂鸣器每播放一首歌时液晶上显示相对应的歌曲次序。系统组成框图如图1。AT89C51单片机LCD液晶显示蜂鸣器时钟电路复位电路按键电路图1根本工作原理框图2相关

8、芯片及硬件电路设计2.1AT89C51芯片图2 AT89C51引脚图2.1.1 AT89C51的功能特性AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节部RAM,32个I/O口线,两个十六位定时/计数器,一个5向量两级中断构造,一个全双工串行通信口,片振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停顿CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的容,但振荡器停顿工作并制止其他所有部件工作直到下一个硬件复位。2.1.2 AT89C51的主要性能参数AT89C51主

9、要性能参数如下:与MC51产品指令系统完全兼容K字节可编程闪烁存储器寿命:1000写/擦循环数据保存时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式2.2时钟电路时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的根底。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢2。为到达振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个22PF的电容,晶振引脚分别连到*TAL1

10、和*TAL2振荡脉冲输入引脚。时钟电路如图3。图3时钟电路2.3 复位电路单片机在启动时都需要进展复位,以使CPU及系统各部件处于确定的初始状态,并从初态开场工作。51系列单片机的复位信号是从RST引脚输入到芯片的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位3。单片机系统的复位方式有:手动按钮复位和上电复位。复位电路如图4。图4复位电路2.4 按键电路按键的闭合与否,反映在行线输出电压上就呈现高电平或低电平,如果高电平表示键断开,低电平则表示键闭合,通过对行线电平上下状态的检测,

11、便可确认按键按下与否。P1.0,P1.1,P1.4,P1.5作为控制按键,其中P1.0-P1.1扫描行,P1.4-P1.5扫描列;可通过功能键选择乐曲、暂停、播放。按键电路如图5。图5 按键电路2.5 蜂鸣器电路电路中蜂鸣器是发声元件,在其两端施加直流电压有源蜂鸣器或者方波无源蜂鸣器就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式直流/方波等4。由于蜂鸣器的工作电流一般比拟大,单片机的I/O口是无法直接驱动的但AVR可以驱动小功率蜂鸣器,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。蜂鸣器由一个三极管,两个电阻和一个二极管组成。蜂鸣器电路如图6。

12、图6 蜂鸣器电路2.6 显示电路 线段的显示点阵图形式液晶由MN显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的容决定,当000H=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当3FFH=FFH时,则屏幕的右下角显示一条短亮线;当000H=FFH,001H=00H,002H=00H,00EH=00H,00FH=00H时,则在屏幕的顶部显示一条由8段亮线和

13、8条暗线组成的虚线。这就是LCD显示的根本原理5。 字符的显示用LCD显示一个字符时比拟复杂,因为一个字符由68或88点阵组成,要找到和显示屏幕上*几个位置对应的显示RAM区的8字节,还要使每字节的不同位为1,其它的为0,为1的点亮,为0的不亮。这样一来就组成*个字符。但由于带字符发生器的控制器来说,显示字符就比拟简单了,可以让控制器工作在文本方式,根据在LCD上开场显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可6。显示电路如图7。图7 显示电路2.7 总体电路总结时钟电路、复位电路、按键电路、蜂鸣器以及显示电路,把其放入一个电路。得到总体的电路。总体

14、电路如图8。图8 总体电路图3系统软件设计3.1 程序主要流程流程图如图9所示。图9流程图3.2 程序设计对音乐do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位在本程序中为165ms,一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0*ff作为曲谱的完毕标志7。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0*18。举例2:音调re,发音长度为半拍,即八分音符,将其编码为0*22歌曲播放的设计。先将歌曲的简谱进展

15、编码,储存在一个数据类型为unsigned char的数组中。程序从数组中取出1个数,然后别离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着别离出该数的低4位,得到延时时间,接着调用软件延时。程序:#include #include #define uchar unsigned char#define uint unsigned intuchar m,n; uchar i,timecount=0,timesec=0,timemin=0,timecheck=0;char r0=2;sbit beepIO=P30;typedef unsigned char

16、 BYTE;typedef unsigned int WORD;typedef bit BOOL ; sbit rs= P20;sbit rw = P21;sbit ep = P22;sbit pausekey=P11;uchar k,q,f;uchar code dis1 =1 ji mo sha zhou; uchar code dis2 = 2 tong hua;uchar code dis3 =3 qian nian lian;uchar code T492=0,0,0*F8,0*8B,0*F8,0*F2,0*F9,0*5B,0*F9,0*B7,0*FA,0*14,0*FA,0*66,

17、0*FA,0*B9,0*FB,0*03,0*FB,0*4A,0*FB,0*8F,0*FB,0*CF,0*FC,0*0B,0*FC,0*43,0*FC,0*78,0*FC,0*AB,0*FC,0*DB,0*FD,0*08,0*FD,0*33,0*FD,0*5B,0*FD,0*81,0*FD,0*A5,0*FD,0*C7,0*FD,0*E7,0*FE,0*05,0*FE,0*21,0*FE,0*3C,0*FE,0*55,0*FE,0*6D,0*FE,0*84,0*FE,0*99,0*FE,0*AD,0*FE,0*C0,0*FE,0*02,0*FE,0*E3,0*FE,0*F3,0*FF,0*02,

18、0*FF,0*10,0*FF,0*1D,0*FF,0*2A,0*FF,0*36,0*FF,0*42,0*FF,0*4C,0*FF,0*56,0*FF,0*60,0*FF,0*69,0*FF,0*71,0*FF,0*79,0*FF,0*81;uchar code music12=0,4, 22,4,22,4,17,4,15,4,15,4,17,12,15,4,15,2,17,2,15,4,13,4,13,4,15,12,0,4,20,4,20,4,20,4,17,4,20,4,20,4,20,4,17,4,22,4,17,4,17,4,15,4,15,4,17,12,22,4,22,4,17,4

19、,15,4,15,4,17,12,15,4,15,2,17,2,15,4,13,4,13,4,15,12,20,4,20,4,20,2,17,2,17,4,20,4,20,4,20,2,17,2,17,2,17,2,24,4,20,4,20,2,17,2,17,4,20,4,22,12,17,4,22,4,25,4,25,4,17,4,22,4,25,8,24,4,22,2,24,2,22,4,20,4,15,4,17,12,15,4,15,4,15,4,10,4,15,4,17,4,20,8,17,4,24,4,24,4,20,4,15,4,17,12,17,4,22,4,25,4,25,4

20、,17,4,22,4,25,8,29,4,27,2,29,2,27,4,25,4,25,4,27,12,29,4,29,2,27,4,25,4,27,6,27,2,25,4,24,4,20,4,20,2,17,2,20,4,20,2,22,2,22,16,0*FF,0*FF;uchar code music22=0,4, 16,6,19,2,19,6,16,2,14,6,0,10,16,6,19,2,19,6,16,2,14,8,0,8,26,8,21,6,24,2,23,6,21,2,19,8,21,16,0,8,16,6,19,2,19,6,16,2,14,8,0,8,26,8,21,6,

21、23,2,21,14,24,6,23,2,21,6,19,2,16,6,14,2,13,8,14,16,0,4,19,6,19,2,21,6,21,2,23,8,21,4,0,4,19,6,19,2,16,6,19,2,16,8,14,6,0,4,19,6,19,2,21,6,21,2,23,8,21,4,0,4,19,6,19,2,16,6,19,2,16,8,14,6,0,4,26,16,21,4,26,4,21,4,26,16,21,4,26,16,0,4,16,8,16,8,14,8,16,8,21,4,26,4,21,4,26,4,0,8,16,8,16,8,14,8,16,8,21

22、,4,26,4,21,4,26,4,0,8,19,8,19,6,21,2,16,8,0,8,19,6,21,2,19,6,21,2,16,8,0,8,21,8,26,8,21,4,24,12,23,6,21,2,19,8,21,16,14,4,21,4,14,4,19,4,16,6,14,2,13,8,14,16,0*FF,0*FF;uchar code music32=0,4,27,4,19,4,19,4,27,4,26,4,26,2,27,2,24,8,22,4,17,4,24,4,22,4,19,16,15,4,12,4,12,4,15,4,17,8,19,8,26,6,26,2,26,

23、4,24,4,24,4,19,4,19,8,27,4,19,4,19,4,27,4,26,4,26,2,27,2,24,6,24,2,22,4,17,4,24,4,22,4,19,16,15,4,12,4,12,4,15,4,17,8,19,8,19,6,19,2,19,4,17,4,14,4,14,4,14,4,7,4,12,24,0*FF,0*FF;uchar timetable =00:00;void delay(uchar p) uchar i,j; for(;p0;p-) for(i=181;i0;i-) for(j=181;j0;j-);BOOL lcd_bz()BOOL resu

24、lt;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0*80);ep = 0;return result; void lcd_wcmd(BYTE cmd)while(lcd_bz();rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;void lcd_pos(BYTE pos)lcd_wcmd(po

25、s | 0*80);void lcd_wdat(BYTE dat)while(lcd_bz();rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0; void lcd_init()lcd_wcmd(0*38);delay(1);lcd_wcmd(0*0c);delay(1);lcd_wcmd(0*06);delay(1);lcd_wcmd(0*01);delay(1); void pause() uchar i,j; for(i=1

26、50;i0;i-) for(j=150;j0;j-); void timecount_init() interrupt 3 TH1=(65535-45872)/256; TL1=(65535-45872)%256; timecount+; if(timecount=20) timesec+;timecount=0;if(timesec=60)timesec=0;timemin+; void adfa() interrupt 0 timesec=0; timemin=0; r0+; delay(5); if(r011) r0=11; void adfii() interrupt 2 if(pau

27、sekey=0) beepIO=0; while(pausekey=0); while(pausekey=1); while(pausekey=0); delay(8); else timesec=0; timemin=0; r0-; delay(5); if(r0=0) r0=1;void T0_int() interrupt 1 beepIO=!beepIO; TH0=Tm0; TL0=Tm1;void zhuanhuan()timetable3=timesec/10+0;timetable4=timesec%10+0;timetable2=:;timetable0=timemin/10+

28、0;timetable1=timemin%10+0;void timedis()if(timecheck!=timesec)timecheck=timesec;zhuanhuan();lcd_pos(0*49);lcd_wdat(timetable0);lcd_wdat(timetable1);lcd_wdat(timetable2);lcd_wdat(timetable3);lcd_wdat(timetable4);void main() uchar i=0,lcd_check=0; TMOD=0*11; TH1=(65535-45872)/256; TL1=(65535-45872)%25

29、6; P*0=1; P*1=1; E*0=1; E*1=1; EA=1; ET0=1; ET1=1; TR1=1; pausekey=1; lcd_init(); while(1) if(r0=0) delay(1);lcd_pos(0); i = 0; while(dis1i != 0) lcd_wdat(dis222i); i+; if(r0=1) timedis(); if(lcd_check!=r0)lcd_wcmd(0*01); delay(1);lcd_check=r0;lcd_pos(0); i = 0; while(dis1i != 0) lcd_wdat(dis1i); i+

30、; m=music1i0;n=music1i1; if(m=0*00) TR0=0;delay(n);i+;/ else if(m=0*FF) TR0=0;delay(30);i=0;timesec=0;timemin=0;/ else if(m=music1i+10) TR0=1;delay(n);TR0=0;pause();i+; else TR0=1;delay(n);i+;if(r0=2) timedis(); if(lcd_check!=r0) lcd_wcmd(0*01); delay(1); lcd_check=r0; lcd_pos(0); i = 0; while(dis2i != 0) lcd_wdat(dis2i); i+; m=music2i0;n=music2i1; if(m=0*00) TR0=0;delay(n);i+;/ else if(m=0*FF) TR0=0;delay(30);i=0;timesec=0;timemin=0;/ else if(m=music2i+10) TR0=1;delay(n);TR0=0;paus

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论