基于单片机的自动音乐播放器的方案设计书17107.docx

上传人:b****1 文档编号:1212926 上传时间:2023-04-30 格式:DOCX 页数:22 大小:331.51KB
下载 相关 举报
基于单片机的自动音乐播放器的方案设计书17107.docx_第1页
第1页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第2页
第2页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第3页
第3页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第4页
第4页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第5页
第5页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第6页
第6页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第7页
第7页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第8页
第8页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第9页
第9页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第10页
第10页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第11页
第11页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第12页
第12页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第13页
第13页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第14页
第14页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第15页
第15页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第16页
第16页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第17页
第17页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第18页
第18页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第19页
第19页 / 共22页
基于单片机的自动音乐播放器的方案设计书17107.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的自动音乐播放器的方案设计书17107.docx

《基于单片机的自动音乐播放器的方案设计书17107.docx》由会员分享,可在线阅读,更多相关《基于单片机的自动音乐播放器的方案设计书17107.docx(22页珍藏版)》请在冰点文库上搜索。

基于单片机的自动音乐播放器的方案设计书17107.docx

基于单片机的自动音乐播放器的方案设计书17107

摘要

为方便人们的日常生活,优化学校、机关等单位的计时系统,采用以单片机为基础设计了一种的自动音乐播放器。

本设计利用单片机89C58RD+的定时和计数功能,来完成时间的显示和定时功能。

并且,通过对定时器初值的设定来产生不同频率的声音,利用定时器中断来完成对音乐节拍长度的控制。

通过LM386N1音频功率放大器,将单片机输出的信号放大,再通过喇叭播放乐曲。

通过MAX232型芯片,可以转换PC机上的电压和单片机的电源电压,再通过串口接入PC机,这样就能从PC机上将用C语言编写的程序下载到单片机上。

最后可在数码管上显示时间,当定时时间到后,喇叭自动播放一段连续的音乐。

此设计摆脱了传统闹钟的刺耳声音,取而代之的是美妙的音乐,能为人们的日常生活提供准确的计时,且成本低廉,值得推广。

关键词:

单片机;自动音乐播放;音频转换;时间显示;LM386N1音频功率放大器

2.1音乐编程原理及其流程图

2.1.1声音的产生

声音是音频振动的结果,振动的频率高则为高音,频率低则为低音。

音频范围为20HZ-200KHZ之间,而人类耳朵比较容易辨识的声音大概是200HZ-20KHZ。

一般音响电路是以正弦波信号驱动喇叭,产生悦耳的音乐的;在数字电路里,则是以脉冲信号驱动喇叭以产生声音。

同样的频率,脉冲信号或正弦信号产生的音效,对于人类的耳朵来说很难有所区别。

若用单片机产生声音,可利用程序产生频率,送到输入/输出端口,例如P1.0,再从该点连接到喇叭的驱动电路,即可驱动喇叭。

2.1.2音频转换原理

若要产生音频脉冲,只要算出某一音频的周期,再将此周期除以2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。

就可在P1.0引脚上得到此频率的脉冲。

利用单片机的内部定时器使其工作计数器模式(MODEL1)下,改变其计数值TH0及TL0以产生不同频率的方法产生不同音阶。

例如,频率为523HZ,其周期T=1/523=1912us,因此只要令计时器计时956us/1us=956,每计数956次时将I/O反相,就可得到中音DO(523HZ)。

计数脉冲值与频率的关系式是:

N=F1/2/F2(式3-2-1)

式3-2-1中,N是计数值;F1是机器频率(晶体振荡器为12MHZ时,其频率为1MHZ);F2为想要产生的声音频率。

其计数初值T的求法如下:

T=65536–N=65536-F1/2/F2(式3-2-2)

本次设计采用16位定时方式,晶体振荡器频率为6MHZ,根据式3-2-1和式3-2-2可以计算出各音乐频率的计数器初值,再将十进制的计数器初值转换为四位16进制,将其制表写入程序中,通过查表装入要求的初值即可。

音阶与频率的对应关系如表3-1所示。

表2-1

音符

DO

RE

ME

FA

SO

LA

SI

低音简谱码

1

2

3

4

5

6

7

频率/Hz

523

587

659

698

784

880

987

高音简谱码

1

2

3

4

5

6

7

频率/Hz

1046

1174

1318

1396

1567

1760

1975

2.1.3节拍的产生

