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

下载本文档

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

文档简介

论文题目论文题目:简易音乐播放器 所属系部:所属系部:电子工程系 指导教师:指导教师: 学生姓名:学生姓名: 学学 号号: : 专专 业:业: 电子信息工程技术 题目:题目: 简易音乐播放器 任务与要求:任务与要求:本设计以 mcs-51 系列单片机为核心,采用常用电子器件 设计。 要求最少 8 个按键,每个按键对应一种音调,按下按键发声,松 开按键后声音延迟一段时间后停止,延时时间可以设置,要求最 少 8 个不同音调,至少可以自动播放 3 种音乐,并且带有显示功 能。 时间:时间: 2010 年 12 月 19 日 至 2010年 12 月 31 日 共 2 周 所属系部:所属系部: 电子工程系 学生姓名:学生姓名: 学学 号:号: 专业:专业: 电子信息工程技术 指导教师:指导教师: 潘晶莹 摘要摘要 电子音乐播放器是现代电子科技与音乐结合的产物,是一种新型的播放乐 器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编 程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的 主要内容是用 at89s51 单片机为核心控制元件,设计一个音乐播放器。以单片 机作为主控核心,与键盘、扬声器、显示器等模块组成核心主控制模块,在主 控模块上设有 8 个按键和扬声器。本系统运行稳定,其优点是硬件电路简单, 软件功能完善,控制系统可靠等,具有一定的实用和参考价值。 关键字关键字: at89c51,扬声器,lcd显示器 简易音乐播放器 目目 录录 1 1 前言前言.1 11 系统的功能介绍 1 2 简易音乐播放器原理简易音乐播放器原理.2 2.1 简易音乐播放器原理简易音乐播放器原理2 3 3 简易音乐播放器设计方案简易音乐播放器设计方案3 3.1 单片机时钟电路设计 .3 3.2 单片机复位电路设计 4 3.3 键盘电路设计 4 3.4 lcd 显示部分电路.5 4 系统软件设计系统软件设计.6 4.1 定时器中断服务控制 .6 4.2 主程序的实现 .7 4.3 单片机汇编源程序清单 .8 结束语结束语17 参考文献参考文献18 简易音乐播放器 1 1 1 前言前言 我们生活在一个信息时代,各种电子产品层出不穷,作为一个电子信息专 业的学生,了解这些电子产品的基本用途和设计原理是十分必要的,我们学习 的是电子信息方面的理论知识,而课程设计正是对我们学习的理论的实践与巩 固。本设计主要介绍的是一个用单片机描述的一个具有若干功能的简易电子音 乐播放器。本次设计的目的就是在掌握音乐播放器组成原理理论的基础上,了 解 eda 技术,掌握汇编描述语言的设计方法和思想,通过学习的汇编语言结合 电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就 是基于所学的计算机原理中的时钟分频器和定时器的基础之上的,通过本课程 设计,达到巩固和综合运用单片机原理中的知识,理论联系实际,巩固所学理 论知识,并且提高自己通过所学理论分析、解决实际问题的能力。 1 11 1 系统的系统的功能介绍功能介绍 1 可以演奏出基本的 8 种音调:do、re、mi、fa、so、la、si、高音 do; 2 演奏的同时会以 led 显示出当前的按键,利于培养乐感; 3 可以演奏内置的 3 种歌曲。 4 自动演奏时,lcd 显示播放的曲目序号和演奏的歌曲歌词。使用方法:通过按 下方的 3 个键演奏。 播放器可实现循环播放、上一曲、下一曲等功能,也可以产生包括 “do“、“re“、“me“- 等音阶在内的各种频率声音。将各个音阶连接在一起,便 可组成一支曲子或是演奏一段旋律,操作方便,无须再为找不到适全的音乐芯 片而烦恼。我们知道,声音的频率范围约在几十到几千赫兹,若能利用程序来 控制单片机某个口线的高电平或低电平,则在该口线上就能产生一定频率矩形 波,接上扬声器就能发出一定频率的声音,若能利用延时程序控制 “高” “低”电平的持续时间,就能改变输出频率,从而改变音调。要产生音频 脉冲,只要算出某一音频的周期,然后将此周期除以 2,即半周期的时间,为 单片机的定时时间,然后反复进行半周期定时,每当定时到就将输出脉冲的 i/o 口取反,如此就可以在 i/o 端口上得到此频率的脉冲 简易音乐播放器 2 2 简易音乐播放器原理简易音乐播放器原理 一定频率产生声音,频率高低决定音调。利用单片机输出脉冲信号经放大 后送给喇叭,便可发出声音。本制作中巧妙地利用了单片机的定时器,让定时 器中断一次就对改变喇叭的状态一次,即形成矩形方波,这也是数字电路产生 声音的方法。本作品使用 at89s51 型单片机。 由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率, 这样我们可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对 于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器 t0 来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄 正确即可。 2.1简易音乐播放器原理 高中低音符与单片机计数 t0 相关的计数值如下表所示 音符 频率(hz)简谱码(t 值) 音符 频率(hz)简谱码(t 值) 表 2-1 低 1do 262 63628# 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# 1245 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 简易音乐播放器 3 3 3 简易音乐播放器设计方案简易音乐播放器设计方案 声音的频谱范围约在几十 hz 到几千 hz,利用程序来控制单片机某个口线 不段的输出“高” 、 “低”电平,则在该口线上就能产生一定的频率的方波,将 该方波接上喇叭,就能发出一定的声音,若在利用程序来控制“高” 、 “低”电 平的持续时间,就能改变输出波形的频率,从而改变音调。乐曲中,每一个音 符对应着确定的频率,表 1 给出了 c 调时各音符频率。如果单片机某个口线输 出“高” 、 “低”电平的频率和某个音符的频率一样,那么将口线接上喇叭就可 以发出次音符,如下表所示表 3-1 表 3-1 c 调时各音符频率 音名 1234567 频率 (hz) 523.3587.3659.3698.3784880967.8 3.1 单片机时钟电路设计单片机时钟电路设计 当 mcs-5l 系列单片机的复位引脚 rst(全称 reset)出现 2 个机器周期以上 的高电平时,单片机就执行复位操作。如果 rst 持续为高电平,单片机就处于 循环复位状态。时钟电路如图 3-1 所示。 图 3-1 时钟电路图 简易音乐播放器 4 3.23.2 单片机复位电路设计单片机复位电路设计 本设计采用上电或开关复位要求电源接通后,单片机自动复位,并且在单 片机运行期间,用开关操作也能使单片机复位。上电后,由于电容 c2 的充电和 反相门的作用,使 rst 持续一段时间的高电平。当单片机已在运行当中时,按 下复位键 k 后松开,也能使 rst 为一段时间的高电平,从而实现上电或开关复 位的操作。 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-3 所示。 p0 p1 p2 p3 p5 p4 p6 p7 r10 10k c0 简易音乐播放器 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数据16blk背光源负极 简易音乐播放器 6 4 系统软件设计系统软件设计 4.1 定时器中断服务控制定时器中断服务控制 本设计通过定时器中断产生是单片机在一定的时间产生方波,整个设计的 关键也正是通过该定时器中断服务产生输出不同频率的方波从而来实现个种音 符。这种方法占用 cpu 时间很少,在显示的同时还可以处理其他事务,效率较 高,是通常采用的方法。 定时器其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微 机中最常用、最基本的部件之一。at89c5l 单片机有 2 个 16 位的定时器:定时 器 0(t0)和定时器 1(t1)。其原理图如图 4-1 所示。 图 4-1 定时器原理图 t0 由 2 个定时寄存器 th0 和 tl0 构成,t1 则由 th1 和 tl1 构成,它们都分 别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的 读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器 自动加 l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期 为 12 个时钟振荡周期,所以定时的分辨率是时钟振荡频率的 112。 简易音乐播放器 7 4 4.2 2 主程序的实现主程序的实现 在主程序中首先调用键盘扫描子程序,进行有无键按下的判断,如无键按 下则执行熄灭指示灯、跳回开始位置的命令;如有键按下则扫描出按下的键的 位置再将其值赋给 t im er1l 和 t im er1h,通过其执行点亮指示灯。反复执 行该命令得到不同的值,输出不同的音符。其流程图如图 4-2 所示。 图 4-2 主程序的流程图 start 有按? 将 t1 送初值 开启 t1,点 亮 关闭 t1,熄 灭 无 有 简易音乐播放器 8 4.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 mov p0,#01h ;清屏 call enable mov p0,#38h ;8 位,2 行显示 call enable mov p0,#0ch ;屏显 on,关光标 call enable mov p0,#06h ;计数地址加 1,自动右移 call enable ;* ;开机提示 ;* mov p0,#80h call enable mov dptr,#table0 ;写数据的第一行 call write1 mov p0,#00010000b ;光标左移两位 call enable mov p0,#00010000b 简易音乐播放器 9 call enable call del0 ljmp main ;*写指令 enable: clr rs clr rw setb e call del0 clr e ret ;*写数据 write1: mov r1,#00h ;查表程序,从表头到表尾 a1: mov a,r1 movc a,a+dptr call write2 inc r1 cjne a,#00h,a1 ;未到字符串末尾继续 ret write2: mov p0,a ;直接将数据写入液晶屏 setb rs clr rw setb e call del0 clr e ret del0: mov r4,#020h c0:mov r5,#020h c1: djnz r5,c1 djnz r4,c0 ret ;* table0: db da jia hao,00h ;*内存初始化* 简易音乐播放器 10 initial: mov r3,#08h mov r0,#30h m1: mov r0,#00h inc r0 djnz r3,m1 ret ;*选择按键播放八个音调* main: mov sp,#80h ;初始化堆栈 mov tmod,#11h ;定时器 0 工作方式 0,定时器 1 工作方式 0 setb ea setb et0 ;计数器 0 允许 setb et1 ;计数器 1 允许 start: setb p3.7 ;关蜂鸣器 clr tr0 ;定时器不允许 scan: mov a,p1 ;键盘扫描 cjne a,#0ffh,su_key ;判断键盘按下,跳到 su_key,若未按, 继续扫描 nop ljmp scan su_key: su_key1: jb p1.0,su_key2 ;如果不是第 1 个键按下,转 mov dph,#0fch mov dpl,#44h sjmp play su_key2:jb p1.1,su_key3 ;如果不是第 2 个键按下,转 mov dph,#0fch mov dpl,#0ach sjmp play su_key3:jb p1.2,su_key4 ;如果不是第 3 个键按下,转 mov dph,#0fdh mov dpl,#09h sjmp play su_key4:jb p1.3,su_key5 ;如果不是第 4 个键按下,转 mov dph,#0fdh 简易音乐播放器 11 mov dpl,#34h sjmp play su_key5:jb p1.4,su_key6 ;如果不是第 5 个键按下,转 mov dph,#0fdh mov dpl,#82h sjmp play su_key6: jb p1.5,su_key7 ;如果不是第 6 个键按下,转 mov dph,#0fdh mov dpl,#0c8h sjmp play su_key7: jb p1.6,su_key8 ;如果不是第 7 个键按下,转 mov dph,#0feh mov dpl,#06h sjmp play su_key8:jb p1.7,key1 ;如果不是第 8 个键按下,转 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 judge judge: jb p2.4,start ;按键未按下,则继续扫描,否则,开始放音乐 ;*选择按键播放音乐* key1: jb p2.5,key2 ;第一个键(p2.5)按下,放音音乐 1 mov r2,#00h lcall modd ;歌曲号显示 简易音乐播放器 12 mov dptr,#mu_tab1 ajmp music key2: jb p2.6,key3 ;第二个键(p2.6)按下,放音乐 2 mov r2,#01h lcall modd ;歌曲号显示 mov dptr,#mu_tab2 ajmp music key3: 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 ;允许 t0 中断 mov r7,#00h loop: clr a movc a,a+dptr ;查表取代码 mov r1,a ;定时器高八位存 r1 inc dptr push dph ;保护现场 push dpl geci1: jb p2.5,geci2 ;第一个键(p2.5)按下,显示歌词 1 mov dptr,#ge1 ajmp geci geci2: jb p2.6,geci3 ;第二个键(p2.6)按下,显示歌词 2 mov dptr,#ge2 ajmp geci geci3: jb p2.7,tiaochu ;第三个键(p2.7)按下,显示歌词 3 mov dptr,#ge3 ajmp geci tiaochu :ljmp start geci: lcall qingchu mov p0,#0c0h ;显示的位置 简易音乐播放器 13 call enable xianshi1: 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 ;定时器低八位存 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 next1 next0: clr tr0 ;关闭定时器 next1: clr a inc dptr movc a,a+dptr ;查延时常数 mov r2,a 简易音乐播放器 14 loop1: acall d200 djnz r2,loop1 ;控制延时次数 inc dptr ajmp loop d200: mov r3,#81h ;延时程序 d200b: mov a,#0ffh d200a: dec a jnz d200a dec r3 cjne r3,#00h,d200b ret qingchu: mov a,#00100000b mov p0,#0c0h ;将第二行的第一位置 0 lcall enable lcall write2 mov a,#00100000b;将第二行的第二位置 0 mov p0,#0c1h lcall enable lcall 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,#00100000b ;将第二行的第七位置 0 mov p0,#0c6h lcall enable lcall write2 ;将第二行的第三位置 0 ;* ;定时器 0 中断子程序,定时音乐 ;* t0int: ;中断服务子程序 mov th0,t0th mov tl0,t0tl cpl p2.3 ;反相输出,演示音乐 reti ;* ;显示 ;* modd: mov p0,#8eh lcall enable mov a,r2 mov dptr,#table2 movc a,a+dptr lcall write2 ret table2:db 31h,32h,33h,34h ge1: db xin,00h,nian,00h,hao,00h,ya,00h,xin,00h,nian,00h,hao,00h,ya,00h db zhu,00h,fu,00h,da,00h,jia,00h,xin,00h,nian,00h,hao,00h ge2:dbliang,00h,zhi,00h,lao,00h,hu,00h,liang,00h,zhi,00h,lao,00h,hu,00h,pao,00h, de,00h,kuai,00h dbpao,00h,de,00h,kuai,00h,yi,00h,zhi,00h,mei,00h,you,00h,yan,00h,j ing,00h,yi,00h,zhi,00h dbmei,00h,you,00h,er,00h,duo,00h,zhen,00h,qi,00h,guai,00h,zhen,00h,q i,00h,guai,00h ge3: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,#200 d2: djnz r5,d2 djnz 30h,d1 ret ;*新年好* mu_tab1: db 0feh,25h,04h,0feh,25h,04h db 0feh,25h,06h,0fdh,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,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,0fch,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】楼然苗 李光飞编著. 单片机课程设计指导书. 北京航空航天大学出版社. 3849 【4】 张洪润 张亚凡编著. 单片机原理及应用. 清华大学出版社. 2003 年. 7296 【5】 宋双杰 张玉莲编著. 电子线 cad 技术. 西安电子科技大学出版社 . 2009 年. 3972 元器件清单元器件清单 序号元件名称型号数量备注 1单片机at89c511 2电阻10k22 3电阻1k1

温馨提示

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

评论

0/150

提交评论