基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx

上传人:b****6 文档编号:6083186 上传时间:2023-01-03 格式:DOCX 页数:38 大小:150.38KB
下载 相关 举报
基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx_第1页
第1页 / 共38页
基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx_第2页
第2页 / 共38页
基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx_第3页
第3页 / 共38页
基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx_第4页
第4页 / 共38页
基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx

《基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx》由会员分享,可在线阅读,更多相关《基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx(38页珍藏版)》请在冰豆网上搜索。

基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料.docx

基于51单片机的lcd多功能数字音乐盒设计毕业设计管理资料

 

 

论文题目:

基于51单片机的LCD多功能数字音乐盒设计

学校:

西北民族大学

学院:

电气工程学院

专业班级:

08电气工程及其自动化

(1)班

学号:

P081613316

姓名:

苏军

指导老师:

马慧兰

 

基于51单片机的LCD多功能数字音乐盒设计

摘要:

本设计是应用MCS-51单片机原理和控制理论设计音乐盒演奏控制器的硬件电路,并利用汇编语言进行程序设计。

利用控制单片机内部的定时器来产生不同的频率的方波,驱动喇叭发出不一样的音乐,再通过延迟来控制发音时间的长短。

把乐谱变成相应的定时常数就可以从发音设备中演奏出动听的音乐。

这种控制电路结构简单,可用性高,应运性强,软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。

对单片机和音乐爱好者有不一样的借鉴价值。

关键词:

单片机,汇编语言,音乐盒

Basedon51single-chipLCDmultifunctiondigitalmusicboxdesign

Abstract:

ThisdesignistheapplicationofMCS-51single-chipmicrocomputerprincipleandcontroltheorydesignmusicboxplayhardwarecircuit,anduseassemblylanguagesprogramdesign.Usingsinglechipmicrocomputercontrolinternaltimertoproduceadifferentfrequencyofsquarewave,drivespeakerdifferentmusic,againthroughthedelaytocontrolthelengthoftimethepronunciation.Thescoreintothecorrespondingtimeconstantcanplayoutinpronunciationequipmentfrombeautifulmusic.Thiscontrolcircuitstructureissimple,usabilityishigh,TheTimesthegenderisstrong,softwareprogramtoadapttothewide,fordifferentmusiconlyneedtochangethetimingofcorrespondingconstantcan.TheSCMandmusiclovershavedifferentreferencevalue.

Keywords:

asingle-chipmicrocomputer,assemblylanguage,musicbox

1.2STC89C52RC介绍6

参考文献16

前言

单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:

CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

早期的单片机都是8位或4位的。

其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。

此后在8031上发展出了MCS51系列单片机系统。

基于这一系统的单片机系统直到现在还在广泛使用。

随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。

90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。

随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。

目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。

而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。

单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。

而个人电脑中也会有为数不少的单片机在工作。

汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!

单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲:

一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。

我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!

它主要是作为控制部分的核心部件。

它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。

单片机是靠程序的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!

但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!

只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?

很多高级的语言已经达到了可视化编程的水平为什么不用呢?

原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。

一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!

对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。

单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。

一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。

可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。

不过,这种电脑,通常是指个人计算机,简称PC机。

它由主机、键盘、显示器等组成。

还有一类计算机,大多数人却不怎么熟悉。

这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。

顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。

因为它体积小,通常都藏在被控机械的“肚子”里。

它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。

现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。

各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。

究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。

第一章原理及硬件介绍

1.1基本原理简述

声音是通过振动产生的。

单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。

若改变输出方波的频率,产生的声音随之改变。

通过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就可以产生电子音乐。

音乐的播放选择可以通过按键的输入得以实现。

为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半因此,输出引脚在每个方波周期内要动作两次:

一次升高,一次降低。

即输出引脚的频率是原音频率的两倍。

方波的产生由定时器控制。

定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。

必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。

一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。

另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。

这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。

音乐播放器的基本硬件电路有六部分组成:

单片机、时钟与复位电路、选择按键输入电路、音频发生器、音频放大器和扬声器。

LCD液晶显示屏显示

时钟与复位

电路

单片机

音频发生器

按键输入

歌曲选择电路

 

蜂鸣器

音频放大器

音乐播放器硬件电路设计框图

利用单片机内部定时器/,构成音频发生器,与外置电路组成音频放大器,驱动扬声器输出。

LCD液晶模块以并行方式与微控制器相连,15脚接高电平为并行方式,通过送入指令和数据,可对显示方式和显示内容做出选择。

 

1.2STC89C52RC介绍

STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

1.2.1主要特性

,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.

~(5V单片机)/~(3V单片机)

