智能音乐闹钟设计Word文档格式.docx

上传人:b****5 文档编号:19421488 上传时间:2023-01-06 格式:DOCX 页数:39 大小:402.61KB
下载 相关 举报
智能音乐闹钟设计Word文档格式.docx_第1页
第1页 / 共39页
智能音乐闹钟设计Word文档格式.docx_第2页
第2页 / 共39页
智能音乐闹钟设计Word文档格式.docx_第3页
第3页 / 共39页
智能音乐闹钟设计Word文档格式.docx_第4页
第4页 / 共39页
智能音乐闹钟设计Word文档格式.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

智能音乐闹钟设计Word文档格式.docx

《智能音乐闹钟设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《智能音乐闹钟设计Word文档格式.docx(39页珍藏版)》请在冰豆网上搜索。

智能音乐闹钟设计Word文档格式.docx

目前市面上的数字闹钟种类繁多,有可爱型的,有带计算器的,有数码管显示的,有液晶显示的等等。

其中在欧西亚公司所倡导的数字生活中,有几款很有特色的电子闹钟:

法拉利版电子投影闹钟,BAR839HG和RMR826HG等型号的闹钟,不仅具有显示时间的功能,炫酷的外形,记忆最高/最低温度值、时钟、日历、闹钟、第二时区、夜光等功能还可以将时间投影到墙上,天花板上,让你在黑暗里只要一睁眼就能看到时间,除了能闹醒大家外,还提供了6种甜睡的音乐帮助用户入睡。

1.2本项目实现的功能

本设计是一个音乐智能闹钟,与普通的音乐闹钟不同的是当闹钟响起时只有输入相应的代码才能使其关闭否则将一直响起。

以单片机作为核心主控芯片,采用美国DALLAS公司生产的实时时钟芯片,产生时间信号传递给单片机,经单片机处理再通过LED8段数码管完成当前时间的显示,当到达所设定的闹铃时间后,音乐将播放出来,并且此时LED8段数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭。

我们可以通过键盘设置闹铃的时间和校正当前的时间。

拥有4个LED8段数码管作为显示输出,可显示时钟的时与分。

该系统具有易操作,较为人性化等特点,对增强人们的时间观念,对一些有意义事件能给予人们以提醒和警觉,对随时提醒人们注意把握时间具有重要作用。

故具有实际运用价值。

第2章总体设计

2.1方案设计与论证

(1)、对于单片机的选择:

a)、如果用8031系列,由于它没有内部RAM,系统又需要大量内存存储数据,因而不可用。

b)、8051或8052系列具有片内ROM或EPROM,而52子系列与51子系列的不同之处在于:

片内数据存储器增支256字节;

片内程序存储器增之8KB(8032无);

有3个16位定时/计数器,6个中断源。

8051片内程序存储器为4KB,对于本设计来说已经足够,因此选择8051弹片机。

(2)、时钟功能的实现方案:

a)、用软件实现,直接用单片机的定时器编程以实现时钟;

b)、用专门的时钟芯片实现时钟的记时,再把时间数据送入单片机,由单片机控制显示。

比较两种方案,用软件实现时钟固然可以,但是程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,用专用时钟芯片可以实现准确记时。

因此选择b方案。

(3)、显示器:

a)、液晶显示器。

如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。

但液晶显示器的驱动电路复杂,使用起来有一定的难度。

b)、用数码管作为显示器。

数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。

其缺点是功耗较大。

由于数码管使用起来较为方便,在夜间看时间也很方便,因此我们选择了方案b。

(4)、发音部分

用软件方法产生波性输出,通过三极管放大后驱动喇叭发音,这样就可以省去硬件振荡电路,降低成本。

(5)、键盘

a):

4*3矩阵式键盘。

如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。

b):

独立式按键。

如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,此方案适用于按键较少的情况。

因此选择方案a。

2.2系统结构框图

图2-1系统框图

本设计以单片机AT89C51作为核心主控芯片,采用美国DALLAS公司生产的DS1302实时时钟芯片,产生时间信号传递给单片机,经单片机处理再通过LED8段数码管完成当前时间的显示,当到达所设定的闹铃时间后,音乐将播放出来,并且此时LED数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭。