音阶的频率是固定的,而节拍有快有慢,拍子越短节奏越快,拍子越长节奏越慢。

控制发音的时间有两种方法:

调用延时子程序或采用定时器中断。

本次设计采用的是定时器终端方式。

首先在整首乐曲中找出最短的拍子,一般为1/4拍,拍子的时间约为0.125s。

然后以1/4拍为基准,然后设定每0.125s产生一次中断,其定时器值为125000,定时常数为08F3H。

若采用模式2,定时器值太小,不是很好用。

所以采用模式1,将定时器值设为62500,即0CDCH,则只需要执行2次定时器中断就可以产生1/4拍的时间长度。

同样,若要产生其它的拍子(如1/2拍,3/4拍……),只需要定时器中断N次,产生N*0.125s定时,使其满足各个节拍的时间长度即可。

设计的程序按如下方法编写:

(1)将音符代码装入8位字节高4位,节拍代码装入低4位,组成一个字节,以此类推。

将整段乐曲转换成一定长度的编码表。

具体编程方法如下:

1.首先,定义toneh[]和tonel[]两个数组,将各个音乐频率的定时器初值的16进制数的高8位装入toneh[],低8位装入tonel[]。

2.利用单片机的定时器中断,将toneh[]和tonel[]的数据分别装入TH0和TL0,并且,收到信号P1.0就反相。

voidtimer0(void)interrupt1using1

{

P1_0=!

P1_0。

TH0=toneh[rti]。

TL0=tonel[rti]。

}

3.利用定时器1控制音乐节拍的时间长度,将上文所述的定时器初值装入定时器1。

voidtimer1(void)interrupt3using2

{

TH1=0x0c。

TL1=0xdc。

m++。

}

(2)在程序执行时顺序查此表,取出音符代码,查频率表,置入T/C口,取出节拍代码,供定时器使用,启动后即可发出声音。

2.1.4音频转换流程图

设计的软件流程如图2-2所示。

程序开始运行时先对单片机进行初始化,其中包括定时器及其工作方式的选择、外部中断设定、定时器初值的设定。

利用单片机,通过软件的方式产生所需要的音乐频率,并将收到的信号与音频编码表进行对比。

若信号在编码表中,则将该频率的定时器初值写入定时器中,并读取频率的音阶,再从单片机的P1.0口输出,经过音频放大器驱动喇叭发出声音,利用驱动喇叭演示程序即可控制音乐的节拍。

若信号不在编码表中,则返到初始化。

2.2时间显示程序设计

2.2.1设计思路

对于时间程序的设计,主要依靠单片机内部定时器的计数功能实现。

时钟由秒针、分针和时针组成,在程序中分别由sdata,mdata,hdata表示各单位的数据。

首先对sdata,mdata,hdata分别设定一个初值,其中sdata设为0,表示秒针初始为0。

然后利用定时器对秒针计数,当计数值达到1秒的时间后产生定时器中断,sdata的数据就加1。

由于本次设计采用的晶振频率为6MHz,所以定时器取值为2500。

将hdata的数据装入第一和第二个数码管,将mdata的数据装入第三和第四个数码管。

当sdata的数据为59时,若此时再来一个定时器中断,则秒针重新归零,而分针就加1。

同样,分针和时针的进位也是同一道理。

当设定的闹钟时间一到,程序即转入音频程序,驱动喇叭放出音乐。

2.2.2时钟程序流程图

时钟程序流程图如图2-3所示。

(应有简单的文字叙述或解释)

3硬件电路的设计

3.1硬件流程模块

设计的硬件流程模块如图3-1所示。

首先,PC机通过串口及MAX232芯片将程序下载到单片机中,其中包括把一个个的单音写入单片机的ROM存储器中,程序运行时再将音乐数据按顺序读出,利用单片机的定时器中断控制音乐节拍的长度,这样就能形成一段乐曲。

在单片机P1.0口接入音频放大电路,将单片机输出的信号放大,再通过喇叭播放音乐。

单片机P2口接4位共阴LED数码管,并外接1K欧的排阻,利用单片机内部的定

时器中断控制时间程序,然后在数码管上显示出时间。

3.2模块电路的设计

3.2.189C58RD+型单片机介绍

