单片机课程设计简易音乐播放器_第1页
单片机课程设计简易音乐播放器_第2页
单片机课程设计简易音乐播放器_第3页
单片机课程设计简易音乐播放器_第4页
单片机课程设计简易音乐播放器_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、 论文题目论文题目:简易音乐播放器 所属系部:所属系部:电子工程系 指导教师:指导教师: 学生姓名:学生姓名: 学学号号: : 专专业:业: 电子信息工程技术 题目:题目: 简易音乐播放器任务与要求:任务与要求:本设计以 mcs-51 系列单片机为核心,采用常用电子器件 设计。要求最少 8 个按键,每个按键对应一种音调,按下按键发声,松开按键后声音延迟一段时间后停止,延时时间可以设置,要求最少 8 个不同音调,至少可以自动播放 3 种音乐,并且带有显示功能。时间:时间: 2010 年 12 月 19日 至 2010年 12 月 31 日 共 2周所属系部:所属系部: 电子工程系 学生姓名:学生

2、姓名: 学学 号:号: 专业:专业: 电子信息工程技术指导教师:指导教师: 潘晶莹 摘要摘要电子音乐播放器是现代电子科技与音乐结合的产物,是一种新型的播放乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用 at89s51 单片机为核心控制元件,设计一个音乐播放器。以单片机作为主控核心,与键盘、扬声器、显示器等模块组成核心主控制模块,在主控模块上设有 8 个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠等,具有一定的实用和参考价值。关键字关键字: at89c51,扬

3、声器,lcd显示器 简易音乐播放器 目目 录录1 1 前言前言.111 系统的功能介绍 .12 简易音乐播放器原理简易音乐播放器原理.22.1 简易音乐播放器原理简易音乐播放器原理.23 3 简易音乐播放器设计方案简易音乐播放器设计方案.33.1 单片机时钟电路设计 .33.2 单片机复位电路设计 .43.3 键盘电路设计 .43.4 lcd 显示部分电路.54 系统软件设计系统软件设计.64.1 定时器中断服务控制 .64.2 主程序的实现 .74.3 单片机汇编源程序清单 .8结束语结束语.17参考文献参考文献.18简易音乐播放器 11 1 前言前言我们生活在一个信息时代,各种电子产品层出

4、不穷,作为一个电子信息专业的学生,了解这些电子产品的基本用途和设计原理是十分必要的,我们学习的是电子信息方面的理论知识,而课程设计正是对我们学习的理论的实践与巩固。本设计主要介绍的是一个用单片机描述的一个具有若干功能的简易电子音乐播放器。本次设计的目的就是在掌握音乐播放器组成原理理论的基础上,了解 eda 技术,掌握汇编描述语言的设计方法和思想,通过学习的汇编语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的时钟分频器和定时器的基础之上的,通过本课程设计,达到巩固和综合运用单片机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所

5、学理论分析、解决实际问题的能力。1 11 1 系统的系统的功能介绍功能介绍1 可以演奏出基本的 8 种音调:do、re、mi、fa、so、la、si、高音 do; 2 演奏的同时会以 led 显示出当前的按键,利于培养乐感;3 可以演奏内置的 3 种歌曲。 4 自动演奏时,lcd 显示播放的曲目序号和演奏的歌曲歌词。使用方法:通过按下方的 3 个键演奏。播放器可实现循环播放、上一曲、下一曲等功能,也可以产生包括do、re、me- 等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律,操作方便,无须再为找不到适全的音乐芯片而烦恼。我们知道,声音的频率范围约在几十到几千

6、赫兹,若能利用程序来控制单片机某个口线的高电平或低电平,则在该口线上就能产生一定频率矩形波,接上扬声器就能发出一定频率的声音,若能利用延时程序控制 “高” “低”电平的持续时间,就能改变输出频率,从而改变音调。要产生音频脉冲,只要算出某一音频的周期,然后将此周期除以 2,即半周期的时间,为单片机的定时时间,然后反复进行半周期定时,每当定时到就将输出脉冲的 i/o 口取反,如此就可以在 i/o 端口上得到此频率的脉冲简易音乐播放器 22 简易音乐播放器原理简易音乐播放器原理 一定频率产生声音,频率高低决定音调。利用单片机输出脉冲信号经放大后送给喇叭,便可发出声音。本制作中巧妙地利用了单片机的定时

