音乐提示定时器课程设计报告Word文件下载.docx
《音乐提示定时器课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《音乐提示定时器课程设计报告Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
音乐播放电路设计、按键电路设计、显示电路设计,还包括了晶振电路、复位电路和单片机的电源电路设计,这些电路并未在硬件原理图中画出。
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脚):
在外接存储器时,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.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进制
数字
代码
1
03H
9FH
2
25H
3
0DH
4
99H
5
49H
6
41H
7
1FH
8
01H
9
09H
11H
C1H
63H
85H
61H
71H
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系统电路原理图
<
no
08
-7
62
03
02
.4
C5
Ou
_/7
DXI
DXR
PPPPPPPP
HI'
RW
DRHEJR
2X
1X
Q—
II9Nd-N
d3
・•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减法子程序参数响铃方式参数蜂鸣器
主程序
MOVTH0#3CH
MOVML#05H
MOVM,#00H
MOVPLYT,#64H;
赋显示次数初值为100次
MOVDSPLY,#L0;
现实指针指向显存单元
;
送显示数据“0500”
SETBHPLMOD
ACALLKEYDLY
JBAKEYK1
JBBKEYBEGIN;
有键按下则转为相应计时状态
JBBKEYBEGIN
JBCKEYK3
JBDKEYK4
BEGINSETET0
无键按下,以默认值0500开始计时
SETTR0
K1:
CLRET0
CLRTR0
MOVSL#00
MOVSH#00
MOVMJL#00
MOVM,#00
SETCLRLPLMOD
MOVMAX,#60H
MOVR2,#5
使每按键一次,调用加
SET1:
MOVADDRES徘MH
有键按下,中断,停止计时
清除原计时数据
设置分位
高两位数码管闪烁
最大数为60
1程序5次
移入分位的地址
ACALLADDONE;
调用力卩1程序
DJNZR2,SET1
循环,使A键按键一次,分位加5
JBAKEY,SET
LJMBBEGIN
K3:
CLRET0;
CLRTRO;
MOVL0,#00
MOVL1,#00
MOVL2,#00
MOVL3,#01
LJMPBEGIN
K4:
CLRTR0;
MOVL3,#02
DJMPBEGIN
JUDGEMOVA,SL
JNZMAIN1
有键按下,再加5分钟
无键按下,开始计时
有键按下,停止计时
设定1000
送显示数据
设定2000
送显示数据2000
判断秒是否为0
MOVA,SH
MOVA,ML
MOVA,MH
CLRETO
CLRTRO
ACALLMUSICO
AJMPMAIN
——倒计时程序——
PGTOCLREA
PUSHACC
PUSHPSW
PUSHDPL
PUSHDPH
MOVPSW#08H
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
分减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
ANLA,0FH
MOV@R0,A
RET
BCD码调整
暂存结果
取低位码
存数
取结果
指针加1
交换
取结果数的高位
加1程序
ADDONEMOVR0,ADDRESS;
移入被加数单元的地址
CLRIFDEC
设定BCD子程序做加法
ACALLADDBC
调用BC子程序
CLRC
判断被加数是否大于最大值“MAX
CJNEAMAXJGOVER
JGOVE:
JCENDADD
CARA
M0@RO,A
若大于“MA”则清0
返回
音乐播放程序
MUSICO:
NOP
MOVDPTR,#DAT
MOV20H,#00H
MOVB,#00H
MUSIC1:
表头地址送DPTR
中断计数器清0
表序号清0
CLRA
MOVCA,@A+DPTR;
查表取代码
JZEND0;
是00H,则结束
CJNEA,#0FFH,MUSIC5
LJMPMUSIC3
MUSIC5:
MOVR6,A
INCDPTR
MOVA,B
MOVCA,@A+DPTR
取节拍代码
ADDA,#5
调整节奏
MOVR7,A
MOVP1,A
送P1口显示节拍
SETBTR0
启动计数
MUSIC2:
CPLP3.7
MOVA,R6
MOVR3,A
LCALLDEL
MOVA,R7
CJNEA,20H,MUSIC2
不等,则继续循环
LJMPMUSIC1
MUSIC3:
MOVR2,#0DH
MUSIC4:
MOVR3,#0FFH
DJNZR2,MUSIC4
END0:
MOVR2,#64H
MUSIC6:
MOVR3,#00H
中断计数器(20H)=R7否?
等于,则取下一代码
休止100毫秒
歌曲结束,延时1秒后继续
DJNZR2,MUSIC6
LJMPMUSIC0
DEL:
NOP
DEL3:
MOVR4,#02H
DEL4:
DJNZR4,DEL4
DJNZR3,DEL3
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,30H,1CH,10H
DB18H,20H,15H,20H
DB26H,40H,20H,20H
DB2BH,20H,26H,20H
DB20H,20H,30H,80H
DB20H,10H,1CH,10H
DB20H,20H,26H,20H
DB2BH,20H,30H,20H
DB2BH,40H,20H,15H
DB1FH,05H,20H,10H
DB1CH,10H,20H,20H
DB20H,30H,1CH