0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz

 

(32个),复位后为:

P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/,TxD/)直接下载用户程序,数秒即可完成一片

 

即定时器T0、T1、T2

,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒

(UART),还可用定时器软件实现多个UART

-40~+85℃(工业级)/0~75℃(商业级)

1.2.2STC89C52RC的工作模式

◆掉电模式:

典型功耗<,可由外部中断唤醒,中断返回后,继续执行原程序

◆空闲模式:

典型功耗2mA

◆正常工作模式:

典型功耗4Ma~7mA

◆掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备

1.2.3STC89C52RC引脚功能说明

STC89C52RC引脚图

VCC(40引脚):

电源电压

VSS(20引脚):

接地

P0端口(~,39~32引脚):

P0口是一个漏极开路的8位双向I/O口。

作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。

在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。

此时,P0口内部上拉电阻有效。

在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。

验证时,要求外接上拉电阻。

P1端口(~,1~8引脚):

P1口是一个带内部上拉电阻的8位双向I/O口。

P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。

P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(

)。

此外,()和定时器/计数器2的触发输入(),具体参见下表:

在对FlashROM编程和程序校验时,P1接收低8位地址。

表1

引脚号

功能特性

T2(定时器/计数器2外部计数输入),时钟输出

T2EX(定时器/计数器2捕获/重装触发和方向控制)

P2端口(~,21~28引脚):

P2口是一个带内部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。

P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(

)。

在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX@DPTR”指令)时,P2送出高8位地址。