7、器,让定时器中断一次就对改变喇叭的状态一次,即形成矩形方波,这也是数字电路产生声音的方法。本作品使用 at89s51 型单片机。 由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器 t0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。2.1简易音乐播放器原理高中低音符与单片机计数 t0 相关的计数值如下表所示音符 频率(hz)简谱码(t 值) 音符 频率(hz)简谱码(t 值)表 2-1低 1do 262 63628#

8、 4 fa# 740 64860 #1do# 277 63731中 5 so 784 64898 低 2re 294 63835# 5 so# 831 64934 #2re# 311 63928中 6 la 880 64968 低 3m 330 64021# 6 932 64994 低 4fa 349 64103中 7 si 988 65030 # 4fa# 370 64185高 1 do 1046 65058 低 5so 392 64260# 1 do# 1109 65085 # 5so# 415 64331高 2 re 1175 65110 低 6la 440 64400# 2 re# 1

9、245 65134 # 6466 64463高 3 m 1318 65157 低 7si 494 64524高 4 fa 1397 65178 中 1do 523 64580# 4 fa# 1480 65198 # 1do# 554 64633高 5 so 1568 65217 中 2re 587 64684# 5 so# 1661 65235 # 2r# 622 64732高 6 la 1760 65252 中 3m 659 64777# 6 1865 65268 中 4fa 698 64820高 7 si 1967 65283 简易音乐播放器 33 3 简易音乐播放器设计方案简易音乐播放器

10、设计方案声音的频谱范围约在几十 hz 到几千 hz,利用程序来控制单片机某个口线不段的输出“高” 、 “低”电平,则在该口线上就能产生一定的频率的方波,将该方波接上喇叭,就能发出一定的声音,若在利用程序来控制“高” 、 “低”电平的持续时间,就能改变输出波形的频率,从而改变音调。乐曲中,每一个音符对应着确定的频率,表 1 给出了 c 调时各音符频率。如果单片机某个口线输出“高” 、 “低”电平的频率和某个音符的频率一样,那么将口线接上喇叭就可以发出次音符,如下表所示表 3-1表 3-1 c 调时各音符频率音名1234567频率(hz)523.3587.3659.3698.3784880967.

11、83.1 单片机时钟电路设计单片机时钟电路设计当 mcs-5l 系列单片机的复位引脚 rst(全称 reset)出现 2 个机器周期以上的高电平时,单片机就执行复位操作。如果 rst 持续为高电平,单片机就处于循环复位状态。时钟电路如图 3-1 所示。图 3-1 时钟电路图简易音乐播放器 43.23.2 单片机复位电路设计单片机复位电路设计本设计采用上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容 c2 的充电和反相门的作用,使 rst 持续一段时间的高电平。当单片机已在运行当中时,按下复位键 k 后松开,也能使 rst 为一段时

12、间的高电平,从而实现上电或开关复位的操作。c:22uf,rl0k。复位电路如图 3-2 所示。图 3-2 复位电路图3.33.3 键盘电路设计键盘电路设计键盘扫描的方法是:先扫描第 0 行,行输出值为 1110b,第 0 行为”0”,其余 3 行为“1”(通常把输出为 0 的行称为当前行),然后读入列信号,判断是否为全“1”。若列输入值为全“1”,则当前行无键按下,行输出 1101(第1 行为“0”其余 3 行为“1”),再扫描下一行依次规律逐行扫描,直到扫描某行时,其列输入不为全“1”,则根据行输出和列输入值中 0 的位置确定闭合键的具体位置,从而用计算法或查表法到闭合键的键值。如下图 3-

13、3 所示。p0p1p2p3p5p4p6p7r1010kc0简易音乐播放器 5图 3-3 键盘电路3.4 lcd 显示部分显示部分电路电路lcd 显示电路用来显示播放歌曲歌词和歌曲序号。如图 3-4 所示。图 3-4 lcd 显示电路引脚功能说明1602lcd 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如 表 3-4-1 所示:编号符号引脚说明编号符号引脚说明1vss电源地9d2数据2vdd电源正极10d3数据3vl液晶显示偏压11d4数据4rs数据/命令选择12d5数据5r/w读/写选择13d6数据6e使能信号14d7数据7d0数据15bla背光源正极8d1数据1

