单片机数字音乐盒设计.docx

上传人:b****8 文档编号:30470311 上传时间:2023-08-15 格式:DOCX 页数:44 大小:194.33KB
下载 相关 举报
单片机数字音乐盒设计.docx_第1页
第1页 / 共44页
单片机数字音乐盒设计.docx_第2页
第2页 / 共44页
单片机数字音乐盒设计.docx_第3页
第3页 / 共44页
单片机数字音乐盒设计.docx_第4页
第4页 / 共44页
单片机数字音乐盒设计.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

单片机数字音乐盒设计.docx

《单片机数字音乐盒设计.docx》由会员分享,可在线阅读,更多相关《单片机数字音乐盒设计.docx(44页珍藏版)》请在冰豆网上搜索。

单片机数字音乐盒设计.docx

单片机数字音乐盒设计

单片机数字音乐盒设计

摘要:

本设计是采用单片机为核心设计的数字音乐播放器。

它可以实现音乐的播放,可以通过功能键来选择乐曲,播放或暂停,上一曲或下一曲,并可以通过LCD屏幕显示正在播放的歌曲的序号,以及播放时间。

开机时有英文欢迎提示字符。

本音乐播放器可以播放十首歌曲。

主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIlC51进行编译,用Proteus软件来仿真。

关键词:

数字音乐盒;单片机;智能化

DigitalMusicBoxDesign

CHENYINGInstructor:

HUKEYONG

Abstract:

Thisdesignisusingmicrocontrollerasthecoredesignofthedigitalmusicplayer.Itcanplaymusic.Itcanfunctionkeystoselectasong,playorpauseononeorthenextone.andtheserialnumberofthesongthatisplaying,aswellasplaytimecanbedisplayedthroughtheLCDscreen.Englishbootwelcomepromptcharacters.Themusicplayercanplaytensongs.

ThemasterchipisAT89C51,assemblylanguageisprogramming,programmingbyKEIlC51compile,thenusingProteussoftwaretosimulate.

Keywords:

DigitalMusicBox,SCM,Intelligent

 

1引言1

1.1单片机总体功能简介1

2系统设计1

2.1总体设计方案1

2.2系统硬件设计2

2.3主要元器件介绍4

2.3.1AT89C51单片机4

2.3.2LM016L液晶显示器5

2.4proteus软件介绍6

3软件设计及仿真7

3.1程序流程7

3.2系统初始化程序设计7

3.3音调的确定8

3.4项目仿真9

总结10

参考文献:

10

附录一11

附录二11

 

1引言

目前,各种传感器、变送器、控制仪表已经普遍采用单片机应用系统。

它测量、处理、控制功能于一单片机是单片微型机的简称,故又称为微控制器MCU。

通常由单块集成电路芯片组成,部含有计算机的基本功能部件:

中央处理器CPU,存储器和I/O接口电路等。

因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

1.1单片机总体功能简介

单片机是在工业测控需要背景下而产生的,在一个应用系统中。

按照测控系统的特点和要求,单片机的应用可分为单机应用和多机应用两大类。

我们这次要完成的单片机课程设计就是它的单机应用,下面介绍一下单片机应用领域的主要容。

(1)智能产品

单片机与传统机械产品相结合,使传统机械产品结构简化,控制智能化,购成新一代机电一体化产品。

目前,利用单片机构成的智能产品已广泛应用于家用电器、办公设备、数控机床、纺织机械、工业设备等行业。

(2)智能仪表

目前,各种传感器、变送器、控制仪表已经普遍采用单片机应用系统。

它测量、处理、控制功能于一体,具有各种智能化功能,如存储、数据处理、查找、判断、联网和语音等功能。

单片机构成的智能仪表,能使仪表具有数字化、智能化、多功能化、综合化等优点。

(3)测控技术

用于单片机结构的各种工业控制系统中的数据采集系统具有工作稳定可靠、抗干扰能力强的优点。

(4)智能接口

在计算机系统,特别是较大型的工业测控系统中,除通用外部设备外,还由许多外部通信、采集、多路分配管理、驱动控制等接口。