用户可以通过键盘设置闹铃的时间和校正当前的时间。

2.3器件说明

2.3.1时钟芯片

本设计采用的时钟芯片DSl302是美国DALLAS公司生产的一种具有涓细电流充电能力的芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

采用普通32.768kHz晶振。

该芯片是一种体积小、高性能、低功耗、接口容易、占用CPUI/O口线少、带RAM的实时时钟电路等主要特点,故该芯片作为实时时钟广泛应用于智能化仪器仪表中。

它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×

8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

引脚排列如下图所示:

图2-2DS1302引脚排列

DS1302的引脚排列:

Vcc1为后备电源,Vcc2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768kHz晶振。

/RST是复位/片选线,通过把/RST输入驱动置高电平来启动所有的数据传送。

/RST输入有两种功能:

首先,/RST接通控制逻辑,允许地址/命令序列送入移位寄存器;

其次,/RST提供终止单字节或多字节数据的传送手段。

当/RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中/RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在Vcc≥2.5V之前,/RST必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向)。

SCLK始终是输入端。

1)、DS1302的控制字如下图所示。

控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;

位5至位1指示操作单元的地址;

最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

图2-3DS1302命令码格式

DS1302与单片机的连接图:

图2-4DS1302与AT89C51的硬件连接图

2)、数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

注意:

第一个数据位被送出发生在写命令字节最后一位的第一个下降沿,数据输出开始位为位0。

单字节读操作每次需16个时钟,地址字节在前8个时钟周期的上升沿输入,而数据字节在后8个时钟周期的下降沿输出。

图2-5单字节读操作时序

3)DA1302寄存器分布

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见下表。

表2-1DS1302寄存器分布表

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;

另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

2.3.1单片机

本系统采用最常用的AT89C51单片机,它是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器。

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

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图2-6AT89C51引脚排列

主要特性:

·

与MCS-51兼容

4K字节可编程闪烁存储器

寿命:

1000写/擦循环

数据保留时间:

10年

全静态工作:

0Hz-24Hz

三级程序存储器锁定

128×

8位内部RAM

32可编程I/O线

两个16位定时器/计数器

5个中断源

可编程串行通道

低功耗的闲置和掉电模式

片内振荡器和时钟电路

管脚说明:

Vcc:

供电电压。

GND:

接地。

P0口:

在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。

在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。

P1口:

准双向输入/输出口。

P2口:

一般可作为准双向输入/输出口。

在接有片外存储器或扩展I/O口且寻址范围超过256字节时,用作高8位地址总线。

P3口:

除作为准双向输入/输出口外,P3口也可作为AT89C51的一些特殊功能口。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

第3章电路设计

3.1主体电路

本设计以单片机AT89C51作为核心主控芯片,采用DS1302实时时钟芯片,将产生的时间信号传递给单片机,经单片机处理再通过LED8段数码管显示当前的时间。

当到达所设定的闹铃时间后,单片机将调用相应的程序,播放音乐,并且此时LED8段数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭,结束闹铃。

如下图所示:

图3-1主体电路图

3.2单片机系统

图3-2AT89C51最小系统电路图

单片机采用AT89C51,使用P0口作为I/O口,则需外接上拉电阻。

使用P0.0、P0.1、P0.2、P0.3分别与74LS48译码器的输入端相连接;

P0.4、P0.5、P0.6、P0.7分别与显示电路的4个LED数码管片选信号相连接;

P1.0到P1.6连接外接键盘;

P1.7(即B0)作为功放的输出端与功放驱动电路相连接;

P2.0到P2.2分别与时钟芯片DS1302的/RET(“5”)、I/O(“6”)、SCLK(“7”)三个引脚相连接;

31脚(即/EA)接高电平,因此首先执行片内程序存储器的程序;

19脚(即X1)与18脚(即X2)连接外部振荡电路;

9脚(即RESET)连接复位电路。

3.3键盘电路