14、6blk背光源负极 简易音乐播放器 64 系统软件设计系统软件设计4.1 定时器中断服务控制定时器中断服务控制本设计通过定时器中断产生是单片机在一定的时间产生方波,整个设计的关键也正是通过该定时器中断服务产生输出不同频率的方波从而来实现个种音符。这种方法占用 cpu 时间很少,在显示的同时还可以处理其他事务,效率较高,是通常采用的方法。定时器其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。at89c5l 单片机有 2 个 16 位的定时器:定时器 0(t0)和定时器 1(t1)。其原理图如图 4-1 所示。 图 4-1 定时器原理图t0 由 2 个定时寄

15、存器 th0 和 tl0 构成,t1 则由 th1 和 tl1 构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器自动加 l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期为 12 个时钟振荡周期,所以定时的分辨率是时钟振荡频率的 112。简易音乐播放器 74 4.2 2 主程序的实现主程序的实现 在主程序中首先调用键盘扫描子程序,进行有无键按下的判断,如无键按下则执行熄灭指示灯、跳回开始位置的命令;如有键按下则扫描出按下的键的位置再将其值赋给 t im er1l 和 t im er

16、1h,通过其执行点亮指示灯。反复执行该命令得到不同的值,输出不同的音符。其流程图如图 4-2 所示。图 4-2 主程序的流程图start有按?将 t1 送初值开启 t1,点亮关闭 t1,熄灭无有简易音乐播放器 84.3 单片机汇编源程序清单单片机汇编源程序清单rs bit p2.0 ;定义液晶显示端口标号 rw bit p2.1 e bit p2.2;* t0th equ 24h ;t0 两个暂存变量 t0tl equ 23h org 0000h ljmp inition org 000bh ljmp t0int org 0100h ;*;*液晶初始化*inition: mov sp,#70h

17、 mov p0,#01h ;清屏call enablemov p0,#38h ;8 位,2 行显示call enablemov p0,#0ch ;屏显 on,关光标 call enablemov p0,#06h ;计数地址加 1,自动右移call enable;*;开机提示;*mov p0,#80hcall enablemov dptr,#table0 ;写数据的第一行call write1 mov p0,#00010000b ;光标左移两位call enablemov p0,#00010000b简易音乐播放器 9call enable call del0ljmp main ;*写指令enab

18、le: clr rsclr rwsetb ecall del0clr eret;*写数据write1: mov r1,#00h ;查表程序,从表头到表尾a1:mov a,r1movc a,a+dptrcall write2inc r1cjne a,#00h,a1 ;未到字符串末尾继续retwrite2: mov p0,a ;直接将数据写入液晶屏setb rsclr rwsetb ecall del0clr eretdel0: mov r4,#020hc0:mov r5,#020hc1: djnz r5,c1djnz r4,c0 ret ;*table0: db da jia hao,00h;*

19、内存初始化*简易音乐播放器 10initial: mov r3,#08hmov r0,#30hm1: mov r0,#00hinc r0djnz r3,m1 ret ;*选择按键播放八个音调*main: mov sp,#80h ;初始化堆栈mov tmod,#11h ;定时器 0 工作方式 0,定时器 1 工作方式 0setb easetb et0 ;计数器 0 允许setb et1 ;计数器 1 允许start: setb p3.7 ;关蜂鸣器clr tr0 ;定时器不允许 scan: mov a,p1 ;键盘扫描 cjne a,#0ffh,su_key ;判断键盘按下,跳到 su_key,

20、若未按,继续扫描 nopljmp scansu_key:su_key1: jb p1.0,su_key2 ;如果不是第 1 个键按下,转mov dph,#0fchmov dpl,#44hsjmp play su_key2:jb p1.1,su_key3 ;如果不是第 2 个键按下,转mov dph,#0fchmov dpl,#0achsjmp play su_key3:jb p1.2,su_key4 ;如果不是第 3 个键按下,转mov dph,#0fdhmov dpl,#09hsjmp playsu_key4:jb p1.3,su_key5 ;如果不是第 4 个键按下,转mov dph,#0

