音乐提示定时器课程设计报告.docx

上传人:b****8 文档编号:27673502 上传时间:2023-07-03 格式:DOCX 页数:35 大小:432.81KB
下载 相关 举报
音乐提示定时器课程设计报告.docx_第1页
第1页 / 共35页
音乐提示定时器课程设计报告.docx_第2页
第2页 / 共35页
音乐提示定时器课程设计报告.docx_第3页
第3页 / 共35页
音乐提示定时器课程设计报告.docx_第4页
第4页 / 共35页
音乐提示定时器课程设计报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

音乐提示定时器课程设计报告.docx

《音乐提示定时器课程设计报告.docx》由会员分享,可在线阅读,更多相关《音乐提示定时器课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。

音乐提示定时器课程设计报告.docx

音乐提示定时器课程设计报告

第1章设计要求及方案确定2

1.1设计内容及要求2

1.2设计方案及思路2

第2章系统硬件设计3

2.1硬件电路的总体设计方案及框图3

2.2各单元硬件设计3

2.2.1显示电路设计3

2.2.2音乐播放电路设计4

2.3主要硬件元器件的介绍5

2.3.1单片机8051芯片5

2.3.2LED数码管6

第3章软件设计与说明9

3.1程序设计流程图9

3.2软件电路的总体设计方案及框图10

3.3软件模块设计10

3.3.1主程序模块10

3.3.2按键扫描模块11

3.3.3音乐播放模块11

第4章使用说明12

第5章设计总结13

参考文献15

附录:

16

A系统电路原理图16

B系统程序清单17

第1章设计要求及方案确定

1.1设计内容及要求

本课题要求以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间修改、音乐演奏等功能。

可作为微电脑倒数计数器,做一小段时间计时,放在家中使用,例如煮泡面、煮开水或小睡片刻等;用于全自动洗衣机洗涤完毕音乐提示定时器。

音乐提示定时器设计4个按键设置现在想要倒数的时间:

K1――可调整时间为1-60分钟;K2设置倒数计时时间为5分钟,显示为

“0500”K3——设置倒数计时时间为10分钟,显示为“1000”K4——设置倒数计时时间为20分钟,显示为“2000”一旦按键后则开始倒计时,当计时为0时则演奏一曲音乐;内定倒数计时时间为5分钟,显示为“0500”。

1.2设计方案及思路

根据设计要求,本系统初步设定由单片机系统、A-D键、LED显示

和音乐播放系统组成。

系统能完成定时、倒计时、定时到播放音乐提醒等功能。

1)按键的输入:

A、B、C、D四个键作为时间设定的控制键,可由P1口输入。

2)倒计时的显示电路:

8051显示电路由4位共阴极数码管显示,显示为动态扫描显示,其LED数码管的段码输入接8051P0口,而位码则接8051P3口,输入码由共阴极字型码确定,此点必须在软件设计时注意,以免输出显示有误。

3)音乐播放部分:

利用8051P3.7口的接上蜂鸣器,当定时时间减为零时,可以播放音乐,提醒定时到,并按任意键停止播放,进行复位。

第2章系统硬件设计

2.1硬件电路的总体设计方案及框图

设计一个控制系统总体设计方案很重要,关系设计接下来的操作

程序,以下就是本设计的总体框架。

按照设计要求,确定硬件电路的总体设计方案,以8051单片机

为核心的控制电路,设计总框图如下所示,此音乐提醒定时器电路包含:

按键输入、显示电路、定时到播放音乐电路,这些控制电路将在硬件电路主要模块设计详细介绍。

设计的总框图如下所示:

图2.1.1设计总框图

2.2各单元硬件设计

此控制系统的硬件包括以下几个模块:

音乐播放电路设计、按键电路设计、显示电路设计,还包括了晶振电路、复位电路和单片机的电源电路设计,这些电路并未在硬件原理图中画出。

2.2.1显示电路设计

8051显示电路由4位共阴极数码管显示。

为了使硬件显示电路简

单,采用单片机直接驱动数码管,用动态扫描法实现数码管显示,其

