智能音乐闹钟设计

更新时间:2023-12-22 11:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

由 谷道西峰 整理而来

希望对大家课程设计和毕业设计有所帮助。

目 录

摘 要 ............................................................. I Abstract ........................................................... II 第1章

绪论 ....................................................... 1 1.1 应用背景 ................................................... 1 1.2 本项目实现的功能 ........................................... 2 第2章 总体设计 ..................................................... 3

2.1 方案设计与论证 ............................................ 3 2.2系统结构框图 ............................................... 4 2.3器件说明 ................................................... 4

2.3.1时钟芯片 .............................................. 4 2.3.1单片机 ................................................ 7

第3章 电路设计 .................................................... 10

3.1主体电路 .................................................. 10 3.2 单片机系统 ................................................ 11 3.3键盘电路 .................................................. 11 3.4功放电路 .................................................. 12 3.5显示电路 .................................................. 13 3.6时钟电路 .................................................. 13 第4章 程序设计 .................................................... 14

4.1 主程序流程图 ............................................... 14 4.2 比较闹钟与时间程序 ........................................ 15 4.3 键盘扫描程序 .............................................. 16 4.4 对DS1302操作的程序 ....................................... 18 4.5 播放音乐程序 .............................................. 20 第5章 系统仿真 .................................................... 21

5.1软件调试 ................................................... 21 5.2 硬件调试 ................................................... 22 第6章 总结 ........................................................ 23 参考文献 ........................................................... 24 致谢 ............................................................... 25 附录 ............................................................... 26

III

摘 要

本文介绍了一种智能音乐闹钟的设计。本设计是由中央控制器、时钟系统、显示器及键盘部分组成。控制器采用单片机AT89C51,时钟系统采用美国DALLAS公司生产的DS1302实时时钟芯片,它将产生的时间信号传递给单片机,单片机通过74LS48译码,使LED 8段数码管显示当前的时间,在计时过程中当到达所设定的闹铃时间后,将播放音乐,并且此时LED 数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭,否则音乐将一直播放下去。用户可以通过键盘设置闹铃的时间和校正时间。

关键词:单片机、DS1302、智能闹钟

I

Abstract

In this paper, a smart alarm clock music design. This design is from the central controller, the clock system, monitor and keyboard parts. Controllers using SCM AT89C51, the clock system uses the U.S. company's DS1302 DALLAS real-time clock chip, it will have the time to signal transmitted to the microcontroller, SCM through 74 LS48 decoding, LED 8 of the digital display of the current Time, When in the course of time set by the arrival of the alarm time, will play music, and at this time of the LED digital display is no longer time but a code that only users of this code from the keyboard on the correct input into the Music can be closed, otherwise, would have been broadcast on music. Users can set the alarm through the keyboard of the time and correction time.

Keywords :singlechip、DS1302、Smart alarm clock

II

第1章 绪论

1.1 应用背景

自单片机出现至今,单片机技术已走过了近20年的发展路程。电子技术和计算机技术应用领域不断扩大,单片机技术已成为电子技术领域中的一个新的亮点,随着单片机技术的迅猛发展和应用领域不断扩大,纵观20年来单片机发展里程可以看出,单片机技术渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。基于单片机的通用定时控制系统正是属于单片机技术范围。特别是在智能化控制高度发展的前提下,定时控制是不可或缺的条件。可以说只要有智能化的存在,就必须要用到定时控制。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,民用豪华轿车的安全保障系统,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机通用定时技术。更不用说自动控制领域的机器人、智能仪表、医疗器械了。

因此,基于单片机的通用定时控制的学习是非常重要的也是非常关键的。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,单片机应用系统的软件(常称为监控程序或固件——固化到单片机内部或外部的程序存储器内)一般由主程序和若干个中断程序组成,以作完善。基于单片机的通用定时控制也是如此。

带有闹时装置的钟。既能指示时间,又能按人们预定的时刻发出音响信号或其他信号。43年前,现代闹钟的前辈们承担了1964年东京奥运会的计时工作。从那时起,电子闹钟就慢慢的进入了我们的日常生活之中,为我们的生活与工作带来了意想不到的结果。