21、fdh简易音乐播放器 11 mov dpl,#34h sjmp playsu_key5:jb p1.4,su_key6 ;如果不是第 5 个键按下,转 mov dph,#0fdh mov dpl,#82h sjmp playsu_key6: jb p1.5,su_key7 ;如果不是第 6 个键按下,转 mov dph,#0fdh mov dpl,#0c8h sjmp playsu_key7: jb p1.6,su_key8 ;如果不是第 7 个键按下,转 mov dph,#0feh mov dpl,#06h sjmp playsu_key8:jb p1.7,key1 ;如果不是第 8 个键按

22、下,转 mov dph,#0feh mov dpl,#22h sjmp play play: mov t0th,dph ;存高位字符 mov t0tl,dpl ;存低位字符 mov th0,t0th mov tl0,t0tl etb tr0 ;启动定时器 0 mov r2,#01b ;1/4 拍 djnz r2,play lcall delay sjmp judgejudge: jb p2.4,start ;按键未按下,则继续扫描,否则,开始放音乐;*选择按键播放音乐*key1:jb p2.5,key2 ;第一个键(p2.5)按下,放音音乐 1 mov r2,#00h lcall modd ;

23、歌曲号显示 简易音乐播放器 12 mov dptr,#mu_tab1 ajmp musickey2: jb p2.6,key3 ;第二个键(p2.6)按下,放音乐 2 mov r2,#01h lcall modd ;歌曲号显示 mov dptr,#mu_tab2 ajmp musickey3: jb p2.7,next_2 ;第三个键(p2.7)按下,放音乐 3 mov r2,#02h lcall modd ;歌曲号显示 mov dptr,#mu_tab3 ajmp music next_2: ljmp start ;返回music: mov tmod,#01h mov ie,#82h ;允许

24、 t0 中断 mov r7,#00hloop: clr a movc a,a+dptr ;查表取代码 mov r1,a ;定时器高八位存 r1 inc dptr push dph ;保护现场 push dplgeci1: jb p2.5,geci2 ;第一个键(p2.5)按下,显示歌词 1 mov dptr,#ge1 ajmp gecigeci2: jb p2.6,geci3 ;第二个键(p2.6)按下,显示歌词 2 mov dptr,#ge2 ajmp gecigeci3: jb p2.7,tiaochu ;第三个键(p2.7)按下,显示歌词 3 mov dptr,#ge3 ajmp gec

25、i tiaochu :ljmp startgeci: lcall qingchu mov p0,#0c0h ;显示的位置 简易音乐播放器 13 call enablexianshi1: mov a,r7 ;查表取音乐汉语拼音显示 movc a,a+dptr call write2 inc r7 cjne a,#00h,xianshi1 mov p0,#00010000b ;将光标左移一位 call enable mov p0,#00010000b ;将光标左移一位 call enable pop dpl pop dph clr a movc a,a+dptr mov r0,a ;定时器低八位存

26、 r0 orl a,r1 jz next0 ;相或结果全 0 为休止符 mov a,r0 anl a,r1 cjne a,#0ffh,next ;相与结果为 0ffh 表示乐曲结束 mov p0,#01h ;清屏 call enable ljmp inition ;从头开始演奏 next: mov t0th,r1 ;装定时初值 mov th0,t0th mov t0tl,r0 mov tl0,t0tl setb tr0 ;启动定时器 sjmp next1next0: clr tr0 ;关闭定时器next1: clr a inc dptr movc a,a+dptr ;查延时常数 mov r2,

27、a简易音乐播放器 14loop1: acall d200 djnz r2,loop1 ;控制延时次数 inc dptr ajmp loopd200: mov r3,#81h ;延时程序d200b: mov a,#0ffhd200a: dec a jnz d200a dec r3 cjne r3,#00h,d200b retqingchu: mov a,#00100000b mov p0,#0c0h ;将第二行的第一位置 0 lcall enable lcall write2 mov a,#00100000b;将第二行的第二位置 0 mov p0,#0c1h lcall enable lcall

28、 write2 mov a,#00100000b;将第二行的第三位置 0 mov p0,#0c2h lcall enable lcall write2 mov a,#00100000b ;将第二行的第四位置 0 mov p0,#0c3h lcall enable lcall write2 mov a,#00100000b ;将第二行的第五位置 0 mov p0,#0c4h lcall enable lcall write2 mov a,#00100000b ;将第二行的第六位置 0 mov p0,#0c5h lcall enable简易音乐播放器 15 lcall write2 mov a,#