89C58RD+是一种带32KB闪烁可编程/可擦除制度存储器(EPEROM-FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS的8位微处理器。

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

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

并且,比起跟它同种类型的89C51,它具有更大的Flash存储器,可下载很大容量的程序代码,因此功能更加强大,应用范围更广泛。

89C58RD+有40个引脚,32个外部双向输入/输出(I/O)端口,9个中断源,内含2个外中断口,3个16位可编程定时计数器,可编程UART串行通信口,SPI串行口,89C58RD+可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

89C58RD+有PDIP、TQFP及PLCC等三种封装形式,以适应不同应用系统的需求。

89C58RD+管脚如图3-2所示,其中

(1)时钟引脚

XTAL1:

接外部晶体的一个引脚。

在单片机内部,它是构成片内振荡器的反相放大器的输入端。

当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发声器的输入端。

XTAL2:

接外部晶体的另一个引脚。

在单片机内部,它是构成内部振荡器的反相放大器的输出端。

当采用外部振荡器时,此引脚应悬浮不连接。

注意:

如果采用片内的振荡电路,要在单片机的引脚XTAL1和XTAL2之间连接一个石英晶体或陶瓷谐振器,并接两个电容到地。

(2)控制线或其他电源的复位引脚

RST:

复位输入端。

ALE/

当访问外部寄存器时,地址锁存允许的输出电平用于锁存地址的低位字节。

在Flash编程期间,此管脚用于输入编程脉冲。

在平时,ALE以不变的频率周期输出正脉冲信号,次频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如果禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行外部执行状态ALE禁止,置位无效。

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

在有外部程序存储器取指令期间,每个机器周期两次

有效。

但在访问外部数据存储器时,这两次有效的

信号将不出现。

/Vpp:

保持低电平时,则在此期间访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意要加密方式1时,

将内部锁定为RESET;当

断保持高电平时,此间访问内部程序存储器。

在Flash编程期间,此管脚也用于施加12V编程电源(Vpp)。

(3)输入/输出引脚

P0口:

P0口为一个8位漏极开路双向I/O口,每脚可吸收8个TTL门电流。

当P1口的管脚第一次写“1”时,被定义为高阻输入。

P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在Flash编程时,P0口作为原码输入口,当Flash进行校验时,P0口输出原码,此时,P0口外部必须被拉高。

P1口:

P1口为一个内部提供上拉电阻的8位双向I/O,P1口缓冲器能接收输出4个TTL门电流。

P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在Flash编程和校验时,P1口为第八位地址接收。

P2口:

P2口为一个内部提供上拉电阻的8位双向I/O,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高。

且作为输入。

并因此作为输入时,P2口的管脚被外部拉底,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部8位地址数据校验时,P2口输出其特殊功能起存器的内容。

P2口在Flash编程和校验时,接收高8位地址信号和控制信号。

P3口:

P3口为一个内部提供上拉电阻的8位双向I/O,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为一些特殊功能口,如表2-1所示。

表2-1

管脚

备选功能

P3.0

RXD

串行输入口

P3.1

TXD

串行输出口

P3.2

外部中断0

P3.3

外部中断1

P3.4

T0

计时器0外部输入

P3.5

T1

计数器1外部输入

P3.6

外部数据存储器写选通

P3.7

外部数据存储器读选通

3.2.2LM386N1及外围电路的设计

LM386N1乃音频功率放大器,主要应用于低压消费类产品。

为使外围元件最少,电压增益内置为20。

但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。

输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,加之封装形式有塑封8引线双列直插式和贴片式,使LM386N1具有静态功耗低(约为4mA),可用电池供电;工作电压范围宽(4-12Vor5-18V);外围元件少等特点。

LM386N1管脚示意图如图3-3。

LM386N外围电路如图3-4所示意。

其中R3为正相输入电阻,取值为10K;R4、R5是分压电阻,取值分别为0.5K和0.01K;C9、C10是旁路电容,取值分别为0.1uf、10uf;C11是一个耦合电容,取值为47uf;C12是旁路电容,取值为0.047uf。

3.2.3串行通信和MAX232芯片

在单片机和PC机之间,要通过MAX232芯片进行电平转换,MAX232芯片主要是完成TTL←→EIA双向电平转换。

EIA-RS-232C与TTL转换:

EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。

因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。

实现这种变换的方法可用分立元件,也可用集成电路芯片。

目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。

MAX232芯片可完成TTL←→EIA双向电平转换。

MAX232电路具有的特点是:

单5V电源工作;两个驱动器及两个接收器;±30V输入电平;低电源电流(典型值是8mA);符合甚至优于ANSII标准EIA/TIA-232-E及ITU推荐标准V.28。

MAX232的外围电路如图2-4所示。

MAX232的13、14脚(Rli、Tlo)分别接串口的数据发送端、数据输出端,11、12脚(Rlo、Tli)分别接单片机的11、10脚(TXD、RXD)。

在1脚和3脚、4脚和6脚、2和16脚、6和15脚以及15和16脚之间分别接1个1uf的电容,即可使芯片正常工作,完成电平转换功能。

3.2.4AT89C52的定时/计数器概述

AT89C52单片机有3个独立的16位定时/计数器,即定时/计数器0(T0),定时/计数器1(T1)和定时/计数器2(T2)。

它们都有定时或事件计数功能,可用于定时控制、延时、对外事件计数和检测等场合。

3个16位定时/计数器,其中T0,T1可作16位加1计数器,T2既可作16位加1计数器,也可作减1计数器,每个定时/计数器都可由软件设置为定时工作方式或计数工作方式。

当设置为计数工作方式时,通过引脚T0(P3.4),T1(P3.5),T2(P1.0)对外部脉冲信号计数,当输入脉冲信号从1到0负跳变时,计数器就自动就1。

为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。

当设置为定时方式时,AT89C52片内振荡器输出的时钟经12分频或6分频后,作为定时器的计数脉冲。

每当来一个时钟下降沿时,定时器T0,T1或T2的数值加1,直至计满溢出为止。

3.2.5LED显示

LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

共阴和共阳极数码管的发光原理是一样的,只是它们的电源极性不同而已。

将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。

以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。

当然,LED的电流通常较小,一般均需在回路中接上限流电阻。

假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。

而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。

四位共阳数码管管脚图如图3-6。

4KEIL仿真软件及Protel99SE的应用

4.1KEIL51的应用

硬件与软件的设计一般都要分别借助一些软件,如我们通常用作电路设计与制版的Protel,MCS-51程序开发工具KEIL等。

KeilC51uVision2集成开发环境是基于80C51内核的软件开发平台,支持工程建立、程序的编译与链接、软件仿真、硬件仿真、目标代码的生成等功能。

KeilC51编译器在产生代码的准确性和效率方面达到了较高的水平。

与大多数集成开发环境类似,KeilC51集成开发环境也是用工程的方法来管理文件,在一个工程文件中源程序(C51程序、汇编程序)、头文件等都可以进行统一管理。

安装运行KEIL51,使用KEIL的开发工具进行工程开发过程,与其他软件开发工程的过程基本上相同:

1)创建C语言或汇编语言的源程序。