键盘电路采用4*3行列式键盘,用P1口线组成行、列结构,按键设置在行列的交点上。

当进行键盘扫描时,则将扫描信号送至P1.4、P1.5、P1.6,再从P1.0、P1.1、P1.2、P1.3读取键盘状态,即可判断哪个键盘被按下。

P1.0、P1.1、P1.2、P1.3分别连接一个10K的上拉电阻到公共接点上,公共接点连接在VCC上,因此采用低电平扫描。

送入P1.4、P1.5、P1.6的扫描信号中,只有一个为低电平(即0),其余为高电平。

紧接着读取P1.0、P1.1、P1.2、P1.3的状态,哪个为低电平(即0)则表示被按下,如果都是高电平,则从头开始继续扫描。

按键S0到S11分别代表的意义是“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“闹钟”与“时间”。

当长时间按下“闹钟”键时,为开启或关闭闹钟;

当短时间按下“闹钟”键时,为设置闹钟时间。

当按下“时间”键时,为设置时间。

电路图如下图3-3所示:

图3-34*3键盘电路图

3.4功放电路

本系统是利用程序产生频率脉冲信号,送到P1.7(即B0)口,通过一个限流电阻连接到喇叭的驱动电路。

P1.7口输出的是一组脉冲信号,当输出为高电平时晶体管工作于饱和状态,当输出为低电平时晶体管工作于截止状态,从而使喇叭播放出音乐。

图3-4功放电路图

3.5显示电路

图3-5显示电路图

数码管在夜间看时间的时候就不需要有光源,非常方便,因此采用4个共阳极8段LED数码管作为显示系统,片选信号分别连接在A4(P0.4)、A5(P0.5)、A6(P0.6)、A7(P0.7),LED8段数码管的a、b、c、d、e、f、g分别与74LS48译码器的输出端相连接。

LED数码管的dp端接高电平。

电路图如上图3-5所示。

3.6时钟电路

图3-6DS1302时钟电路图

选用DS1302作为时钟芯片,X1与X2连接32.768kHz的晶体振荡电路,DS1302与单片机AT89C51采用串行数据传输方式,/RET、I/O、SCLK分别与单片机的P2.0(B1)、P2.1(B2)、P2.2(B3)相连接。

Vcc2(即“1”)连接电源。

电路图如上图3-6所示。

第4章程序设计

本章主要讲述软件方面的实现。

本系统程序紧紧围绕所要实现的功能进行编写,采用模块化编程结构。

4.1主程序流程图

N

Y

N

Y

Y

图4-1主程序流程图

系统启动后,进行初始化设置,键盘扫描,显示当前的时间。

判断闹钟或时钟是否需要设置,如果需要则进行相应的设置,如果不需要则跳转到判断闹钟是否开启,如果没有开启则跳回键盘扫描,开启则进行判断闹钟与时间是否相等,相等则放音乐同时显示代码,进行输入码与显示代码比较是否相等,相等则关闭音乐,转到键盘扫描,否则一直播放音乐直到正确输入代码。

4.2比较闹钟与时间程序

43H,42H存放闹钟的时位;

41H,40H存放闹钟的分位

33H,32H存放时间的时位;

31H,30H存放时间的分位

图4-2比较闹钟与时间程序

MOVA,33H

XRLA,43H

JNZTO-END

…………

MOVA,30H

XRLA,40H

SETBF0

SETBP1.7

TO-END:

POPA

RET

判断33H与43H存储的内容是否相等,如果不相等则停止该程序,相等说明时间与闹钟时位的高位相等;

继续判断32H与42H分别存储的时间与闹钟时位的低位是否相等,不相等则停止该程序,相等则继续判断31H与41H分别存储的时间与闹钟分位的高位是否相等,与上面同理;

当判断30H与40H存储的内容是否相等时,如果相等则说明闹钟时间到达,音乐开启,F0=1,此时按键可以使用,反之则停止该程序。

4.3键盘扫描程序

系统启动后,判断有无按键按下,R2存储是哪个按键按下,然后判断R2的值。