目前市面上的数字闹钟种类繁多,有可爱型的,有带计算器的,有数码管显示的,有液晶显示的等等。其中在欧西亚公司所倡导的数字生活中,有几款很有特色的电子闹钟:法拉利版电子投影闹钟,BAR839HG和RMR826HG等型号的闹钟,不仅具有显示时间的功能,炫酷的外形,记忆最高/最低温度值、时钟、

1

日历、闹钟、第二时区、夜光等功能还可以将时间投影到墙上,天花板上,让你在黑暗里只要一睁眼就能看到时间,除了能闹醒大家外,还提供了6种甜睡的音乐帮助用户入睡。

1.2 本项目实现的功能

本设计是一个音乐智能闹钟,与普通的音乐闹钟不同的是当闹钟响起时只有输入相应的代码才能使其关闭否则将一直响起。以单片机作为核心主控芯片,采用美国DALLAS公司生产的实时时钟芯片,产生时间信号传递给单片机,经单片机处理再通过LED 8段数码管完成当前时间的显示,当到达所设定的闹铃时间后,音乐将播放出来,并且此时LED 8段数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭。我们可以通过键盘设置闹铃的时间和校正当前的时间。拥有4个LED 8段数码管作为显示输出,可显示时钟的时与分。

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

2

第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)、键盘

3

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

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

因此选择方案a。

2.2系统结构框图

图2-1 系统框图

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

2.3器件说明

2.3.1时钟芯片

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

4

的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。

该芯片是一种体积小、高性能、低功耗、接口容易、占用CPU I/O口线少、带RAM的实时时钟电路等主要特点,故该芯片作为实时时钟广泛应用于智能化仪器仪表中。它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。引脚排列如下图所示:

图2-2 DS1302引脚排列

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指示操作单元的地址;最低有

5

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

图2-3 DS1302命令码格式

DS1302与单片机的连接图:

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

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

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

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

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

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

3)DA1302寄存器分布

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

6

表2-1 DS1302寄存器分布表

此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

2.3.1单片机

本系统采用最常用的AT89C51单片机,它是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚排列如下图所示:

7

图2-6 AT89C51引脚排列

主要特性: ·与MCS-51 兼容

·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 管脚说明:

Vcc:供电电压。 GND:接地。

8

P0口:在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。

P1口:准双向输入/输出口。

P2口:一般可作为准双向输入/输出口。在接有片外存储器或扩展I/O口且寻址范围超过256字节时,用作高8位地址总线。

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

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

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

9

第3章 电路设计

3.1主体电路

本设计以单片机AT89C51作为核心主控芯片,采用DS1302实时时钟芯片,将产生的时间信号传递给单片机,经单片机处理再通过LED 8段数码管显示当前的时间。当到达所设定的闹铃时间后,单片机将调用相应的程序,播放音乐,并且此时LED 8段数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭,结束闹铃。用户可以通过键盘设置闹铃的时间和校正当前的时间。如下图所示:

A4A5A6comcomcomcomDS3DPY_7-SEG_DPaabcfbgdeecddpfgpdaabcfbgdeecddpfgpdaabcfbgdeecddpfgpdJ121CON2VCCS0R110kR210kR310kR410kVCCLS130PVCCY1CRYSTALC2B0R14.7kQ1NPN131191891716S1Q2NPN1R910KSW-PBC3VCC10UC1SW-PBS3SW-PBS6SW-PBS9SW-PBS1SW-PBS4SW-PBS7SW-PBS10SW-PBS2C40.01uC510uLED1LED2LED31LED42LED53LED64LED756VCC78LED1LED2LED31LED42LED53LED64LED756VCC78LED1LED2LED31LED42LED53LED64LED756VCC78LED1LED2LED31LED42LED53LED64LED756VCC78VCCVCCR1R210KR310KR410KR510KR610KR710KR810K10K39383736353433322122232425262728A0A1A2A3A4A5A6A7VCCU24537126BI/RBORBILTABCD74LS48U1752SCLKRSTX1DS1302(8)Y1IOX263abcdefg1312111091514LED1LED2LED3LED4LED5LED6LED7U18051SW-PBS5SW-PBS8SW-PBS11SW-PB1234567813121514P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRRXDTXDALE/PPSEN10113029P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27A0A1A2A3A4A5A6A7B1B2B3A0A1A2A3B0CRYSTALC130PC230PSPEAKER30PaabcfbgdeecddpfgpdDPYDPYDPYDPYDS1DPY_7-SEG_DPDS2DPY_7-SEG_DPA7DS4DPY_7-SEG_DP 图3-1 主体电路图