2)编译或汇编源文件。

3)纠正源文件中的错误。

4)从编译器和汇编器连接目标文件。

5)测试连接的应用程序。

4.2Protel99SE的应用

Protel软件是由澳大利亚的ProtelTechnolgy公司推出的,一直是从事印刷电路板设计的首选软件。

在1990年,Protel软件由DOS平台发展到Windos平台,是世界上第一家运行在Windos平台的EDA(电子设计自动化)软件。

Protel99SE是由Protel99版本发展而来的,是基于Windos环境下的EDA软件。

Protel99SE主要的功能模块

1)电路原理图(Schematic)设计模块。

该模块主要包括设计原理图的原理图编辑器,用于修改、生成原件符号的元件库编辑器以及各种报表的生成器。

2)印刷电路板(PCB)设计模块。

该模块主要包括用于设计电路板的PCB编辑器,用于PCB自动布线的Route模块。

用于修改、生成元件封装的元件封装库编辑器以及各种报表的生成器。

3)可编程逻辑器件(PLD)设计模块。

该模块主要包括具有语法意识的文本编辑器、用于编译和仿真设计结果的PLD模块。

4)电路仿真(Simulate)模块。

该模块主要包括一个功能强大的数/模混合信号电路仿真器,能提供连续的模拟信号和离散的数字信号仿真。

4.3PCB板的设计制作

印制电路板(PCB)是电子产品中电路元件和器件的支撑件.它提供电路元件和器件之间的电气连接,是从原理图到实际产品必经的一道设计工序。

PCB设计的好坏对抗干扰能力影响很大。

要使电子电路获得最佳性能,元器件的布局及导线的布设是很重要的。

为了设计质量好、造价低的PCB.应遵循以下一般原则:

1)布局

(1)首先,要考虑PCB尺寸大小。