这些外部设备与接口如果完全由主机进行管理,势必会造成主机负担过重,运行速度降低,接口的管理水平也不可能提高。

如果用单片机进行接口的控制与管理,单片机与主机可并行加工处理,可以大量降低接口的通信密度,极大的提高了接口控制广利水平。

在一些通用计算机外部设备上,以实现了单片机的键盘管理、打印机控制、硬盘驱动控制等。

2系统设计

2.1总体设计方案

(1)利用AT89C51单片机的I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。

(2)LCD液晶显示歌曲的序号、播放时间,开机时显示英文欢迎字符。

(3)用键盘控制10首歌曲的播放,并设置开机键、暂停键、上一曲、下一曲控制键。

2.2系统硬件设计

硬件功能模块划分:

单片机最小系统模块、按键模块、蜂鸣器电路模块、LCD液晶显示屏模块。

系统结构框图如图2.1所示

图2.1数字音乐盒系统结构框图

(1)单片机最小系统模块

最小系统模块包括单片机、复位电路、晶振电路以及电源电路。

如图2.2所示

图2.2单片机最小系统

(2)按键模块

选用4X4矩阵键盘,如图2.3所示,1~4端口扫描行,5~8端口扫描列

图2.3按键模块

4x4键盘构成与键盘对应功能如图2.4所示

图2.4键盘对应功能图

(3)蜂鸣器电路模块

蜂鸣器电路模块由单片机接口外接两个1K电阻、一个100欧电阻和一个NPN型三极管来驱动扬声器。

其主要任务是输出大信号和大功率,对音频信号有效不失真的进行放大以推动扬声器发出声音。

如图2.5所示

2.5蜂鸣器电路

(4)LCD液晶显示屏模块

LCD液晶显示屏如图2.6所示,D0~D7为传送数据信息引脚,E为使能信号引脚,而当RS为1,R/W为0时,设定为将数据信息写入LCD的数据暂存区

图2.6LCD液晶显示屏模块

2.3主要元器件介绍

2.3.1AT89C51单片机

本系统采用的是51系列的AT89C51单片机。

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图2.7为AT89C51单片机的管脚图。

图2.7AT89C51单片机管脚图

VCC:

正电源端

GND:

单片机的接地端

XTAL1/XTAL2:

片振荡电路输入/输出端,两端跨接晶体或瓷谐振器,与单片机部反相器构成稳定的自激振荡器。

发出的脉冲直接送入片定的控制部件

RESET:

复位端

EA/VPP:

寻址外部ROM控制端/编程电源输入端。

ALE/PROG:

地址锁存允许/编程脉冲输入端。

PSEN:

寻址外部程序存储器,选通外部EPROM的端口(OE)。

P0.0~P0.7P1.0~P1.7P2.0~P2.7:

准双向I/O口。

P3.0~P3.7:

具有特定的第二功能(准双向I/O口)。

2.3.2LM016L液晶显示器

LM016L液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。

IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160种和5*10点阵字符32种。

图2.8为LM016L液晶显示屏的引脚图

图2.8LM016L液晶显示屏引脚图

VSS:

一般接地

VCC:

接电源(+5V)

V0:

液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

RS:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

R/W:

R/W为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

E:

E(或EN)端为使能(enable)端,下降沿使能。

DB0~DB7:

底4位三态、双向数据总线0~6位

RS、R/W寄存器选择控制如表2.1所示:

表2.1RS、R/W寄存器选择控制表

RS

R/W

操作说明

0

0

写入指令寄存器(清除屏等)

0

1

读busyflag(DB7),以及读取位址计数器(DB0~DB6)值

1

0

写入数据寄存器(显示各字型等)

1

1

从数据寄存器读取数据

2.4proteus软件介绍

Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。

因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。

对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

运行proteus 的ISIS 程序后,进入该仿真软件的主界面。

在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。

通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Definecode generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/removesource files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。

Proteus 软件所提供的元件资源Proteus 软件所提供了30 多个元件库,数千种元件。

元件涉及到数字和模拟、交流和直流等。

3软件设计及仿真

3.1程序流程

先从主程序开始,接着初始化变量及LCD接口,使LCD进入了开机状态,等待选择按键,包括播放键,暂停键,停止键。