10

U13.2 单片机系统

VCCJ121CON2C40.01uC510uVCCR1R210KR310KR410KR510KR610KR710KR810K10K39383736353433322122232425262728A0A1A2A3A4A5A6A7VCCU24537126BI/RBORBILTABCD74LS48abcdefg1312111091514LED1LED2LED3LED4LED5LED6LED7J41234567CON7J287654321CON81234567813121514VCCY1CRYSTALC231191891716S1SW-PBC3VCC10K10U8051P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRRXDTXDALE/PPSEN10113029P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27A0A1A2A3A4A5A6A7B1B2B3A0A1A2A3B0C1J3CON312330P30PR9 图3-2 AT89C51最小系统电路图

单片机采用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的扫描信

11

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

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

当长时间按下“闹钟”键时,为开启或关闭闹钟;当短时间按下“闹钟”键时,为设置闹钟时间。当按下“时间”键时,为设置时间。 电路图如下图3-3所示:

J1CON2VCC12S0R110kR210kR310kR410kSW-PBS3SW-PBS6SW-PBS9SW-PBS1SW-PBS4SW-PBS7SW-PBS10SW-PBS2J2SW-PBS5SW-PBS8SW-PBS11SW-PBp1.0p1.1p1.2p1.3p1.4p1.5p1.61234567CON7 图3-3 4*3键盘电路图

3.4功放电路

本系统是利用程序产生频率脉冲信号,送到P1.7(即B0)口,通过一个限流电阻连接到喇叭的驱动电路。P1.7口输出的是一组脉冲信号,当输出为高电平时晶体管工作于饱和状态,当输出为低电平时晶体管工作于截止状态,从而使喇叭播放出音乐。

VCCJ121CON2VCCSPEAKERLS1J221CON2B0R14.7kQ1NPN1Q2NPN1 图3-4 功放电路图

12

3.5显示电路

J34321CON4A4A5A6A7A4A5A6A7VCCJ1CON2comcomcomDS1DPY_7-SEG_DPbcdpDS2DPY_7-SEG_DPbcdpDS3DPY_7-SEG_DPbcdpDS4DPY_7-SEG_DPbcdpcom12J2LED1LED2LED3LED4LED5LED6LED71234567CON7DPYDPYDPYDPYaaagggadddgfffeefefgdpfgdpfgdpefgdpabcdeabcdeabcdeLED1LED2LED31LED42LED53LED64LED756VCC78LED1LED2LED31LED42LED53LED64LED756VCC78LED1LED2LED31LED42LED53LED64LED756VCC78LED1LED2LED31LED42LED53LED64LED756VCC78abcded 图3-5 显示电路图

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

3.6时钟电路

J1321CON3B2B3B1U1752SCLKRSTX1DS1302(8)Y1J221CON2VCCCRYSTALC130PC230PIOX263 图3-6 DS1302时钟电路图

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

13

第4章 程序设计

本章主要讲述软件方面的实现。本系统程序紧紧围绕所要实现的功能进行编写,采用模块化编程结构。

4.1 主程序流程图 开始

N 闹钟或时间设置键是否按下

闹钟是否开启 Y 键盘扫描 初始化 显示时间 Y 设置 N Y N 闹钟与时间比较 Y

放音与显示代码 N 输入代码比较 Y

关音 图4-1主程序流程图

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

14

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

4.2 比较闹钟与时间程序

43H,42H存放闹钟的时位;41H,40H存放闹钟的分位 33H,32H存放时间的时位;31H,30H存放时间的分位

开始 N (33H)=(43H)? Y (32H)=(42H)? Y (31H)=(41H)? Y (30H)=(40H)? Y RET 图4-2比较闹钟与时间程序

N N N

MOV A,33H XRL A,43H JNZ TO-END

15

???? MOV A,30H XRL A,40H JNZ TO-END SETB F0 SETB P1.7 TO-END:POP A 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。

