版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计课题: 数字音乐盒系 别: 电气信息工程学院专 业: 电气工程及其自动化姓 名: 学 号:成 绩: 2016年 1 月 5日目录1、 设计目的32、 设计要求33、 总体设计44、 部分电路设计6 1.时钟电路6 2.复位电路6 3.选曲电路6 4.音频发生及放大电路7 5.液晶显示电路75、 音乐的产生86、 整体电路图9 KEIL51的使用107、 设计总结118、 参考文献11附录1 源程序12附录2所用元件清单211、 设计目的21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使
2、现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,
3、广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积
4、笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。二、设计要求本设计是以STC89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一下地址即可。该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。数字音乐盒要求:1、 利用I/O口产生一
5、定频率的方波,驱动蜂鸣器,发出不同的音阶,从而演奏乐曲;2、 播放乐曲,最少储存三首乐曲,每首不少于三十秒;3、采用LCD显示;4、开机时有英文欢迎字符,播放时显示歌曲序号(或名称);5、可通过功能键选择乐曲,暂停,播放;三、总体设计 传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。 本文设计的音乐盒,是基于单片机设
6、计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C上方的A音定为标准音高
7、,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与,2(来)与正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1i八音区为例,12个半音是:11、12、22、23、34、44,45、5一5、56、66、67、7i。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。知道了一个音符的频后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片
8、机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。总体设计框图 :80c51单片机扬声器歌曲控制按钮电源复位晶振时钟液晶显示电路图 2-1 总设计图四、各部分电路设计1. 时钟电路 图 2-2 时钟电路2.复位电路 图 2-3 复位电路3. 选曲电路 图 2-4 选曲电路其中P3.2 播放暂停, P1.2上一首歌,P3.5下一首歌。4. 音频发生及放大电路图 2-5音频发生及放大电路利用STC89C51的I/O口产生一定频率的方波脉冲,通过LM386功放电路驱动喇叭发出不同的音调从而演凑乐曲。
9、5. 液晶显示电路图 2-5音频发生及放大电路LCD1602显示当前播放的音乐名,音乐序号。五、音乐的产生单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表3-1所示表 3-1 音符频率表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#3706
10、4185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 61
11、86565268中 4 FA69864820高 7 SI196765283程序中的全局变量FREQL和FREQL就是音符频率表,分别为数据的高8位和低8位,如下:unsigned char code FREQH= 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,/低音1、2、3、4、5、6、7 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC,/中音1、2、3、4、5、6、70xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,/高音1、2、3、4、5、6、7 0xFE, 0xFE, 0xFE, 0x
12、FE, 0xFE, 0xFE, 0xFF/超高音1、2、3、4、5、6、7; unsigned char code FREQL=0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,/低音1、2、3、4、5、6、70x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B,/中音1、2、3、4、5、6、70x8F, 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,/高音1、2、3、4、5、6、70x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16/超高音1、2、3、4、5、6、7;FREQH和F
13、REQL中分别为数据的高8位和第8位,分别用来初始化TH0、TL0。音乐的音拍,一个节拍为单位(C调)(如表3-2所示)表3-2 曲调值表曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms六、整体电路图KEIL51的应用 硬件与软件的设计一般都要分别借助一些软件,如我们通常用作电路设计与制版的Protel,MCS-51程序开发工具KEIL等。Keil C51 uVision2集成开发环境是基于80C51内核的软件开发平台,支持工程建立、程序的编译与链接、软件仿真、硬件仿真、目标代码的生成等功能。Keil C5
14、1编译器在产生代码的准确性和效率方面达到了较高的水平。 与大多数集成开发环境类似,Keil C51集成开发环境也是用工程的方法来管理文件,在一个工程文件中源程序(C51程序、汇编程序)、头文件等都可以进行统一管理。 安装运行KEIL51,使用KEIL的开发工具进行项目开发过程,与其他软件开发项目的过程基本上相同:创建C 语言或汇编语言的源程序。编译或汇编源文件。纠正源文件中的错误。从编译器和汇编器连接目标文件。测试连接的应用程序。仿真电路7、 设计总结通过本次课程设计,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。不仅让我对学过的单片机知识有
15、了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。在本次课程设计过程中,我在网络上查找有关本设计的各硬件的资料为本次课程设计提供了一定的帮助。 在做课程设计的初期阶段,难度很大,没有头绪。通过在图书馆里、网上查阅资料,和同学们交流,攻克了课程设计中的道道难题。本次设计我们能合作完成,算是有了很大的收获。总的感受有以下几方面: 1) 巩固了课本上的知识。对单片机有了更为深入的了解,对一个课题如何画流程图,编程序等,有了一定的认识。 2) 在本次课程设计中,我进一步加强了自己的动手能
16、力和运用专业知识的能力,从中学习到如何去思考和解决问题,以及如何灵活地改变方法去实现设计方案。 3) 智能化技术对当今人们生活的重要性。这次做课程设计的经历也使我受益匪浅。让我知道做任何事情都应脚踏实地,刻苦努力地去做。只有这样,才能做好。 在这次课程设计中,我既巩固了专业知识,又学到了在智能化设计过程中的许多流程和该注意的事项,增强了电子产品开发的意识。本次经历将是我在大学时期很好的一次实践和锻炼机会。八、参考文献1 郑郁正.单片机原理及应用.四川大学出版社,20032 谭浩强.C程序设计(第二版).清华大学出版社,19993
17、 王晓君.安国臣等. MCS51及兼容单片机原理与选型. 北京-电子工业出版社, 20034 李启炎. Protel 99SE应用教程. 上海-同济大学出版社 2005.25 胡烨, 姚鹏翼, 江思敏. Protel 99 SE电路设计与仿真教程. 北京-机械工业出版社, 20066 张义和,陈敌北。例说8051。北京:人民邮电出版社,20067 张洪润,张亚凡。单片机原理及应用。清华大学出版社,20048 AT89C51 DATA SHEEP Philips Semiconductors 1999.dec9Yang. Y., Yi. J., Woo, Y.Y., and Kim. B.: O
18、ptimum design for linearityand efficiency of microwave Doherty amplifier using a new loadmatching technique, Microw. J., 2001, 44, (12), pp. 203610 Vizimuller, P.: RF design guide-systems, circuits, and equations (ArtechHouse, Boston, MA, 1995)附录1:源程序/51单片机音乐播放器程序/共三个按键:上一曲、一下曲、播放暂停/注意:按键必须按下约1S才有相应
19、动作,播放完一首歌曲无按键按下时顺序播放/#include<REG52.H>sbit play_up=P13; /上一首歌sbit play_down=P35; /下一首歌sbit pause=P32; /播放暂停sbit speaker=P10; /无源蜂鸣器sbit RS=P25;sbit RW=P26;sbit EN=P27;/unsigned char timer0h,timer0l,time;/timer0h,timer0l为定时器T0的高低位初值,time为对应的节拍时间unsigned char music_num; /music_num为歌曲编号,music_num
20、=0表示刚开机时的状态,num是查找歌曲数据表的地址unsigned int num;unsigned char code list816="Yan Hua Yi Leng "," Fa Ru Xue "," Jian Dan Ai ","Zhi You Mama Hao"," Dang Ni Gu Dan ","XiangJian XiaoLu"," Song Bie ","Lang Man De Shi "signed int fr
21、e; /对应频率数据表的地址bit play_enable; /歌曲播放的使能标志位,用于播放暂停void delay(unsigned char t); /延时子函数,控制发音的时间长度void delayms(unsigned int t); /普通延时子程序,可用于按键消抖void song(void); /演奏一个音符void music_play(void); /播放歌曲/每三个数字,代表一个音符/第一个数字是音符的数值1234567之一(第几个音),代表哆来咪发./第二个数字是0123之一,代表低音中音高音超高音(第几个八度)/第三个数字是时间长度,以半拍为单位,乐曲数据表的结尾是
22、三个0/歌曲/世上只有妈妈好unsigned char code song4= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, /6,2,3代表6,中音,3个半拍; /5,2,1代表5,中音,1个半拍; /3,2,2代表3,中音,2个半拍; /5,2,2代表5,中音,2个半拍; /1,3,2代表1,高音,2个半拍; /. 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 1,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2
23、,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0;/当你孤单你会想起谁unsigned char code song5= 3,2,2, 3,2,1, 4,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,2, 5,2,2, 2,2,2, 2,2,3, 1,2,2, 1,2,1, 6,2,1, 1,2,2, 7,1,1, 6,1,1, 7,1,2, 3,2,2, 7,1,2, 7,1,3, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2
24、,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1,2,6, 0,0,0 ;/乡间小路unsigned char code song6= 3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2, 6,0,1, 5,0,1, 6,0,4, 6,0,2, 6,0,1 ,6,0,1, 6,0,2, 6,0,1, 1,1,1, 2,1,2, 2,1,1, 3,1,1, 2,1,4, 3,5,1, 3,1,1, 3,1,1, 2,1,1, 4,1,2, 4,1,2,
25、 3,1,2, 2,1,1, 1,1,1, 2,1,4, 7,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 5,0,1, 6,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 6,0,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 4,1,2, 4,1,1, 3,1,1, 2,1,2, 1,1,1, 2,1,1, 3,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,4, 6,1,2, 3,1,1, 6,1,1
26、, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 0,0,0; /*lcd1602程序*/ void delay1ms(unsigned int ms)/延时1毫秒(不够精确的) unsigned int i,j; for(i=0;i<ms;i+) for(j=0;j<100;j+); void wr_com(unsigned char com)/写指令/ delay1ms(1); RS=0; RW=0; EN=0; P0=com; delay1ms(1); EN=0; delay1ms(1); EN=
27、1; void wr_dat(unsigned char dat)/写数据/ delay1ms(1); RS=1; RW=1; EN=1; P0=dat; delay1ms(1); EN=0; delay1ms(1); EN=1; void lcd_init()/初始化设置/delay1ms(15);wr_com(0x01); wr_com(0x38);delay1ms(5);wr_com(0x0c);wr_com(0x06);void init_play() wr_com(0x80+40+4); wr_dat('W'); wr_dat('E'); wr_dat
28、('L'); wr_dat('C'); wr_dat('O'); wr_dat('M'); wr_dat('E'); wr_dat('!'); void display(unsigned char i) unsigned char j; wr_com(0x80); wr_dat(i+0x30); wr_dat(':'); wr_com(0xc0); for(j=0;j<16;j+) wr_dat(listi-1j); void main(void)TMOD=0x11; /T0
29、T1 均在工作方式1ET0=1; /T0开中断EA=1; /CPU开中断 lcd_init();init_play();while(1)music_play();/根据当前状态播放相应歌曲的某个音符if(!pause)/暂停键处理delayms(5);if(!pause)if(music_num=0) /music_num=0只有在刚开机,且未按下暂停键时存在,表示刚开机时的状态,按下后从第一首开始播放music_num=1; /歌曲序号置1num=0; /从头播放play_enable=1;/允许播放display(1);if(play_enable)wr_com(0x86);wr_dat(
30、'P'); wr_dat('L');wr_dat('A');wr_dat('Y');wr_dat(' ');elseplay_enable=play_enable; speaker=1;if(play_enable)wr_com(0x86);wr_dat('P'); wr_dat('L');wr_dat('A');wr_dat('Y');wr_dat(' ');if(!play_enable)wr_com(0x86);wr_dat(
31、39;P'); wr_dat('A');wr_dat('U');wr_dat('S');wr_dat('E');while(!pause) /若按着暂停键不放手时的处理if(play_enable=0) /如果是暂停,则显示时间不变/(暂停时play_enable=0) /暂停键处理结束/while结束if(!play_up)&&(music_num!=0) /上一首按键delayms(5);if(!play_up)&&(music_num!=0) speaker=1;music_num-=
32、1;/歌曲编号减一if(music_num<=0)music_num=8;num=0; /从头开始播放display(music_num);delayms(500);/歌曲切换时延时0.5Sif(!play_down)&&(music_num!=0)delayms(5);if(!play_down)&&(music_num!=0) speaker=1;music_num+=1;/歌曲编号加一if(music_num>=9)music_num=1;num=0; /从头开始播放display(music_num);delayms(500);/歌曲切换时延
33、时0.5S void delayms(unsigned int t) /MS延时子程序unsigned int i,j;for(i=0;i<t;i+)for(j=0;j<123;j+);void delay(unsigned char t) /延时子函数,控制发音的时间长度,每个节拍0.4Sunsigned char t1;unsigned long t2;for(t1=0;t1<t;t1+) /嵌套循环, 共延时t个半拍 for(t2=0;t2<8000;t2+) /延时期间, 可进入T0中断去发音 ; TR0=0; /关闭T0, 停止发音void timer0(vo
34、id) interrupt 2 /T0中断程序,控制发音的音调speaker=!speaker;/输出方波, 发音TH0=timer0h; /下次的中断时间,这个时间控制音调高低TL0=timer0l; void song(void) /演奏一个音符TH0=timer0h; /控制音调TL0=timer0l;TR0=1; /启动T0, 由T0输出方波发音delay(time); /每个音符的演奏时间/void music_play(void)/播放相应歌曲的某个音符if(music_num=1)&&(play_enable=1)fre=song1num+8*song1num+1
35、-1;/第i个是音符,第i+1个是第几个八度timer0h=FREQHfre; /从数据表中读出频率数值,实际上是定时的时间长度 timer0l=FREQLfre; time=song1num+2; /读出时间长度数值 num+=3;if(fre<0)/判断歌曲的结束位,结束后转到下一首num=0; /下一首从头播放music_num=2;display(2); song(); /发出一个音符/if(music_num=2)&&(play_enable=1) fre=song2num+8*song2num+1-1;timer0h=FREQHfre; timer0l=FREQLfre; time=song2num+2; num+=3;if(fre<0)num=0;music_num=3;display(3); song();/if(music_num=3)&&(play_enable=1) fre=song3num+8*song3num+1-1;timer0h=FREQHfre; timer0l=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自建房买卖的合同范本3篇
- 建筑工程施工合同1本月修正简版
- 2024版船舶买卖合同范本
- 2024版环保工程泥浆处理外运合同
- 2024二手注塑机买卖合同书3篇
- 隧道承包合同 3篇
- 年度计划与企业文化的融合
- 班级多媒体教学活动的开展计划
- 租车租赁合同3篇
- 糖尿病酮症病人护理
- 七年级上册英语UNIT 7 Happy Birthday!单元测试卷(人教河南版)
- 2024年人教版小学三年级信息技术(下册)期末考卷附答案
- CJT511-2017 铸铁检查井盖
- 2024译林版英语初一上单词默写表
- 生鲜肉购销简单合同
- 军事理论-综合版智慧树知到期末考试答案章节答案2024年国防大学
- YC/T 310-2024烟草漂浮育苗基质
- 一年级数学期中家长会
- 职熵-大学生职业素质与能力提升智慧树知到期末考试答案章节答案2024年中国海洋大学
- 水域和海洋中的火灾防范知识培训
- 项目管理与时间规划培训资料
评论
0/150
提交评论