单片机实验报告4.docx
《单片机实验报告4.docx》由会员分享,可在线阅读,更多相关《单片机实验报告4.docx(17页珍藏版)》请在冰豆网上搜索。
单片机实验报告4
单片机原理与应用实验报告
(四)
题目:
音乐播放模块实验
学院:
专业:
姓名:
指导教师:
赫辽瓦
完成日期:
2012年11月04日
一、实验题目
音乐播放模块实验
二、实验目的
(1)掌握可编程的软件K3设计与应用;
(2)掌握实验所用电子元件的特性、使用性能及其焊接方法;
(3)掌握用软件CAD画图;
(4)了解歌曲的编译规则。
三、实验内容
(1)编译毛阿敏的《思念》;
(2)焊接共阳接法的音乐播放模块。
四、硬件电路
1.硬件电路图及设计说明
电路图:
(共阳接法)
+5V
音乐播放模块电路图
彩灯模块实物图
硬件电路图说明
1)共阳极接法。
2)本电路设计追求最简原则,没用驱动器。
2.电子元器件清单
序号
名称
数量
1
电路板
1块
2
扬声器
1个
3
排插针座
1个
4
电阻330Ω
16个
5
焊锡
若干
6
9013三极管
1个
7
电阻10kΩ
1个
五、编制软件
1.程序流程框图
2.歌曲简谱
3.LST表格文件清单
A51MACROASSEMBLERSTARTUP10/30/201221:
22:
05PAGE1
MACROASSEMBLERA51V8.00
OBJECTMODULEPLACEDINSTARTUP.OBJ
ASSEMBLERINVOKEDBY:
E:
\Keil\C51\BIN\A51.EXESTARTUP.A51SET(SMALL)DEBUGEP
LOCOBJLINESOURCE
1$nomod51
2;--------------------------------------------------
3;ThisfileispartoftheC51Compilerpackage
4;Copyright(c)1988-2005KeilElektronikGmbHandKeilSoftware,Inc.
5;Version8.01
6;
7;***<<>>***
8;-------------------------------------------------
9;STARTUP.A51:
Thiscodeisexecutedafterprocessorreset.
10;
11;TotranslatethisfileuseA51withthefollowinginvocation:
12;
13;A51STARTUP.A51
14;
15;TolinkthemodifiedSTARTUP.OBJfiletoyourapplicationusethefollowing
16;Lx51invocation:
17;
18;Lx51yourobjectfilelist,STARTUP.OBJcontrols
19;
20;---------------------------------------------------
21;
22;User-definedPower-OnInitializationofMemory
23;
24;WiththefollowingEQUstatementstheinitializationofmemory
25;atprocessorresetcanbedefined:
26;
27;IDATALEN:
IDATAmemorysize<0x0-0x100>
28;Note:
Theabsolutestart-addressofIDATAmemoryisalways0
29;TheIDATAspaceoverlapsphysicallytheDATAandBITareas.
008030IDATALENEQU80H
31;
32;XDATASTART:
XDATAmemorystartaddress<0x0-0xFFFF>
33;TheabsolutestartaddressofXDATAmemory
000034XDATASTARTEQU0
35;
36;XDATALEN:
XDATAmemorysize<0x0-0xFFFF>
37;ThelengthofXDATAmemoryinbytes.
000038XDATALENEQU0
39;
40;PDATASTART:
PDATAmemorystartaddress<0x0-0xFFFF>
41;TheabsolutestartaddressofPDATAmemory
000042PDATASTARTEQU0H
43;
44;PDATALEN:
PDATAmemorysize<0x0-0xFF>
45;ThelengthofPDATAmemoryinbytes.
000046PDATALENEQU0H
47;
48;
49;---------------------------------------------------------
50;
51;ReentrantStackInitialization
52;
53;ThefollowingEQUstatementsdefinethestackpointerforreentrant
54;functionsandinitializedit:
55;
56;StackSpaceforreentrantfunctionsintheSMALLmodel.
57;IBPSTACK:
EnableSMALLmodelreentrantstack
58;StackspaceforreentrantfunctionsintheSMALLmodel.
A51MACROASSEMBLERSTARTUP10/30/201221:
22:
05PAGE2
000059IBPSTACKEQU0;setto1ifsmallreentrantisused.
60;IBPSTACKTOP:
EndaddressofSMALLmodelstack<0x0-0xFF>
61;Setthetopofthestacktothehighestlocation.
010062IBPSTACKTOPEQU0xFF+1;default0FFH+1
63;
64;
65;StackSpaceforreentrantfunctionsintheLARGEmodel.
66;XBPSTACK:
EnableLARGEmodelreentrantstack
67;StackspaceforreentrantfunctionsintheLARGEmodel.
000068XBPSTACKEQU0;setto1iflargereentrantisused.
69;XBPSTACKTOP:
EndaddressofLARGEmodelstack<0x0-0xFFFF>
70;Setthetopofthestacktothehighestlocation.
000071XBPSTACKTOPEQU0xFFFF+1;default0FFFFH+1
72;
73;
74;StackSpaceforreentrantfunctionsintheCOMPACTmodel.
75;PBPSTACK:
EnableCOMPACTmodelreentrantstack
76;StackspaceforreentrantfunctionsintheCOMPACTmodel.
000077PBPSTACKEQU0;setto1ifcompactreentrantisused.
78;
79;PBPSTACKTOP:
EndaddressofCOMPACTmodelstack<0x0-0xFFFF>
80;Setthetopofthestacktothehighestlocation.
010081PBPSTACKTOPEQU0xFF+1;default0FFH+1
82;
83;
84;----------------------------------------------------
85;
86;MemoryPageforUsingtheCompactModelwith64KBytexdataRAM
87;CompactModelPageDefinition
88;
89;DefinetheXDATApageusedforPDATAvariables.
90;PPAGEmustconformwiththePPAGEsetinthelinkerinvocation.
91;
92;Enablepdatamemorypageinitalization
000093PPAGEENABLEEQU0;setto1ifpdataobjectareused.
94;
95;PPAGEnumber<0x0-0xFF>
96;uppermost256-byteaddressofthepageusedforPDATAvariables.
000097PPAGEEQU0
98;
99;SFRaddresswhichsuppliesuppermostaddressbyte<0x0-0xFF>
100;most8051variantsuseP2asuppermostaddressbyte
00A0101PPAGE_SFRDATA0A0H
102;
103;
104;---------------------------------------------------
105
106;StandardSFRSymbols
00E0107ACCDATA0E0H
00F0108BDATA0F0H
0081109SPDATA81H
0082110DPLDATA82H
0083111DPHDATA83H
112
113NAME?
C_STARTUP
114
115
116?
C_C51STARTUPSEGMENTCODE
117?
STACKSEGMENTIDATA
118
----119RSEG?
STACK
0000120DS1
121
122EXTRNCODE(?
C_START)
123PUBLIC?
C_STARTUP
124
A51MACROASSEMBLERSTARTUP10/30/201221:
22:
05PAGE3
----125CSEGAT0
0000020000F126?
C_STARTUP:
LJMPSTARTUP1
127
----128RSEG?
C_C51STARTUP
129
0000130STARTUP1:
131
132IFIDATALEN<>0
0000787F133MOVR0,#IDATALEN-1
0002E4134CLRA
0003F6135IDATALOOP:
MOV@R0,A
0004D8FD136DJNZR0,IDATALOOP
137ENDIF
138
139IFXDATALEN<>0
140MOVDPTR,#XDATASTART
141MOVR7,#LOW(XDATALEN)
142IF(LOW(XDATALEN))<>0
143MOVR6,#(HIGH(XDATALEN))+1
144ELSE
145MOVR6,#HIGH(XDATALEN)
146ENDIF
147CLRA
148XDATALOOP:
MOVX@DPTR,A
149INCDPTR
150DJNZR7,XDATALOOP
151DJNZR6,XDATALOOP
152ENDIF
153
154IFPPAGEENABLE<>0
155MOVPPAGE_SFR,#PPAGE
156ENDIF
157
158IFPDATALEN<>0
159MOVR0,#LOW(PDATASTART)
160MOVR7,#LOW(PDATALEN)
161CLRA
162PDATALOOP:
MOVX@R0,A
163INCR0
164DJNZR7,PDATALOOP
165ENDIF
166
167IFIBPSTACK<>0
168EXTRNDATA(?
C_IBP)
169
170MOV?
C_IBP,#LOWIBPSTACKTOP
171ENDIF
172
173IFXBPSTACK<>0
174EXTRNDATA(?
C_XBP)
175
176MOV?
C_XBP,#HIGHXBPSTACKTOP
177MOV?
C_XBP+1,#LOWXBPSTACKTOP
178ENDIF
179
180IFPBPSTACK<>0
181EXTRNDATA(?
C_PBP)
182MOV?
C_PBP,#LOWPBPSTACKTOP
183ENDIF
184
0006758100F185MOVSP,#?
STACK-1
186
187;ThiscodeisrequiredifyouuseL51_BANK.A51withBankingMode4
188;CodeBanking
189;SelectBank0forL51_BANK.A51Mode4
190
A51MACROASSEMBLERSTARTUP10/30/201221:
22:
05PAGE4
195;
0009020000F196LJMP?
C_START
197
198END
A51MACROASSEMBLERSTARTUP10/30/201221:
22:
05PAGE5
SYMBOLTABLELISTING
------------------
NAMETYPEVALUEATTRIBUTES
?
C_C51STARTUP...CSEG000CHREL=UNIT
?
C_START.....CADDR-----EXT
?
C_STARTUP....CADDR0000HA
?
STACK......ISEG0001HREL=UNIT
ACC........DADDR00E0HA
B.........DADDR00F0HA
DPH........DADDR0083HA
DPL........DADDR0082HA
IBPSTACK.....NNUMB0000HA
IBPSTACKTOP....NNUMB0100HA
IDATALEN.....NNUMB0080HA
IDATALOOP.....CADDR0003HRSEG=?
C_C51STARTUP
PBPSTACK.....NNUMB0000HA
PBPSTACKTOP....NNUMB0100HA
PDATALEN.....NNUMB0000HA
PDATASTART....NNUMB0000HA
PPAGE.......NNUMB0000HA
PPAGEENABLE....NNUMB0000HA
PPAGE_SFR.....DADDR00A0HA
SP........DADDR0081HA
STARTUP1.....CADDR0000HRSEG=?
C_C51STARTUP
XBPSTACK.....NNUMB0000HA
XBPSTACKTOP....NNUMB0000HA
XDATALEN.....NNUMB0000HA
XDATASTART....NNUMB0000HA
REGISTERBANK(S)USED:
0
ASSEMBLYCOMPLETE.0WARNING(S),0ERROR(S)
六、实验总结
通过本次实验,我编译了毛阿敏的《思念》,虽然某些音跑调,但在老师的指点下编写完成相匹配的旋律。
在焊接方面,由于前期设计,使得焊接更加简洁迅速。
编写相应的程序是用查表法,方便易行。
通过此次实验,使我对单片机产生更加浓的兴趣,听着自己编译的歌曲,那是一种享受的体验。
参考文献
[1]李群芳,肖看,张士军.单片微型计算机与接口技术.北京:
电子工业出版社,2012年1月.