16

5.2 硬件仿真

硬件仿真使用的是ProteusPRO6.7SP3,Proteus 是目前最好的模拟单片机外围器件的工具,它可以仿真 51 系列、AVR,PIC 等常用的 MCU 及其外围电路。利用Proteus中的器件库完成硬件电路的连接,如下图所示:

R1R3R227K27KR40R1R5R60R1R70R1R80R10R127KA0A1A2A3A4A5A6A7C2LED1LED2LED3LED4LED5LED6LED730pX1CRYSTAL19C330pU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617A0A1A2A3A4A5A6A7B1B2B3A0A1A2A37126453U2ABCDBI/RBORBILT74LS48QAQBQCQDQEQFQG1312111091514LED1LED2LED3LED4LED5LED6LED7R910K18XTAL2910uRSTC1293031PSENALEEAU381B1B3B2VCC1X1VCC22C430pR1110k576R1210kR1310kR1410k1234567B08RSTSCLKI/ODS1302X2CRYSTALC5X2330pP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51B0LS1SPEAKERR104.7KQ1BFY50Q2BFY50A4A5A6A7 图5-2硬件电路图

22

第6章 总结

本文介绍了一种智能音乐闹钟设计。本设计是由中央控制器、时钟系统、存储器、显示器及键盘部分组成。控制器采用单片机AT89C51,时钟系统使用时钟芯片DS1302,用LED 8段数码管作为显示器,用单片机内置ROM作为存储器件。单片机通过时钟芯片DS1302获取时间数据,对数据处理后,单片机再把时间数据送LED数码管显示器显示,还可以显示代码;当到达所设定的闹铃时间后,单片机将调用相应的程序,播放音乐,并且此时LED 8段数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭,结束闹铃。用户可以通过键盘设置闹铃的时间和校正当前的时间。

软件部分采用汇编语言,分别对键盘、显示、时钟等进行相应的程序编辑,将编好的程序在伟福仿真软件中进行仿真,看程序是不是能够按照所想的运行方向正常的运行并对其修改。在整个设计过程中也存在许多问题,程序各个之间的连接不如设想的流畅,但基本上实现了时钟、闹钟与音乐的功能。

23

参考文献

1、潘永雄.新编单片机原理与应用. 西安电子科技大学出版社,2002年 2、张友德,赵志英,涂时亮.单片机微型机原理应用与实验. 复旦大学出版社,2000年

3、周航慈、朱兆优、李跃忠.智能仪器原理与设计. 北京航空航天大学出版社,2005;

4、江秀汉.可编程序控制器原理及应用(第二版).西安电子科技大学出版社,2003;

5、沈庆阳、郭庭吉.单片机实践与应用.清华大学出版社,2002;

6、窦振中.单片机外围器件实用手册存储器分册.北京航空航天大学出版社,1998;

7、关德新,冯文全.单片机外围器件实用手册电源器件分册.北京航空航天大学出版社,1998;

8、何立民.单片机应用技术选编(1).北京航空航天大学出版社,1993。

9、李建忠.单片机原理及运用. 西安电子科技大学出版社, 2001年 10、吴金戎、沈庆阳.8051单片机实践与应用.清华大学出版社 ,2001年

11、赵晓安.MCS-51单片机原理及应用.天津大学出版社,2001年

12、冯建华、赵亮.单片机应用系统设计与产品开发. 人民邮电出版社, 2004年 13、何立民.MCS51系列单片机应用系统设计.北京航空航天大学出版社, 1999

年 14、李荣正、陈学军.PIC单片机实验教程. 北京航空航天大学出版社,2006年 15、张义和、陈敌北.例说8051.人民邮电出版社,2006年

24

致谢

这次毕业设计的时间不是很长,毕业设计是自己独立完成的,设计开始时对任务进行了按时分工,每天都要按时完成任务,这样才能为顺利完成好毕业设计提供时间基准。由于毕业设计是我独立进行的设计,刚开始时,心里十分茫然,不知从何入手,通过指导老师的高度的责任感与敬业精神深深地感染了我,同时也深深的激励着我奋进。

通过毕业设计,使我对所学的理论知识有了更深更多的理解,操作能力也有了可喜的进步。

