简易电子琴电子课程设计文档格式.docx
《简易电子琴电子课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《简易电子琴电子课程设计文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
单片机输出电流加上晶体管把电流放大后驱动扬声器,只要改变半周期t的时间,即可改变输出频率。
2)决定程序中延时参数的方法
C调各音阶的频率如表所示,根据此频率表可计算出程序中所需的延时参数
音阶
DO
RE
MI
FA
SO
LA
SI
高音
音符
1
2
3
4
5
6
7
频率
522
587
659
700
784
880
988
中音
262
294
330
349
392
440
494
低音
131
147
165
175
196
220
247
DO的频率为262HZ,所以周期T=1/f=1/262s=3816us半周期t=T/2=1908us
<
2>
若以程序
MOV6,#data
ACALLDELAY
DELAY:
MOVB,R6
MOVR7,#06
DL:
DJNZR7,$
DJNZR6,DL
MOVR6,B
RET
来达成延时t的目的,则因t=1908us,且
MOVR6,#DATA
MOVR6,B
这5个指令共耗时9us,所以在delay子程序中,循环的部分只能是1908-9=1899us
3>
循环的部分没执行一次耗时15us,故要延时1899us需重复执行1899/15=126次,R6=126就可产生所需的DO音调。
4》其他音调所需的R6值,算法一样
5>
采用中断程序做数字音乐盒,把一个音乐盒程序当成一个中断程序添入到源程序中ORG0000H
LJMPMAIN
ORG0003H
LJMPINT
ORG0030H
MAIN:
主程序
INT:
中断服务程序
四.程序设计ORG0050H
AJMPMAIN
AJMPSTART
ORG30H
ORLP1,#11111111B
ORLP3,#11111111B
TEST:
JNBP3.1,LAL1
JNBP3.0,SIL1
JNBP1.7,DO1
JNBP1.6,RE1
JNBP1.5,MI1
JNBP1.4,FA1
JNBP1.3,SO1
JNBP1.2,LA1
JNBP1.1,SI1
JNBP1.0,DOH1
AJMPTEST
;
===========================
设定相对应的延时参数r6
LAL1:
MOVR6,#150
AJMPOUTPUT
SIL1:
MOVR6,#134
DO1:
MOVR6,#126
RE1:
MOVR6,#113
MI1:
MOVR6,#100
FA1:
MOVR6,#95
SO1:
MOVR6,#85
LA1:
MOVR6,#75
SI1:
MOVR6,#67
DOH1:
MOVR6,#63
=========================
==输出一周========
OUTPUT:
CLRP3.7
SETBEA
SETBEX0
SETBPX0
ACALLDELAY1
SETBP3.7
==延时半周期t====
START:
MOVDPTR,#MUSIC
CONT:
CLRA
MOVCA,@A+DPTR
CJNEA,#40,CHK
AJMPBEA
CHK:
CJNEA,#255,OK
STOP:
AJMPSTOP
OK:
INCDPTR
CLRA
MOVR4,A
CHK1:
CJNEA,#01,CHK2;
依据各代码发出相对应的声音
ACALLDOL
CHK2:
CJNEA,#02,CHK3
ACALLREL
CHK3:
CJNEA,#03,CHK4
ACALLMIL
CHK4:
CJNEA,#04,CHK5
ACALLFAL
CHK5:
CJNEA,#05,CHK6
ACALLSOL
CHK6:
CJNEA,#06,CHK7
ACALLLAL
CHK7:
CJNEA,#07,CHK11
ACALLSIL
CHK11:
CJNEA,#11,CHK12
ACALLDO
CHK12:
CJNEA,#12,CHK13
ACALLRE
CHK13:
CJNEA,#13,CHK14
ACALLMI
CHK14:
CJNEA,#14,CHK15
ACALLFA
CHK15:
CJNEA,#15,CHK16
ACALLSO
CHK16:
CJNEA,#16,CHK17
ACALLLA
CHK17:
CJNEA,#17,CHK21
ACALLSI
CHK21:
CJNEA,#21,CHK22
ACALLDOH
CHK22:
CJNEA,#22,CHK23
ACALLREH
CHK23:
CJNEA,#23,CHK24
ACALLMIH
CHK24:
CJNEA,#24,CHK25
ACALLFAH
CHK25:
CJNEA,#25,CHK26
ACALLSOH
CHK26:
CJNEA,#26,CHK27
ACALLLAH
CHK27:
CJNEA,#27,CHK0
ACALLSIH
CHK0:
CJNEA,#00,CHK
ACALLNON
CONT2:
AJMPCONT;
设定音阶代码参数
DOL:
MOVR6,#254
MOVR5,#16
AJMPLOOP
REL:
MOVR6,#226
MOVR5,#18
MIL:
MOVR6,#201
MOVR5,#21
FAL:
MOVR6,#190
MOVR5,#22
SOL:
MOVR6,#170
MOVR5,#25
LAL:
MOVR5,#28
SIL:
MOVR5,#31
DO:
MOVR5,#33
RE:
MOVR5,#37
MI:
MOVR5,#41
FA:
MOVR5,#44
SO:
MOVR5,#49
LA:
MOVR5,#55
SI:
MOVR5,#62
DOH:
MOVR5,#65
REH:
MOVR6,#56
MOVR5,#73
MIH:
MOVR6,#50
MOVR5,#82
FAH:
MOVR6,#47
MOVR5,#88
SOH:
MOVR6,#42
MOVR5,#98
LAH:
MOVR6,#37
MOVR5,#110
SIH:
MOVR6,#33
MOVR5,#124
NON:
AJMPLOOP;
输出r5*r4周的方波
LOOP:
CJNEA,#00,SOUND
AJMPMUTE
SOUND:
MUTE:
ACALLDELAY
DJNZR5,LOOP
DJNZR4,LOOP
REST:
MOVR6,#170
MOVR5,#20
WAIT:
DJNZR5,WAIT
RET
DELAY:
MOVR7,#6
DJNZR6,DL
MUSIC:
DB11,04,11,04,11,04
DB40
BEA:
NOP
RETI
DELAY1:
MOVB,R6
DL1:
MOVR7,#6
DJNZR7,$
DJNZR6,DL1
END
五、各部分电路设计
1、产生声音的基本接线电路
六、整体电路图
七、设计总结
1、设计过程中遇到的问题及解决方法
(1)单片机无法正常工作
外接电容被烧毁
(2)蜂鸣器无法正常工作
驱动三极管应该使用的是npn的高电平触发,应该使用pnp低电平触发
(3)对于P1和P3的使用,尤其是第二功能键要合理使用,关键时刻应用于特殊用途。
2、设计体会
虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。
第二,是在学习态度上,这次课设是对我的学习态度的一次检验。
对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。
我们这次实习所遇到的多半问题多数都是由于我们不够严谨。
第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
3、对设计的建议
(1)熟练掌握KeilC51集成开发环境的使用方法。
(2)熟悉KeilC51集成开发环境调试功能的使用和DP51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台的使用。
(3)利用单片机的P1口作IO口,学会利用P1口作为输入和输出口。
(4)了解掌握单片机芯片的烧写方法与步骤。
(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。