当R2为11时,F0置位,进行时间调整,调整完毕则显示,并从新开始键盘扫描。

当R2为10时,进行1秒钟的延时,判断是否长按闹钟键(S10),如果长按,则进行闹钟开启与关闭设置,R1为FFH时闹钟开启,R1为00H时闹钟关闭;

如果没有长按,则直接跳转到进行F0置位,闹钟调整。

调整完毕则显示,并从新开始键盘扫描。

当R2为其他数值时,判断F0是否为1,如果F0为1时,调用相应键值程序,否则返回键盘扫描。

F0的值判断数字键“0”到“9”是否开启,当为1时开启,反之关闭。

在调整时间、闹钟、显示代码时F0为1。

R2为11R2为其他

R2为10Y

YN

图4-3键盘扫描流程图

4.4对DS1302操作的程序

初始化要求/RST为低电平,SCLK为低电平,/RST被设置为高就启动了一个数据传送的过程。

SCLK的16个方波完成一次数据传送,前8个方波用于输入命令字节,后8个方波用于数据的输出(读DS1302)或数据的输入(写DS1302)。

在SCLK的上升沿,I/O线上数据被送入DS1302,在SCLK下降沿DS1302输出数据在I/O线上。

读DS1302驱动程序图,如下图所示:

图4-4读DS1302驱动程序图

读写操作各用一个程序,读DS1302如上图所示,写DS1302程序框图与之相似,只需上图第二个循环中“读数据字节一位”改为“写数据字节一位”即可。

读DS1302驱动程序:

RDRTC:

CLR/RET;

置控制引脚为低电平,禁止数据传送

NOP

CLRSCLK;

初始化串行时钟线为低电平

SETB/RET;

置控制引脚为高电平,允许数据传送

MOVA,#0BFH;

准备“接收多字节数据”的命令码

MOVR2,#8;

1字节命令码需要传送8次

RDRTC0:

CLRSCLK;

置串行时钟线为低电平

RRCA;

将最低位传送给进位标志C

MOVP2.1,A;

再传送至数据端口

SETBSCLK;

置串行时钟线为高电平,其上升沿发送1位数据

DJNZR2,RDRTC0;

直到发送完1字节的命令码

MOVR0,#2EH

RDRTC1:

MOVR2,#8;

每字节数据需要接受8次

RDRTC2:

置串行时钟线为低电平,其下降沿接收1位数据

MOVC,P2.1;

将数据端口的信息传送给进位标志C

RRCA

置串行时钟线为高电平

DJNZR2,RDRTC2;

直到接收到1个完整字节的数据

MOV@R0,A

INCR0

DJNZR3,RDRTC1;

直到接收完全部数据

CLR/RET

4.5播放音乐程序

图4-5播放音乐程序

当时间与所设的闹钟时间相等时,调用曲目,查找相应的音符,音符的高四位(即音频)装入T0,音符的低四位(即节拍)装入节拍单元。

T0开始计数,从P1.7输出脉冲信号,播放音乐。

音乐播放结束,返回主程序。

第5章系统仿真

由于我所设计的智能音乐闹钟系统包括软件和硬件两部份,测试时先对软件进行测试,然后再将已测试的软件结合硬件在一起进行测试,完成整个系统的测试工作。

5.1软件调试

在软件调试中,我采用伟福仿真软件进行程序调试。

首先分别调试各个功能程序,再对整个程序进行调试,以便修改错误码。

具体的调试方法如下:

首先在伟福软件模拟器中选择V5/L仿真器,选择AT89C51作为CPU,将晶振频率设置为12MHZ,然后新建一个.ASM文件,将各个功能程序录入,先检查程序有无明显错误,保存过后编译程序,当有错误时就根据提示加以修改,当各个功能程序编译完成后,再对整个程序全速执行,查看程序有哪些地方出现错误,对应错误提示逐步调整程序,纠正错误直到程序正确无误,调试结束后有图5.1的软件调试界面如下:

图5-1软件调试界面

5.2

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

当前位置:首页 > 经管营销 > 财务管理

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

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