我认为理论知识无论学得再好再透,毕竟是抽象的,在没用于实践前是毫无意义的,而四年的学习生活中我所缺少的就是理论和实践的紧密结合。毕业设计则恰恰像一场及时雨,让我们通过亲身模拟学会如何把理论知识应用于实践。给了我充分的锻炼机会。获益非浅!

谢谢老师!

25

附录

******************************************** 主程序

******************************************** /RST BIT P2.0 I/O BIT P2.1 SCLK BIT P2.2 ORG 0026H LJMP START ORG 000BH LJMP NEXT ORG 0060H

START:MOV TMOD,#01H MOV TH0,#0FCH MOV TL0,#48H MOV IE,#82H

SETB TR0 ;启动TR0

LOOP:LCALL TRAID ;调用时间读取子程序 LCALL DISPLAY1 ;时间显示调用 ONE:CJNE R2,#10,T1

LCALL DISPLAY2 ;闹钟时间显示子程序 LCALL HOLD ;等待键按下

MOV A,R5 ;R5在显示子程序中自减 JNZ ONE MOV R7,#04 T1:CJNE R2,#11,TWO

LCALL DISPLAY1 ;时间显示子程序 LCALL HOLD DJNZ R7,T1

LCALL WRTC ;时间写入时钟芯片程序 TWO: ;闹钟时间比较程序 CJNE RO,#0FFH,T4 ;判断闹钟开/关 LCALL TO-2 JBC F0,T2 AJMP LOOP

T2:SETB P1.7 ;闹钟响起 MOV R7,#04

LCALL DISPLAY2 ;代码显示子程序 MOV R0,#3EH ;取代码程序 GO:ACALL HOLD

THREE:MOV A,R2 ;B存放的是键码 ACALL DISPLAY2 CJNE A,@R0,T3 AJMP T4 T3:ACALL HOLD ;等待键按下 AJMP THREE T4:DJNZ R7,GO CLR P1.7

LJMP LOOP MEXT:CLR TF0

MOV TH0,#0FCH MOV TL0,#18H MOV IE,#82H SETB TR0 RETI END

******************************************** 比较程序

******************************************** TO-2:PUSH A

26

MOV A,33H XRL A,43H JNZ TO-END MOV A,32H XRL A,42H JNZ TO-END MOV A,31H XRL A,41H JNZ TO-END MOV A,30H XRL A,40H JNZ TO-END SETB F0 SETB P1.7 TO-END:POP A RET

******************************************************* 存时间与闹钟

******************************************************* WORD11:MOV R5,#00H INC R5

CJNE R5,#05H,RET11 MOV R5,#00H RET11:LJMP JZKEY WORD10:MOV R5,#00H INC R5

CJNE R5,#05H,RET10 MOV R5,#00H RET10:LJMP JZKEY

WORD9:CJNE R5,#01H,RET9 ACALL GEWEI RET9:RET

WORD8:CJNE R5,#01H,RET8 ACALL GEWEI RET8:RET

WORD7:CJNE R5,#01H,RET7 ACALL GEWEI RET7:RET

WORD6:CJNE R5,#01H,RET6 ACALL GEWEI RET6:RET

WORD5:CJNE R5,#01H,RR5 ACALL GEWEI LJMP RET5

RR5:CJNE R5,#02H,RET5 ACALL SHIWEI RET5:RET

WORD4:CJNE R5,#01H,RR4 ACALL GEWEI LJMP RET4

RR4:CJNE R5,#02H,RRR4 ACALL SHIWEI LJMP RET4

RRR4:CJNE R5,#03H,RET4 ACALL BAIWEI RET4:RET

WORD3:CJNE R5,#01H,RR3 ACALL GEWEI LJMP RET3

RR3:CJNE R5,#02H,RRR3 ACALL SHIWEI LJMP RET3

RRR3:CJNE R5,#03H,RET3

27

ACALL BAIWEI RET3:RET

WORD2:CJNE R5,#01H,RR2 ACALL GEWEI LJMP RET2

RR2:CJNE R5,#02H,RRR2 ACALL SHIWEI LJMP RET2

RRR2:CJNE R5,#03H,RET2 ACALL BAIWEI RET2:RET