PCB尺寸过大时,印制线条长,成本也增加;过小,元器件排列太密集,则会增加布线难度,还会引起相邻线的干扰。

在确定PCB尺寸后,再确定特殊元件的位置。

最后,根据电路的功能单元,对电路的全部元器件进行布局。

(2)某些元器件或导线之间可能有较高的电位差,应加大它们之间的距离,以免放电引出意外短路。

带高电压的元器件应尽量布置在调试时手不易触及的地方。

(3)重量超过15g的元器件、应当用支架加以固定,然后焊接。

(4)以每个功能电路的核心元件为中心,围绕它来进行布局。

元器件应均匀、整齐、紧凑地排列在PCB上.尽量减少和缩短各元器件之间的引线和连接。

(5)应留出印制扳定位孔及固定支架所占用的位置。

2)布线

(1)输入输出端用的导线应尽量避免相邻平行。

最好加线间地线,以免发生反馈藕合。

(2)电源线和地线的宽度应尽量的大,一般在2-3mm以上。

(3)PCB布线不可以走成直角,以免产生阻抗突变。

(4)尽量避免使用大面积铜箔,否则,长时间受热时,易发生铜箔膨胀和脱落现象。

3)焊盘

焊盘中心孔要比器件引线直径稍大一些。

焊盘太大易形成虚焊。

焊盘外径D一般不小于(d+1.2)mm,其中d为引线孔径。

对高密度的数字电路,焊盘最小直径可取(d+1.0)mm。

5仿真及调试过程

5.1硬件调试过程

本次设计的硬件电路主要由单片机89C58RD+、MAX232和LM386N1的外围电路组成,在调试电路的过程中也碰到了一些问题。

问题一:

单片机无法正常下载程序。

调试步骤:

(1)检查单片机和串口电路是否连接错。

发现单片机的18、19脚的印制线接在了17、18脚上,导致晶振无法正常工作。

出现错误原因则是制作PCB板时,制作板子的人将印制线连错。

解决方法:

把17脚的印制线用小刀切断,再将19脚与晶振用导线连接起来。

(2)检查串口的接口是否连接正确。

发现串口连接线的数据接收和发送两端接反了,导致单片机无法接受到数据。

解决方法:

将串口DB9端拆开,把连接2和3脚的数据线交换。

(3)检查焊接电路是否有虚焊和漏焊。

(4)检查串口助手的芯片选择是否正确。

MAX232工作电压如表6-1所示。

表6-1

管脚

电压值(V)

管脚

电压值(V)

1

6.67

9

4.70

2

8.78

10

0

3

2.52

11

4.77

4

4.13

12

0.44

5

-4.25

13

-9.85

6

-8.16

14

-7.60

7

8.26

15

0

8

0

16

4.79

问题二:

下载音频程序后无法播放音乐。

调试步骤:

1.检查电源是否正常接入电路中。

2.利用示波器测试单片机输出端是否有信号输出,发现信号输出正常,说明单片机正常工作。

3.利用示波器测试音频放大电路输出端是否有信号输出,发现信号输出正常,说明音频放大电路工作正常,同时说明是喇叭部分出现了问题。

4.故障原因:

焊接时将发声器件烧坏了,导致发不出声音。

解决方案:

重新换一个8欧姆喇叭,即可正常播放音乐。

5.2软件仿真及调试过程

本次设计的软件部分由时间显示程序和音乐播放程序组成。

1.时间显示程序仿真

对于时间显示程序,我采用了Preteus软件来仿真。

首先进入Preteu界面,设计一个简单的仿真电路,及一个单片机的基本外围电路,在P0.0-P0.7接一个4位共阴数码管和排阻,如图6-1。

最后,把程序调入单片机中,开始运行。

1)调试过程中所遇到的问题:

运行程序时LED4位共阴数码管显示程乱码。

原因分析:

数码管初始设置有错。

解决方案:

重新设置数码管显示参数,正确的设置为{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。

2)数码管显示的时间与真正的时间进度不一致。

原因分析:

定时器初值设置有误。

本次设计的晶振为6MHZ,而程序中的初值却设置成了12MHZ晶振所采用的值5000,导致显示的时间比真正的时间要慢。

解决方案:

将定时器初值改为12MHZ晶振初值的一半,及2500即可。

2、音乐播放程序调试过程

关于音乐播放程序的调试,我首先采用Preteus软件来仿真,但是该仿真软件中没有喇叭或蜂鸣器等声音播放工具。

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

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2