LED数码管的段码输入接8051P0口,而位码则接8051P3口,输入码由共阴极字型码确定,以免输出显示有误。

显示电路设计硬件图如下所

示:

222音乐播放电路设计

2.3主要硬件元器件的介绍

231单片机8051芯片

根据初步设计方案的分析,设计这样一个简单的应用系统,可以选择带有EPROM的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。

该系统的设计我们采用8051芯片

图2.3.1所示为双列直插式封装的8051AH芯片管脚图,功能如下。

1.电源管脚

Vcc(40脚):

接+5V;Vss(20脚):

接地。

(注:

管脚未画出)

2•时钟信号管脚

X1(19脚),X2(18脚):

外部时钟信号的两个管脚

3•控制线

1)RESET(9脚):

用作复位输入端。

2)EA'NP(31脚):

EA'为访问内部或图2.3.18051AH管脚图外部程序存储器的选择信号。

对片内EPROM编程市时,此管脚(作VP)接入21V编程电压。

3)ALE/P'(30脚):

当访问外部存储器时,ALE信号的负跳变将P0口上的低8位地址送入锁存器。

当对内EPROM编程时,该管脚(P')用于输入编程脉冲。

4)PSEN'(29脚):

外部程序存储器读选通控制信号。

4.输入/输出口线

1)P0口(32—39脚):

8路漏极开路型双向并行I/O口。

在访问外部存储器时,P0口作为低8位地址/数据总线复用口,通过分时操作,先传送低8位地址,利用ALE信号的下降沿将地址锁存,然后作为8位数据总线使用,用来传送8位数据。

在对片内EPROM编程时,P0口接受指令代码;而在内部程序校验时,则输出指令代码,并要求外接上拉电阻。

外部不扩展而单片应用时,则作双向I/O口用,P0口能以吸收电流的方式驱动8个LSTTL负载。

2)P1口(1—8脚):

具有内部上拉电阻的8位准双向I/O口。

在对片内EPROM编程及校验时,它接收低8位地址。

P1口能驱动4个LSTTL负载。

3)P2口(21-28脚):

具有内部上拉电阻的8位准双向I/O口。

在外接存储器时,P2口作为高8位地址总线。

在对片内EPROM编程及校验时,它接收高8位地址。

P2口驱动4个LSTTL负载。

4)P3口(10—17脚):

8位带有内部上拉电阻的准双向I/O口。

每一位又具有如下的特殊功能(或称第二功能):

P3.0(RXD):

串行输入端。

P3.1(TXD):

串行输出端。