键盘采用动态扫描方式,每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。

如有键按下,则根据读入口的值选择显示值并送至显示值寄存单元,判断键值;启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定的频率脉冲,驱动蜂鸣器,放出声音;同时启动定时器T1,计算音乐的播放时间,并且启动LCD,在LCD上显示序号和播放时间。

程序流程图如图3.1所示

图3.1主程序流程图和LCD显示流程图

3.2系统初始化程序设计

RSBITP2.0;引脚定义,定义液晶显示端口标号

RWBITP2.1

EBITP2.2

L50MSEQU60H;工作存定义

L1MSEQU61H

L250MSEQU62H

SECEQU65H

MINEQU64H

HOUEQU63H

ORG0000H

LJMPMAIN

ORG000BH;定时器T0溢出中断入口地址

LJMPTT0

ORG001BH;定时器T1溢出中断入口地址

LJMPT1INT

ORG1000H

MAIN:

;液晶初始化

MOVSP,#70H

MOVP0,#01H;清屏

CALLDISPLAY

MOVP0,#38H;8位,2行显示

LCALLDISPLAY

MOVP0,#0FH;屏显on,光标on,闪烁on

LCALLDISPLAY

MOVP0,#06H;计数地址加1,显示幕on

LCALLDISPLAY

LCALLINITIL;存初始化

INITIL:

MOVR3,#08H

MOVR0,#30H

3.3音调的确定

不同音高的乐音是用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频率(266Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294Hz)的一倍。

要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。

利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

利用AT89S52的部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。

此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。

C调各音符频率与计数值T的值如表3.1所示:

表3.1C调音符频率与计数值T

低音

频率

T

参数

中音

频率

T

参数

高音

频率

T

参数

Do

262

1908

229

Do

523

956

115

Do

1046

57

57

Do﹟

277

1805

217

Do﹟

554

903

108

Do﹟

1109

54

54

Re

294

1701

204

Re

587

852

102

Re

1175

51

51

Re﹟

311

1608

193

Re﹟

622

804

97

Re﹟

1245

48

48

Mi

330

1515

182

Mi

659

759

91

Mi

1318

45

45

Fa

349

1433

172

Fa

698

716

86

Fa

1397

43

43

Fa﹟

370

1351

162

Fa﹟

740

676

81

Fa﹟

1480

41

41

So

392

1276

153

So

784

638

77

So

1568

38

38

So﹟

415

1205

145

So﹟

831

602

72

So﹟

1661

36

36

La

440

1136

136

La

880

568

68

La

1760

34

34

La﹟

464

1078

129

La﹟

932

536

64

La﹟

1865

32

32

Si

494

1012

121

Si

988

506

61

Si

1976

30

30

 

3.4项目仿真

使用keil软件进行编译,生成hex文件。

导入protus软件进行仿真。

结果如下图3.2

(a)按下开机键(b)按下第三首

图3.2仿真结果

按下一曲、上一曲、暂停等功能键,均能实现。

总结

此次设计的整个过程中,出现了各种小问题,例如因为代码错误某一首歌无法播放,我通过查找资料重新修改了音乐代码,解决了这个问题。

虽然设计结果不是很完美,但是,在这整个设计期间,使我学到了很多在这之前没有学到的知识、技能。

使我把大学期间所学到的知识进行了一个总结和复习,也使我对所学的知识有了进一步的思考。

也让我从另一个方面认识了我所学专业的重要性。

脚踏实地,认真严谨,实事的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。

我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。

参考文献:

[1]王为青,邱文勋.《51单片机应用开发案例精选》人民邮政,2007.

[2]《单片机基础》广第朱月秀王秀山编航空航天大学,2001.

[3]居义.单片机课程设计指导.清华大学,2009.44-61页.

[4]骏莲.倪云峰.单片机原理与应用基础.清华大学.2009

 

附录一

仿真电路图如下:

附录图1仿真电路图

附录二

以下是以下是十首歌音乐播放器的单片机控制源程序:

RSBITP2.0;引脚定义,定义液晶显示端口标号

RWBITP2.1

EBITP2.2