WORD1:CJNE R5,#01H,RR1 ACALL GEWEI LJMP RET1

CJNE R5,#02,RRR1 ACALL SHIWEI LJMP RET1

CJNE R5,#03,RRRR1 ACALL BAIWEI LJMP RET1 RRRR1:ACALL QIANWEI RET1:RET

GEWEI:MOV A,B XOR A,#0AH JZ CLK9 MOV R0,#30H MOV @R0,R2 LJMP RETG CLK9:MOV R0,#40H MOV @R0,#R2 RETG:RET

SHIWEI:MOV A,B XOR A,#0AH JZ CLK5 MOV R0,#31H MOV @R0,R2 LJMP RETS CLK5:MOV R0,#41H MOV @R0,#R2 RETS:RET

BAIWEI:MOV A,B XOR A,#0AH JZ CLK6 MOV R0,#32H MOV @R0,R2 LJMP RETH CLK6:MOV R0,#42H MOV @R0,#R2 RETH:RET

QIANWEI:MOV A,B XOR A,#0AH JZ CLK7 MOV R0,#33H MOV @R0,R2 LCALL WRTC LJMP RETK CLK7:MOV R0,#43H MOV @R0,#R2 RETK:RET

****************************************** 代码显示程序

****************************************** DISPLAY2:ACALL DELAY

28

PUSH A

MOV R3,#01H MOV R0,#3EH MOV A,R3 SWAP A LOOP-COD:CLR C OR A,@RO MOV P1,A INC R0 MOV A,R3 SWAP A RLC A

JC LOOP-COD POP A RET

**************************************** 键盘扫描

***************************************** JZKEY:MOV P1,#70H MOV A,P1 CPL A

ANL A,#0E0H MOV R2,A JZ JZKEY MOV P1,#0FH MOV A,P1 CPL A

ANL A,#0FH MOV R3,A JZ JZKEY LCALL DELAY WAIT:MOV A,P1 CLP P

ANL A,#8FH JNZ WAIT MOV A,R2 MOV R2,#02H MOV R4,#03H CLR C RLC A KEY1:RLC A JC KEY2 DEC R2

DJNZ R4,KEY1 LJMP JZKEY KEY2:MOV A,R3 MOV R3,#00H MOV R4,#04H CLR C KEY3:RRC A JC KEY4 INC R3

DJNZ R4,KEY3 KEY4:MOV A,R3 CLR C RLC RLC

ADD A,R2 MOV B,A MOV R2,A XRL A,#0AH JZ KEY5 MOV R2,A

29

MOV B,A XRL A,#0BH JZ KEY6 MOV R2,A XRL A,#09 JZ NUM9 MOV R2,A XRL A,#08 JZ NUM8 MOV R2,A XRL A,#07 JZ NUM7 MOV R2,A XRL A,#06 JZ NUM6 MOV R2,A XRL A,#05 JZ NUM5 MOV R2,A XRL A,#04 JZ NUM4 MOV R2,A XRL A,#03 JZ NUM3 MOV R2,A XRL A,#02 JZ NUM2 MOV R2,A XRL A,#01 JZ NUM1 MOV R2,A XRL A,#00 JZ NUM0

KEY5:MOV R1,#00H MOV R5,#10H ACALL DELAY DJNZ R5,KEY5 JNB P1.6,RIN0

RINO:CJNE R2,#10,KE5RET MOV A,R1 CPL A MOV R1,A SETB F0

LJMP WORD10 KE5RET:LJMP JZKEYD JZKEYD:RET KET6:SETB F0

LJMP WORD11 LJMP JZKEYD NUM0:JBC F0,WORD0 LJMP JZKEYD NUM1:JBC F0,WORD1 LJMP JZKEYD NUM2:JBC F0,WORD2 LJMP JZKEYD NUM3:JBC F0,WORD3 LJMP JZKEYD NUM4:JBC F0,WORD4 LJMP JZKEYD NUM5:JBC F0,WORD5 LJMP JZKEYD NUM6:JBC F0,WORD6 LJMP JZKEYD

30

NUM7:JBC F0,WORD7 LJMP JZKEYD NUM8:JBC F0,WORD8 LJMP JZKEYD NUM9:JBC F0,WORD9 LJMP JZKEYD