在访问8位地址的外部数据存储器(如执行“MOVX@R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。

在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。

P3端口(~,10~17引脚):

P3是一个带内部上拉电阻的8位双向I/O端口。

P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。

P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(

)。

在对FlashROM编程或程序校验时,P3还接收一些控制信号。

P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:

表2P3口引脚复用功能

引脚号

复用功能

RXD(串行输入口)

TXD(串行输出口)

(外部中断0)

(外部中断1)

T0(定时器0的外部输入)

T1(定时器1的外部输入)

(外部数据存储器写选通)

(外部数据存储器读选通)

RST(9引脚):

复位输入。

当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。

看门狗计时完成后,RST引脚输出96个晶振周期的高电平。

特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。

DISRTO默认状态下,复位高电平有效。

ALE/

(30引脚):

地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

在Flash编程时,此引脚(

)也用作编程输入脉冲。

在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。

然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。

如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。

这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。

否则,ALE将被微弱拉高。

这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

(29引脚):

外部程序存储器选通信号(

)是外部程序存储器选通信号。

当AT89C51RC从外部程序存储器执行外部代码时,

在每个机器周期被激活两次,而访问外部数据存储器时,

将不被激活。

/VPP(31引脚):

访问外部程序存储器控制信号。

为使能从0000H到FFFFH的外部程序存储器读取指令,

必须接GND。

注意加密方式1时,

将内部锁定位RESET。

为了执行内部程序指令,

应该接VCC。

在Flash编程期间,

也接收12伏VPP电压。

XTAL1(19引脚):

振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2(18引脚):

振荡器反相放大器的输入端。

特殊功能寄存器

在STC89C52RC片内存储器中,80H~FFH共128个单元位特殊功能寄存器(SFR),SFR的地址空间如下表1所示。

并非所有的地址都被定义,从80H~FFH共128个字节只有一部分被定义。

还有相当一部分没有定义。

对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。

不应将“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。

STC89C52RC除了有定时器/计数器0和定时器/计数器1之外,还增加了一个一个定时器/(见表2)和T2MOD(见表4)。

定时器2是一个16位定时/计数器。

通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器(特殊功能寄存器T2CON的描述如表2所列)。

定时器2有3种操作模式:

捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON中的位进行选择(如表3所列)

表3特殊功能寄存器T2CON的描述

表3定时/计数器2控制寄存器各位功能说明

符号

功能

TF2

定时器2溢出标志。

定时器2溢出时,又由硬件置位,=1或TCLK=1时,定时器2溢出,不对TF2置位。

 

EXF2

定时器2外部标志。

当EXEN2=1,且当T2EX引脚上出现负跳变而出现捕获或重装载时,EXF2置位,申请中断。

此时如果允许定时器2中断,CPU将响应中断,执行定时器2中断服务程序,EXF2必须由软件清除。

当定时器2工作在向上或向下计数方式时(DCEN=1),EXF2不能激活中断。

RCLK

接收时钟允许。

RCLK=1时,用定时器2溢出脉冲作为串口(工作于工作方式1或3时)的接收时钟,RCLK=0,用定时器1的溢出脉冲作为接收脉冲

TCLK

发送时钟允许。

TCLK=1时,用定时器2溢出脉冲作为串口(工作于工作方式1或3时)的发送时钟,TCLK=0,用定时器1的溢出脉冲作为发送脉冲

EXEN2

定时器2外部允许标志。

当EXEN2=1时,如果定时器2未用于作串行口的波特率发生器,在T2EX端口出现负跳变脉冲时,激活定时器2捕获或者重装载。

EXEN2=0时,T2EX端的外部信号无效。

TR2

定时器2启动/停止控制位。

TR2=1时,启动定时器2.

C/

定时器2定时方式或计数方式控制位。

C/

=0时,选择定时方式,C/

=1时,选择对外部事件技术方式(下降沿触发)。

 

CP/

捕获/重装载选择。

CP/

=1时,如EXEN2=1,且T2EX端出现负跳变脉冲时发生捕获操作。

CP/

=1时,若定时器2溢出或EXEN2=1条件下,T2EX端出现负跳变脉冲,都会出现自动重装载操作。

当RCLK=1或TCLK=1时,该位无效,在定时器2溢出时强制其自动重装载。

 

表4定时器2工作方式

RCLK+TCLK

CP/

TR2

模式

0

0

1

16位自动重装

0

1

1

16位捕获

1

X

1

波特率发生器

X

X

0

(关闭)

1.3LCD显示

字符型LCD是一种通常用5*7点阵图形来显示字符的液晶显示器。

能显示的每个字符都有一个代码,代码对应字符的点阵图形数据由字符发生器产生,通过驱动电路后在LCD显示出字符。

字符型LCD有11条操作指令。

如图2-2所示。

图2-2文字型LCD(16×2)

字符型LCD由14个引脚组成功能如表3-1所示。

表3-1字符型LCD引脚功能表

引脚号

符号

状态

功能

1

Vs

电源地

2

Vdd

正5V逻辑电源

3

Vo

液晶驱动电源

4

RS

输入

寄存器选择:

5

R/W

输入

读、写操作选择

6

E

输入

使能信号

7至14

DB0—DB7

三态

数据总线

*15

E1

输入

MDLS40466上两行使能信号

*16

E2

输入

MDLS40466下两行使能信号

LCD可以同步显示歌曲的汉语拼音和播放时间。

第二章软件仿真及测试

开机第一首歌

开机第一首歌为《济公》

 

下一曲

下一曲为《断桥残雪》

上一曲

上一曲为《爱情买卖》

一共有十一首歌曲可以播放《爱情买卖》、《济公》、《森林狂想曲》、《断桥残雪》、《青花瓷》、《茉莉花》、《猪八戒背媳妇》、《刀剑如梦》、《两只蝴蝶》、《生日快乐》、《新年好》。

硬件电路图

仿真电路图

 

元件清单

1、9X15cm万用板1片

2、STC89C52单片机+IC座1套

3、1602液晶显示屏1个

4、按键3只

5、12M晶振1只

6、33P瓷片电容2只

8、DC电源座1只

9、开关1只

10、、电阻1只

11、精密可调电位器1只

12、单排座1条

13、单排针1条

14、蜂鸣器1只

15、排阻10K1只

16、SS8550三极管1只

17、10K电阻1只

18、22u电解电容1只

19、USB电源线1条

20、导线若干

 

参考文献

【1】蔡朝洋.单片机控制实习与专题制作[M]北京航空航天大学出版社,2006

【2】林志琦.单片机原理接口及应用(C语言版)[M]北京:

中国水利水电出版社,2007

【3】李朝青.单片机原理及接口技术(第3版)[M]北京航空航天大学出版社,2005

【4】李群芳,等.单片微型计算机与接口技术[M]电子工业出版社,2001

【5】肖洪兵,等.跟我学单片机[M]北京航空航天大学出版社,2002

【6】[M]电子工业出版社,2007

【7】张迎新,等.单片机初级教程[M]北京航空航天大学出版社,1999

【8】马忠梅,籍顺心,张凯,[M]北京航空航天大学出版社,2003

附录一源程序

#include<>

#include<>

#defineucharunsignedchar

#defineuintunsignedint

ucharm,n;

uchari,timecount=0,timesec=0,timemin=0,timecheck=0;

charr0=2;

sbitbeepIO=P2^1;

typedefunsignedcharBYTE;

typedefunsignedintWORD;

typedefbitBOOL;

sbitrs=P1^6;//

sbitrw=P1^7;//RW

sbitep=P2^7;//LODE

sbitpausekey=P1^1;

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

当前位置:首页 > 自然科学

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

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