29、00100000b ;将第二行的第七位置 0 mov p0,#0c6h lcall enable lcall write2 ;将第二行的第三位置 0;*;定时器 0 中断子程序,定时音乐;*t0int: ;中断服务子程序mov th0,t0thmov tl0,t0tlcpl p2.3 ;反相输出,演示音乐reti ;*;显示 ;*modd: mov p0,#8ehlcall enable mov a,r2mov dptr,#table2movc a,a+dptrlcall write2 rettable2:db 31h,32h,33h,34hge1: db xin,00h,nian,00h,h

30、ao,00h,ya,00h,xin,00h,nian,00h,hao,00h,ya,00hdb zhu,00h,fu,00h,da,00h,jia,00h,xin,00h,nian,00h,hao,00hge2:dbliang,00h,zhi,00h,lao,00h,hu,00h,liang,00h,zhi,00h,lao,00h,hu,00h,pao,00h,de,00h,kuai,00hdbpao,00h,de,00h,kuai,00h,yi,00h,zhi,00h,mei,00h,you,00h,yan,00h,jing,00h,yi,00h,zhi,00hdbmei,00h,you,0

31、0h,er,00h,duo,00h,zhen,00h,qi,00h,guai,00h,zhen,00h,qi,00h,guai,00hge3:dbwo,00h,ai,00h,bei,00h,jing,00h,tian,00h,an,00h,men,00h,tian,00h,an,00h简易音乐播放器 16;*延时子程序*delay: mov 30h,#100 ;延长时间等待,键盘消抖d1: mov r5,#200d2: djnz r5,d2 djnz 30h,d1 ret ;*新年好*mu_tab1: db 0feh,25h,04h,0feh,25h,04h db 0feh,25h,06h,0

32、fdh,80h,06h db 0feh,84h,04h,0feh,84h,04h db 0feh,84h,06h,0feh,25h,06h db 0feh,25h,04h,0feh,84h,04h db 0feh,0c0h,04h,0feh,84h,04h db 0feh,98h,04h,0feh,84h,04h db 0feh,57h,06h db 0ffh,0ffh;*两只老虎*mu_tab2: db 0fch,44h,06h,0fch,0ach,06h,0fdh,09h,06h,0fch,44h,06h db 0fch,44h,06h,0fch,0ach,06h,0fdh,09h,06h

33、,0fch,44h,06h db 0fdh,09h,06h,0fdh,34h,06h,0fdh,0a6h,06h db 0fdh,09h,06h,0fdh,34h,06h,0fdh,0a6h,06h db 0fbh,04h,04h,0fdh,0c8h,04h,0fbh,04h,04h,0fdh,34h,04h db 0fdh,09h,04h,0fch,44h,04h,0fbh,04h,04h,0fdh,0c8h,04h db 0fbh,04h,04h,0fdh,34h,04h,0fdh,09h,04h,0fch,44h,04h db 0fch,44h,06h,0fdh,0a6h,06h,0fc

34、h,44h,06h db 0fch,44h,06h,0fdh,0a6h,06h,0fch,44h,06h db 0ffh,0ffh;*我爱北京天安门*mu_tab3: db 0fdh,82h,06h,0feh,22h,04h,0fdh,82h,04h,0fdh,34h,04h db 0fdh,09h,04h,0fch,0ach,04h,0fch,44h,06h db 0ffh,0ffh,0ffh,0ffh end简易音乐播放器 17结束语结束语完成情况:第 1 周:熟悉设计题目,查阅中文及收集相关资料;了解单片机技术和电子音乐播放器;第 2 周:完成课程设计报告,完成完成电路仿真和 word 文档。所得收获:课程设计是我们理论联系实际的最好的途径之一,让我们有机会把课本上学到的知识运用到实际生活中。目前单片机在工业检测领域中得到了广泛的应用,在我们平常的生活中也是随处可见,包括我们日常生活中随处可见的交通灯、闹钟等都含有单片机作为一个主要的部件,懂得并熟悉掌握单片机的运用技术是非常有用的。简易音乐播放器 18参考文献参考文献【1】李全力主编. 单片机原理及应用(第 2 版). 高等教育出版社. 2004 年11 月. 1435 225235【2】 王曙霞编著. 单片机试验与实训指导 . 西安电子科技大学出版社 . 2007 年. 134159【3

温馨提示

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

评论

0/150

提交评论