DELAY:MOV R7,#18H;延时10ms TM:MOV R6,#FFH TM6:DJNZ R6,TM6 DJNZ R7,TM RET

***************************************** 时钟数据读取

***************************************** TRALD:MOV R3,#03H LCALL RDRTC RDRTC:CLR CE NOP

CLR SCLK NOP

SETB CE NOP

MOV A,#BFH MOV R2,#8 RDRTC0:CLR SCLK RRC A

MOV P2.1,A NOP

SETB SCLK

DJNZ R2,RDRTC0 MOV R0,#2EH RDRTC1:MOV R2,#8 RDRTC2:CLR SCLK NOP

MOV C,P2.1 RRC A

SETB SCLK

DJNZ R2,RDRTC2 MOV @R0,A INC R0

DJNZ R3,RDRTC1 CLR CE RET

******************************************* 时钟写入

******************************************* WRTC:CLR CE NOP

CLR SCLK NOP

SETB CE NOP

MOV A,#0BEH MOV R2,#8 WRTC0:CLR SCLK RRC A

MOV P2.1,C NOP

SETB SCLK DJNZ R2,WRTC0 MOV R0,#3EH MOV R3,#7 WRTC1:MOV A,@R0

31

MOV R2,#8 WRTC2:CLR SCLK RRC A

MOV P2.1,C NOP

SETB SCLK DJNZ R2,WRTC2 INC R0

DJNZ R3,WRTC1 CLR CE RET

****************************************************** 闹钟显示

****************************************************** DISPLAY1:MOV R3,#01H MOV A,B

CJNE A,#0AH,DISPLAYD MOV R0,#40H MOV A,R3 SWAP A LOOP1:CLR C OR A,@R0 MOV P1,A INC R0 MOV A,R3 SWAP A RLC A

JNC LOOP1 DISPLAYD:RET

******************************************************* 时钟显示

******************************************************** DISPLAY2:MOV R3,#01H MOV A,B

CJNE A,#11,DISPLAYT MOV R0,#30H MOV A,R3 SWAP A LOOP2:CLR C OR A,@R0 MOV P1,A INC R0 MOV A,R3 SWAP A RLC A

JNC LOOP2 DISPLAYT:RET

*************************************************** 等待程序

*************************************************** HOLD:

MOV A,P1 CJNE A,7FH,$ RET

*************************************************** 音乐程序

*************************************************** SOUND:

MOV TMOD,#00000001B MOV IE,10000011B JB P3.2,$ CALL DELAY1 JNB P3.2, $

32

MOV 31H,#00H START0:

MOV 30H,#LOW SONG NEXT:MOV A,30H

MOV DPTR,#TABLE MOVC A,@A+DPTR MOV R2,A JZ END0 ANL A,#0FH MOV R5,A MOV A,R2 SWAP A

ANL A,#0FH JNZ SING CLR TR0 JMP D1 SING: DEC A

MOV 22H,A RL A

MOV DPTR,#TABLE MOVC A,@A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A

MOVC A,@A+DPTR MOV TL0,A MOV 20H,A SETB TR0 D1: CALL DELAY INC 30H JMP NEXT END0:

MOV A,31H CLR TR0

XRL A,#00H JNZ END1 JB P3.2,$ CALL DELAY1 JNB P3.2,$ INC 31H

MOV 30H,#LOW SONG1 JMP NEXT TIME0:

PUSH ACC PUSH PSW SETB RS0 CLR RS1 MOV TL0,20H MOV TH0,21H CPL P1.7 POP PSW POP ACC RETI XINT0:

PUSH ACC PUSH PSW JMP ST POP PSW POP ACC RETI

33

DELAY: MOV R7,#02 D2: MOV R4,#125 D3: MOV R3,#248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2 DJNZ R5,DELAY RET

DELAY1:MOV R4,#20 D4: MOV R3,#248 DJNZ R3,$ DJNZ R4,D4 RET

ORG 0300H TABLE:

DW 64260,64400,64524,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217 SONG1: ; 生日快乐 ;1

DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H

DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H ;2

DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H

DB 0E2H,01H,0E1H,0D4H,0B4H DB 00H

34

本文来源:https://www.bwwdw.com/article/osp5.html

Top