L50MSEQU60H;工作存定义

L1MSEQU61H

L250MSEQU62H

SECEQU65H

MINEQU64H

HOUEQU63H

org0000h

ljmpmain

ORG000BH;定时器T0溢出中断入口地址

LJMPTT0

ORG001BH;定时器T1溢出中断入口地址

LJMPT1INT

org1000h

main:

;液晶初始化

MOVSP,#70H

MOVP0,#01H;清屏

CALLDISPLAY

MOVP0,#38H;8位,2行显示

lCALLDISPLAY

MOVP0FH;屏显on,光标on,闪烁on

lCALLDISPLAY

MOVP0,#06H;计数地址加1,显示幕on

lCALLDISPLAY

lcallinitil;存初始化

WAIT:

lcallkey;键盘扫描是否有键按下

lcallmodd

ljmpWAIT;若无则等待

key:

nop

nop

lcallks

jnzk1;有按键转到K1

lcallkaiji

lcallSOP

xn:

ljmpkey

k1:

lcallmodd

lcallmodd

lcallks

jnzk2

ljmpkey

k2:

movR2,#0feh;读键盘

movR4#00h

k3:

movA,R2

movP1,A

movA,P1

JBACC.4,L1;为1跳转,第一行无按键

mova,#00h

ljmplk

L1:

jbacc.5,L2

mova,#04h

ljmplk

L2:

jbacc.6,L3

mova,#08h

ljmplk

L3:

jbacc.7,next1

mova,#0ch

lk:

adda,R4

pushacc

k4:

lcalldelay1;若同时有其他按键,则等待

lcallks

jnzk4

movr3,#07h

clra

movr0,#30h

movr1,#31h

mm1:

mova,r1

movr0,a

incr0

incr1

djnzr3,mm1

popacc

movr0,a

RET

next1:

incR4;------列扫描

mova,R2

JNBacc.3,n2

ljmpn1

n2:

ljmpkey

n1:

rla

movR2,a

ljmpk3

ks:

mova,#0f0h;判断P1口

movP1,a

nop

nop

mova,P1

cpla

anla,#0f0h

RET

DELAY1:

SETBRS0

dl:

movR5,#0ah

dl2:

movR6,#63

dl3:

nop

nop

djnzR6,dl3

djnzR5,dl2

CLRRS0

RET

initil:

;30H-37H初值为0

movr3,#08h

movr0,#30h

m1:

movr0,#00h

incr0

djnzr3,m1

RET

modd:

;显示

MOVP0,#8EH

lCALLDISPLAY

movA,37H

movDPTR,#TABLE3

MOVCA,A+DPTR

lCALLWRITE2

RET

kaiji:

;开机提示字

mova,37h

cjnea,#0fh,DFF

MOVP0,#80H;设光标地址

lCALLDISPLAY

MOVDPTR,#TABLE1;写数据

lCALLWRITE1

DFF:

RET

;按键值播放歌曲

SOP:

mova,37h

cjnea,#01h,A11

LCALLMODD

MOV52H,#HIGHTABLE10

MOV53H,#LOWTABLE10

LCALLINITILE2

lcallMAIN0

A11:

CJNEA,#02H,A22

LCALLMODD

MOV52H,#HIGHTABLE20

MOV53H,#LOWTABLE20

LCALLINITILE2

lcallMAIN0

A22:

CJNEA,#03H,A33

LCALLMODD

MOV52H,#HIGHTABLE30

MOV53H,#LOWTABLE30

LCALLINITILE2

lcallMAIN0

A33:

CJNEA,#04H,A44

LCALLMODD

MOV52H,#HIGHTABLE40

MOV53H,#LOWTABLE40

LCALLINITILE2

lcallMAIN0

A44:

CJNEA,#05H,A55

LCALLMODD

MOV52H,#HIGHTABLE50

MOV53H,#LOWTABLE50

LCALLINITILE2

lcallMAIN0

A55:

CJNEA,#06H,A66

LCALLMODD

MOV52H,#HIGHTABLE60

MOV53H,#LOWTABLE60

LCALLINITILE2

lcallMAIN0

A66:

CJNE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1