P3.2(INTO':

外部中断0输入端,低电平有效。

P3.3(INT1':

外部中断1输入端,低电平有效。

P3.4(T0):

定时/计数器0外部事件计数输入端。

P3.4(T0):

定时/计数器0外部事件计数输入端。

P3.5(T1):

定时/计数器1外部事件计数输入端。

P3.6(WR':

外部数据存储器写选通信号,低电平有效。

P3.7(RD':

外部数据存储器读选通信号,低电平有效。

2.3.2LED数码管

数码管是单片机系统中常用的显示界面,可以显示“1、2、3、4、5、&7、8、9、0”和十六进制中的“A、BC、DE、F”及小数点“.”,数码管怎样来显示1,2,3,4呢?

数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。

分别被命名为A,B,C,D,E,F,G,H

和DP如果要显示一个数字2,那么A、B、GE、D这5个段的发光管亮,B、E、H(小数点)不亮,就可以了。

图2.3.2LED数码管内部结构

由图2.3.2可知:

要使数码管发光必须满足两个条件,一、COM

端为高电平。

二、在A-G端的对应部分输入低电平。

这样电流流过相应的字段,数码管就会显示相应的字符了!

图5所示,由于数码管的"A、

B、C....DP"端都并在一起,要使每个数码管显示各自的内容,使用动静态扫描方式都可以。

下面是共阴极数码管字型码表:

显示

A

B

C

D

E

F

G

DP

16进制

数字

代码

0

0

0

0

0

0

0

1

1

03H

1

1

0

0

1

1

1

1

1

9FH

2

0

0

1

0

0

1

0

1

25H

3

0

0

0

0

1

1

0

1

0DH

4

1

0

0

1

1

0

0

1

99H

5

0

1

0

0

1

0

0

1

49H

6

0

1

0

0

0

0

0

1

41H

7

0

0

0

1

1

1

1

1

1FH

8

0

0

0

0

0

0

0

1

01H

9

0

0

0

0

1

0

0

1

09H

A

0

0

0

1

0

0

0

1

11H

B

1

1

0

0

0

0

0

1

C1H

C

0

1

1

0

0

0

1

1

63H

D

1

0

0

0

0

0

0

1

85H

E

0

1

1

0

0

0

0

1

61H

F

0

1

1

1

0

0

0

1

71H

1

1

1

1

1

1

1

0

FEH

表1字符代码表

注:

对于想显示的字符只要查表的代码送段码输入口显示即可。

第3章软件设计与说明

3.1程序设计流程图

3.2软件电路的总体设计方案及框图

根据硬件方案即可确定软件的设计,各部分从图中清楚的了解到,各子程序模块将详细介绍。

3.2.1软件电路的总体设计方案及框图

3.3软件模块设计

该音乐提示定时器的软件设计分为以下几个模块:

3.3.1主程序模块

主程序主要完成初始化、检查有无按键按下、设定时间、以及调用

显示等等。

程序见附录A

 

332按键扫描模块

333音乐播放模块

 

第4章使用说明

1、通电以后,显示窗显示默认设定时间“0500”计时5分钟。

2、按时间设定键A、B、C、D,可设定不同时间的定时。

A键:

可设定时间在1-60分钟内以5分钟为最小时间段进行调整,每按键一次,时间加5分钟。

B键:

设置倒数计时时间为5分钟,与默认时间相同。

C键:

设置倒数计时时间为10分钟,显示为“1000”

D键:

设置倒数计时时间为20分钟,显示为“2000”。

3、设定时间后,定时器开始工作。

4、定时时间到,会播放一段音乐,按任意键停止。

5、在任何情况下,按下复位键(R键),定时器重新回到初始状态,显示默认时间“0500”。

第5章设计总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二

十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说数码管的共阴极和共阳极的字型码的区别,有对单片机芯片的选择的犹豫不定,还有对单片机汇编语言掌握得不好。

不过总的来说还是受益非浅,两周昼夜的付出也是有回报的,经过自己的亲身的体验,进一步巩固了先前不熟悉的知识,锻炼了自己的思维能力,动手能力,也感受到了理论和实际结合的重要性,要使两者很好的结合还是有挑战性的,两周的课程设计可谓之尝尽人间酸甜苦辣,在苦中弥补自己的不足,之后才会感受到收获的快乐。

致谢

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,

后在周向红老师的辛勤指导下,终于游逆而解。

同时,在周老师的身上

我学得到很多实用的知识,在次我表示感谢!

同时,对给过我帮助的所

有同学和各位指导老师再次表示忠心的感谢!

参考文献

1、《51系列单片机设计实例》

楼然苗

李光飞北航出版社

2、《单片机应用系统设计》

何立民

北航出版社

3、《单片机原理及应用》

王迎旭

机械工业出版社

4、《单片机实用系统设计技术》

房小翠

国防工业出版社

附录:

A系统电路原理图

 

<9

no

no

08

-7

62

03

02

03

.4

C5

Ou

_/7

<9

 

DXI

DXR

PPPPPPPP

 

HI'

RW

DRHEJR

2X

1X

Q—

II9Nd-N

9

d3

PPPPPPPP

0

・•2—923

c

310^X3

 

B系统程序清单

――伪定义一一

 

L0〜L3:

显示数据存储器

功能键K1、K2、K3、K4

SLEQU30H

SHEQU31H

MLEQU32H

MHEQU33H;

L0EQU34H;

L1EQU35HL2EQU36H

L3EQU37H

DSPLYPEQU38H;

PLYTSEQU39H;

LPLMODBIT37H;

HPLMODBIT38H;

BRIGHTBIT39H;

TCOUNTEQU3AH;

ADDRESSEQU3B;

MAXEQU3CH;

IFDECBIT20H;

R_MODEQU3DH;

BELLBLDP3.7;

AKEYBITP1.0;

BKEYBITP1.1

CKEYBITP1.2

DKEYBITP1.3

秒的个位数秒的十位数分的个位数分的十位数

显示数据指针显示次数计数器

低两位显示方式

高两位显示方式

DISPLAY子程序参数

时间计数器加1子程序参数

加1子程序参数BCD减法子程序参数响铃方式参数蜂鸣器

主程序

MOVSP#57H

MOVPS,#00H

;设置堆栈指针

;选用寄存器组0

 

MOVTH0#3CH

 

MOVML#05H

MOVM,#00H

MOVPLYT,#64H;赋显示次数初值为100次

MOVDSPLY,#L0;现实指针指向显存单元

;送显示数据“0500”

 

 

SETBHPLMOD

 

ACALLKEYDLY

JBAKEYK1

JBBKEYBEGIN;有键按下则转为相应计时状态

ACALLKEYDLY

JBBKEYBEGIN

JBCKEYK3

ACALLKEYDLY

JBCKEYK3

JBDKEYK4

ACALLKEYDLY

JBDKEYK4

BEGINSETET0

;无键按下,以默认值0500开始计时

SETTR0

 

K1:

CLRET0

CLRTR0

MOVSL#00

MOVSH#00

MOVMJL#00

MOVM,#00

SETCLRLPLMOD

SETBHPLMOD

MOVMAX,#60H

MOVR2,#5

;使每按键一次,调用加

SET1:

MOVADDRES徘MH

;有键按下,中断,停止计时

;清除原计时数据

;设置分位

;高两位数码管闪烁

;最大数为60

1程序5次

;移入分位的地址

ACALLADDONE;调用力卩1程序

DJNZR2,SET1

;循环,使A键按键一次,分位加5

 

JBAKEY,SET

ACALLKEYDLY

JBAKEY,SET

LJMBBEGIN

K3:

CLRET0;

CLRTRO;

MOVL0,#00

MOVL1,#00

MOVL2,#00

MOVL3,#01

LJMPBEGIN

K4:

CLRET0

CLRTR0;

MOVL0,#00

MOVL1,#00

MOVL2,#00

MOVL3,#02

DJMPBEGIN

JUDGEMOVA,SL

JNZMAIN1

;有键按下,再加5分钟

;无键按下,开始计时

;有键按下,停止计时

;设定1000

;送显示数据

;有键按下,停止计时

;设定2000

;送显示数据2000

;判断秒是否为0

 

MOVA,SH

JNZMAIN1

MOVA,ML

JNZMAIN1

MOVA,MH

JNZMAIN1

CLRETO

CLRTRO

ACALLMUSICO

AJMPMAIN

——倒计时程序——

PGTOCLREA

PUSHACC

PUSHPSW

PUSHDPL

PUSHDPH

MOVPSW#08H

CLRTRO

MOVA#O87H

ADDATLO

MOVTLOA

MOVA#3CH

ADDATHO

MOVTHOA

SETBTRO

;判断分是否为O

;分、秒全为O,停止计时

;调用定时到音乐播放程序

;返回

;关中断

;保护现场

;选用寄存器组1

;暂停计时

;中断同步修正

恢复计时

 

MOVTCOUNT14H

DECTCOUNT

;定时器每50.000ms溢出一次

MOVA,TCOUNT

;溢出20次为1s

JNZOUTT0

;判断是否到1s

MOVR0#SH

;移入秒位的地址

SETBIFDEC

;BCD子程序参数,使其做减法

ACALLADDBCD

;调用BCD子程序,秒减1

CJNER3#99H,OUTT0;判断秒是否要借位

MOVSH#05H

;要借位则送数据59

MOVSL#09H

MOVR0#MH

;移入分位的地址

ACALLADDBCD

;分减1

OUTT0POPDFH

POPDPL

POPPSW

POPACC

SETBEA

;开中断

RETI

;中断返回

——BCD?

程序——

ADDBCDMOVA@RO

;移入被操作数的高位

DECRO

;指针减1

SWAPA

ORLA@R0

;移入被操作数的低位

MOVB#01H

;B寄存器送立即数#01H

MOVCIFDEC;减法标志位为

MOVB.3C

MOVB.4,C;寄存器B被改位#99H

MOVB.7,1

ADDAB

;对一个压缩的BCD码加#90H等于减1

DAA

MOVR3A

ANLA,#0FH

MOV@RO,A

MOVAR3

INCRO

SWAPA

ANLA,0FH

MOV@R0,A

RET

;BCD码调整

;暂存结果

;取低位码

;存数

;取结果

;指针加1

;交换

;取结果数的高位

;存数

加1程序

ADDONEMOVR0,ADDRESS;移入被加数单元的地址

CLRIFDEC

;设定BCD子程序做加法

ACALLADDBC

;调用BC子程序

CLRC

;判断被加数是否大于最大值“MAX

MOVAR3

CJNEAMAXJGOVER

JGOVE:

JCENDADD

CARA

M0@RO,A

DECRO

MOV@RO,A

;若大于“MA”则清0

;返回

RET

 

音乐播放程序

MUSICO:

NOP

MOVDPTR,#DAT

MOV20H,#00H

MOVB,#00H

MUSIC1:

NOP

;表头地址送DPTR

;中断计数器清0

;表序号清0

 

CLRA

MOVCA,@A+DPTR;查表取代码

JZEND0;是00H,则结束

CJNEA,#0FFH,MUSIC5

LJMPMUSIC3

MUSIC5:

NOP

MOVR6,A

INCDPTR

MOVA,B

MOVCA,@A+DPTR

;取节拍代码

ADDA,#5

;调整节奏

MOVR7,A

MOVP1,A

;送P1口显示节拍

SETBTR0

;启动计数

MUSIC2:

NOP

CPLP3.7

MOVA,R6

MOVR3,A

LCALLDEL

MOVA,R7

CJNEA,20H,MUSIC2

;不等,则继续循环

MOV20H,#00H

INCDPTR

LJMPMUSIC1

MUSIC3:

NOP

CLRTR0

MOVR2,#0DH

MUSIC4:

NOP

MOVR3,#0FFH

LCALLDEL

DJNZR2,MUSIC4

INCDPTR

LJMPMUSIC1

END0:

NOP

MOVR2,#64H

MUSIC6:

MOVR3,#00H

LCALLDEL

;中断计数器(20H)=R7否?

;等于,则取下一代码

;休止100毫秒

;歌曲结束,延时1秒后继续

DJNZR2,MUSIC6

LJMPMUSIC0

DEL:

NOP

DEL3:

MOVR4,#02H

DEL4:

NOP

DJNZR4,DEL4

NOP

DJNZR3,DEL3

RET

NOP

DAT:

DB18H,30H,1CH,10H

DB20H,40H,1CH,10H

DB18H,10H,20H,10H

DB1CH,10H,18H,40H

DB1CH,20H,20H,20H

DB1CH,20H,18H,20H

DB20H,80H,0FFH,20H

DB30H,1CH,10H,18H

DB20H,15H,20H,1CH

DB20H,20H,20H,26H

DB40H,20H,20H,2BH

DB20H,26H,20H,20H

DB20H,30H,80H,0FFH

DB20H,20H,1CH,10H

DB18H,10H,20H,20H

DB26H,20H,2BH,20H

DB30H,20H,2BH,40H

DB20H,20H,1CH,10H

DB18H,10H,20H,20H

DB26H,20H,2BH,20H

DB30H,20H,2BH,40H

DB20H,30H,1CH,10H

DB18H,20H,15H,20H

DB1CH,20H,20H,20H

DB26H,40H,20H,20H

DB2BH,20H,26H,20H

DB20H,20H,30H,80H

DB20H,30H,1CH,10H

DB20H,10H,1CH,10H

DB20H,20H,26H,20H

DB2BH,20H,30H,20H

DB2BH,40H,20H,15H

DB1FH,05H,20H,

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

当前位置:首页 > 法律文书 > 辩护词

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

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