版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)</b></p><p> 實(shí) 驗(yàn) 報(bào) 告</p><p> XX 年 XX 月 XX 日</p><p><b> 一、實(shí)驗(yàn)?zāi)康?lt;/b></p><p> 1.熟練應(yīng)用proteus仿真單片機(jī)基本功能;</p>
2、;<p> 2.了解計(jì)算機(jī)控制蜂鳴器發(fā)聲原理(模擬電子琴);</p><p> 3.增強(qiáng)對(duì)匯編語言的熟悉。</p><p><b> 二、功能說明</b></p><p> 仿真功能:可以成功仿真單片機(jī)小程序;</p><p> 2. 單片機(jī)功能:電子音調(diào)發(fā)生器--撥動(dòng)不同的開關(guān)產(chǎn)生不同的音調(diào)即依
3、次波動(dòng)K0~K7,發(fā)出1,2,3,4,5,6,7,i八個(gè)音調(diào),播放兩首樂曲。</p><p> 三、實(shí)驗(yàn)原理及設(shè)計(jì)思路</p><p> ?。ㄒ唬㏄roteus仿真單片機(jī)</p><p> 在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。</p><p>
4、 PROTEUS不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。</p><p> 它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對(duì)應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測(cè)、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。</p><p> 使用Pro
5、teus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì),是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力;且對(duì)單片機(jī)的學(xué)習(xí)比單純學(xué)習(xí)書本知識(shí)更容易讓人接受,更容易提高。實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。</p><p> ?。ǘ╇娮右粽{(diào)發(fā)生器</p><p><b> 1.實(shí)
6、驗(yàn)原理</b></p><p><b> ?。?)音調(diào)與節(jié)拍:</b></p><p> 音調(diào)由不同頻率的方波產(chǎn)生,音調(diào)與頻率的關(guān)系如下表所示。要產(chǎn)生音頻方波,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用計(jì)時(shí)器計(jì)時(shí)此半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出方波的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳得
7、到此頻率的方波。在ZKS-03實(shí)驗(yàn)儀上,產(chǎn)生方波的I/O腳選用P1.7,通過跳線選擇器JP1將單片機(jī)的P1.7與蜂鳴器的驅(qū)動(dòng)電路相連。這樣P1.7輸出不同頻率的方波,蜂鳴器便會(huì)發(fā)出不同的聲音。</p><p> 音樂的節(jié)拍是由延時(shí)實(shí)現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設(shè)定延時(shí)時(shí)間,就可求得節(jié)拍的時(shí)間。延時(shí)作為基本延時(shí)時(shí)間,節(jié)拍值只能是它的整數(shù)倍。</p><p><b
8、> ?。?)蜂鳴器電路:</b></p><p> 蜂鳴器有交流和直流兩種。直流蜂鳴器驅(qū)動(dòng)簡(jiǎn)單,一旦在引腳上加入直流電源它就會(huì)發(fā)出一定頻率的聲音,此時(shí)聲音的音調(diào)和音量是固定的;而交流蜂鳴器在這方面則顯得較靈活,輸入聲音信號(hào)的頻率和音長(zhǎng)是可控的,因此輸出的聲響將更逼真、更悅耳。本實(shí)驗(yàn)儀有一個(gè)交流蜂鳴器,由于一般I/O口的驅(qū)動(dòng)能力有限,因此不用它直接驅(qū)動(dòng)蜂鳴器,它與P87C52X2的連接方式如下圖
9、所示。Buzzer通過一個(gè)跳線與P1.7相連,P1.7輸出不同頻率的方波信號(hào),蜂鳴器就會(huì)發(fā)出不同的聲音。如果控制輸出信號(hào)的頻率和音長(zhǎng),蜂鳴器則會(huì)發(fā)出悅耳的音樂。</p><p><b> 2.設(shè)計(jì)思路</b></p><p> 可將功能實(shí)現(xiàn)分如下模塊:電源模塊-開關(guān)控制模塊+MCU控制模塊+蜂鳴器發(fā)生模塊--數(shù)碼管顯示模塊</p><p>
10、<b> 四、實(shí)驗(yàn)過程</b></p><p> (一)Proteus仿真單片機(jī)</p><p> 1.第一個(gè)LED燈亮:</p><p> 程序:#include "reg52.h"</p><p> sbit led1=P1^0;</p><p> void d
11、elay()</p><p><b> {int i,j;</b></p><p> for(i=0;i<100;i++)</p><p> for(j=0;j<1000;j++);</p><p><b> }</b></p><p> void ma
12、in()</p><p><b> {while(1)</b></p><p> {led1=1;delay();led1=0;delay();</p><p><b> }</b></p><p><b> }</b></p><p> 實(shí)驗(yàn)
13、現(xiàn)象:第一個(gè)LED燈亮。</p><p><b> 仿真:</b></p><p><b> 流水燈</b></p><p> 程序:#include <reg52.h></p><p> void delay(void)</p><p> { in
14、t i;</p><p><b> int j;</b></p><p> for(i=0;i<100;i++)</p><p> for(j=0;j<200;j++);</p><p><b> }</b></p><p> void main(voi
15、d)</p><p><b> {int i;</b></p><p><b> while(1)</b></p><p> { P1 = 0xFF;delay();</p><p> for(i=0;i<8;i++)</p><p> {P1 = P1
16、<< 1;delay();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 實(shí)驗(yàn)現(xiàn)象:LED 燈從LED1向LED8依次亮,到全部亮后在循環(huán)</p><p
17、><b> 仿真:</b></p><p><b> 按鍵中斷</b></p><p><b> 程序:</b></p><p> #include<reg52.h></p><p> sbit s1 = P2^0;</p><p
18、> sbit s2 = P2^1;</p><p> sbit s3 = P2^2;</p><p> sbit s4 = P2^3;</p><p> sbit en = P2^5;</p><p> int dispcount = 0;</p><p> void Delay(int m)<
19、/p><p> {while(--m);</p><p><b> }</b></p><p> void ext_int0() interrupt 0 //中斷服務(wù)程序</p><p> { EA = 0;</p><p> Delay(4000);</p><
20、;p> dispcount++; //每按一次中斷按鍵,計(jì)數(shù)加一</p><p> if(dispcount==10) </p><p> dispcount=0;</p><p><b> EA = 1;</b></p><p><b> }</b>&l
21、t;/p><p> void ext_int1() interrupt 2 //中斷服務(wù)程序</p><p> { EA = 0;</p><p> Delay(4000);</p><p> dispcount--; //每按一次中斷按鍵,計(jì)數(shù)減一</p><p> if(disp
22、count<0) </p><p> dispcount=9;</p><p><b> EA = 1;</b></p><p><b> }</b></p><p> void display(void) //數(shù)碼管顯示函數(shù)</p><
23、;p> { s1 = 0;</p><p><b> s2 = 0;</b></p><p><b> s3 = 0;</b></p><p><b> s4 = 0;</b></p><p><b> en = 1;</b></
24、p><p> switch(dispcount)</p><p><b> {</b></p><p><b> case 0:</b></p><p> P0 = 0xC0; //display 0 </p><p> Delay(600
25、00); </p><p><b> break;</b></p><p><b> case 1:</b></p><p> P0 = 0xF9; //display 1</p><p> Delay(60000);</p><p><
26、;b> break;</b></p><p><b> case 2:</b></p><p> P0 = 0xA4;</p><p> Delay(60000); //display 2</p><p><b> break;</b></p>
27、;<p><b> case 3:</b></p><p> P0 = 0xB0; //display 3 </p><p> Delay(60000); </p><p><b> break;</b></p><p><b> ca
28、se 4:</b></p><p> P0 = 0x99; //display 4</p><p><b> break;</b></p><p><b> case 5:</b></p><p> P0 = 0x92; //display
29、5</p><p> Delay(60000);</p><p><b> break;</b></p><p><b> case 6:</b></p><p> P0 = 0x82; //display 6</p><p> Delay(600
30、00);</p><p><b> break;</b></p><p><b> case 7:</b></p><p> P0 = 0xF8;//display 7</p><p> Delay(60000);</p><p><b> bre
31、ak;</b></p><p><b> case 8:</b></p><p> P0 = 0x80; //display 8</p><p> Delay(60000);</p><p><b> break;</b></p><p>
32、;<b> case 9:</b></p><p> P0 = 0x90; //display 9</p><p> Delay(60000);</p><p><b> break;</b></p><p><b> default:</b><
33、;/p><p> P0 = 0x88; //display a </p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> void main()
34、</p><p> { TCON=0x05; </p><p><b> IE=0x85;</b></p><p> while(1) </p><p> {display(); //循環(huán)顯示,等待中斷</p><p><b> }</b></
35、p><p><b> }</b></p><p><b> 實(shí)驗(yàn)現(xiàn)象:</b></p><p> 數(shù)碼管顯示4個(gè)0,進(jìn)入等待外部中斷狀態(tài):按下S1時(shí),顯示值加一;按下S2時(shí),顯示值減一;</p><p><b> 仿真結(jié)果:</b></p><p>
36、 初始顯示0000,按下開關(guān)一后,數(shù)字加一;按下開關(guān)二,數(shù)字減一;最大值9999.</p><p> (二)電子音調(diào)發(fā)生器</p><p><b> 1.實(shí)驗(yàn)源程序</b></p><p><b> ORG 0000H</b></p><p> KEYPRO:JB P1.2,GO1 ;
37、P1.2口為1時(shí)跳轉(zhuǎn)</p><p> LJMP GOMUS1 ;P1.2口為0時(shí)判斷P1.4是否也為0,P1.4為0時(shí)長(zhǎng)轉(zhuǎn)移</p><p> GO0:LJMP KEYP01 ;P1.4口不為0,P1.2口為0時(shí)發(fā)1音</p><p> GO1:JB P1.4,GO2</p><p> LJMP GOMUS6</p&g
38、t;<p> G10:LJMP KEYP02 ;檢查P1.2不為0后,P1.4口為0 發(fā)“2”音</p><p> GO2:JB P1.5,GO3</p><p> LJMP GOMUS3 </p><p> GO21:LJMP KEYP03</p><p> GO3:JB P1.6,GO4</p>
39、<p> LJMP GOMUS7 </p><p> GO31:LJMP KEYP04 </p><p> GO4:JB P3.2,GO5</p><p> LJMP GOMUS4 </p><p> GO41:LJMP KEYP05</p><p> GO5:JB P3.3,GO6&l
40、t;/p><p> LJMP GOMUS8 </p><p> GO51:LJMP KEYP06</p><p> GO6:JB P3.4,GO8</p><p> LJMP GOMUS2</p><p> GO7:LJMP KEYP07 ;p3.4口為0 發(fā)“7”音 </
41、p><p> GO8:JB P3.5,KEYPRO ;都為1則重新掃描 </p><p> LJMP GOMUS5 ;跳到再次判定k6 </p><p> GO9:LJMP KEYP08 ;判定k6不為0,則p3.5口為0 發(fā)“I”音</p><p> GOMUS1:JB P1.4,GO0
42、 </p><p> LJMP MUSTART1 ;k0,k1同為0播歌1,k1不為0,返回1.2發(fā)“1”音</p><p> GOMUS2:JB P3.5,GO7 </p><p> LJMP MUSTART2 ;k6,k7同為0播歌2,k7不為0,返回3.4發(fā)“7”音</p><p> GOMUS3:J
43、B P1.6,GO21</p><p> LJMP MUSTART3</p><p> GOMUS4:JB P3.3,GO41</p><p> LJMP MUSTART4 </p><p> GOMUS5:JB P3.4,GO9 ;k7為0,再檢查k6是否為0 </p><p>
44、LJMP MUSTART2</p><p> GOMUS6:JB P1.2,G10</p><p> LJMP MUSTART1 ;k1為0,再檢查k0是否為0</p><p> GOMUS7:JB P1.5,GO31</p><p> LJMP MUSTART3</p><p> GOMUS8:JB P3
45、.2,GO51</p><p> LJMP MUSTART4</p><p> KEYP01:SETB P1.7 ;音調(diào)1的方波發(fā)生</p><p> MOV R3,#100 ;設(shè)循環(huán)初值,使開關(guān)在0時(shí)播放一段時(shí)間</p><p><b> MAIN01:</b><
46、/p><p> MOV TMOD,#01H ;設(shè)置定時(shí)器t0工作方式1</p><p> MOV TL0,#21H</p><p> MOV TH0,#0F9H ;音調(diào)1對(duì)應(yīng)初值f921h</p><p> SETB TR0 ;啟動(dòng)t0工作</p>
47、;<p> WAIT1:JNB TF0,WAIT1 ;定時(shí)未到,循環(huán)等待</p><p> CLR TF0 ;定時(shí)到,清tf0</p><p> CPL P1.7 ;由p1.7輸出,信號(hào)取反</p><p> DJNZ R3,MAIN01</p
48、><p> MOV A,#0F9H</p><p> ACALL SHOW</p><p> LJMP KEYPRO</p><p> KEYP02:SETB P1.7 ;音調(diào)2的方波發(fā)生</p><p> MOV R3,#100</p><p><b
49、> MAIN02:</b></p><p> MOV TMOD,#01H</p><p> MOV TL0,#0E1H</p><p> MOV TH0,#0F9H</p><p><b> SETB TR0</b></p><p> WAIT2:JNB TF0,WA
50、IT2</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b></p><p> DJNZ R3,MAIN02</p><p> MOV A,#0A4H</p><p> ACALL SHOW</p>&l
51、t;p> LJMP KEYPRO</p><p> KEYP03:SETB P1.7 ;音調(diào)3的方波發(fā)生</p><p> MOV R3,#100</p><p><b> MAIN03:</b></p><p> MOV TMOD,#01H</p><
52、p> MOV TL0,#8CH</p><p> MOV TH0,#0FAH</p><p><b> SETB TR0</b></p><p> WAIT3:JNB TF0,WAIT3</p><p><b> CLR TF0</b></p><p><
53、;b> CPL P1.7</b></p><p> DJNZ R3,MAIN03</p><p> MOV A,#0B0H</p><p> ACALL SHOW</p><p> LJMP KEYPRO</p><p> KEYP04:SETB P1.7
54、 ;音調(diào)4的方波發(fā)生</p><p> MOV R3,#100</p><p><b> SETB P1.6</b></p><p><b> MAIN04:</b></p><p> MOV TMOD,#01H</p><p> MOV TL0,#0D8H<
55、/p><p> MOV TH0,#0FAH</p><p><b> SETB TR0</b></p><p> WAIT4:JNB TF0,WAIT4</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b&
56、gt;</p><p> DJNZ R3,MAIN04</p><p> MOV A,#99H</p><p> ACALL SHOW</p><p> LJMP KEYPRO</p><p> KEYP05:SETB P1.7 ;音調(diào)5的方波發(fā)生</p>&l
57、t;p> MOV R3,#100</p><p><b> MAIN05:</b></p><p> MOV TMOD,#01H</p><p> MOV TL0,#68H</p><p> MOV TH0,#0FBH</p><p><b> SETB TR0<
58、/b></p><p> WAIT5:JNB TF0,WAIT5</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b></p><p> DJNZ R3,MAIN05</p><p> MOV A,#92H<
59、;/p><p> ACALL SHOW</p><p> LJMP KEYPRO</p><p> KEYP06:SETB P1.7 ;音調(diào)6的方波發(fā)生</p><p> MOV R3,#100</p><p><b> MAIN06:</b></p&
60、gt;<p> MOV TMOD,#01H</p><p> MOV TL0,#0E9H</p><p> MOV TH0,#0FBH</p><p><b> SETB TR0</b></p><p> WAIT6:JNB TF0,WAIT6</p><p><b&
61、gt; CLR TF0</b></p><p><b> CPL P1.7</b></p><p> DJNZ R3,MAIN06</p><p> ACALL SHOW</p><p> MOV A,#82H</p><p> LJMP KEYPRO</p>
62、<p> KEYP07:SETB P1.7 ;音調(diào)7的方波發(fā)生</p><p> MOV R3,#100</p><p><b> MAIN07:</b></p><p> MOV TMOD,#01H</p><p> MOV TL0,#5BH</p>
63、<p> MOV TH0,#0FCH</p><p><b> SETB TR0</b></p><p> WAIT7:JNB TF0,WAIT7</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b><
64、/p><p> DJNZ R3,MAIN07</p><p> MOV A,#0F8H</p><p> ACALL SHOW</p><p> LJMP KEYPRO</p><p> KEYP08:SETB P1.7 ;音調(diào)I的方波發(fā)生</p><p>
65、; MOV R3,#100</p><p><b> MAIN08:</b></p><p> MOV TMOD,#01H</p><p> MOV TL0,#8FH</p><p> MOV TH0,#0FCH</p><p><b> SETB TR0</b>
66、</p><p> WAIT8:JNB TF0,WAIT8</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b></p><p> DJNZ R3,MAIN08</p><p> MOV A,#80H</p>
67、;<p> ACALL SHOW</p><p> LJMP KEYPRO</p><p> JIELI:JMP KEYPRO</p><p> MUSTART1: ;歌曲1的播放程序</p><p> MOV R0,#00H
68、 ;節(jié)拍表指針置零</p><p> MOV R1,#00H ;音符表指針置零</p><p> RTAB:MOV A,R0</p><p> MOV DPTR,#RYTH</p><p> MOVC A,@A+DPTR</p><p> MOV R2,A
69、 ;查表法將一個(gè)節(jié)拍數(shù)據(jù)取出放R2計(jì)數(shù)器中</p><p> TTAB:MOV A,R1</p><p> MOV DPTR,#TONE</p><p> MOVC A,@A+DPTR</p><p> MOV R3,A ;取出音符表高8位&l
70、t;/p><p> INC R1 ;指針加1</p><p><b> MOV A,R1</b></p><p> MOV DPTR,#TONE</p><p> MOVC A,@A+DPTR</p><p> MOV R4,A
71、 ;取出低8位</p><p> SETB P1.7 ;輸出相應(yīng)音調(diào)的方波</p><p> LOOP:MOV R5,#3BH</p><p> MAIN:MOV TMOD,#01H</p><p> MOV TL0,R4</p>
72、<p> MOV TH0,R3</p><p><b> SETB TR0</b></p><p> WAIT:JNB TF0,WAIT</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b></p&g
73、t;<p> MAYA:JB P1.2,MAYB ;判斷1.2,1.4口是否有為1</p><p> JB P1.4,MAYB</p><p> LJMP RA </p><p> MAYB:JB P3.4,JIELI ;判斷3.4,3.5口
74、是否有為1 </p><p> JB P3.5,JIELI</p><p> LJMP MUSTART2 ;3.4,3.5口皆為0則放第二首歌</p><p> RA: MOV A,#86H ;顯示E</p><p> ACALL SHOW</p>
75、<p> DJNZ R5,MAIN ;無打斷則繼續(xù)放第一首歌</p><p> DJNZ R2,LOOP</p><p><b> INC R0</b></p><p> INC R1 ;兩個(gè)表的指針都加1</p
76、><p> CJNE R1,#166,RTAB ;判斷是否取完</p><p> LJMP KEYPRO;</p><p><b> ;《知足》音符表</b></p><p><b> TONE2:</b></p><p> ;
77、 1 7. 1 5 5 1 7. 1 3 </p><p> DB 0F9H,21H,0F8H,0B6H,0F9H,21H,0FBH,68H,0FBH,68H,0F9H,21H,0F8H,0B6H,0F9H,21H,0FAH,8CH</p><p> ;
78、1 7. 1 5. 3 2 6. 7. 1 2 </p><p> DB 0F9H,21H,0F8H,0B6H,0F9H,21H,0F6H,0D4H,0FAH,8CH,0F9H,0E1H,0F7H,0D1H,0F8H,0B6H,0F9H,21H,0F9H,0E1H</p>
79、<p> ; 1 7. 1 5 5 6 7 i 5</p><p> DB 0F9H,21H,0F8H,0B6H,0F9H,21H,0FBH,68H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FBH,68H</p><p&
80、gt; ; 6 7 i 5 3 3 4 3 6. 2 1</p><p> DB 0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FBH,68H,0FAH,8CH,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0F7H,0D1H,0F9H,
81、0E1H,0F9H,21H</p><p> ; 1 i 7 6 4 2 5. 7 6 5 2 1 </p><p> DB 0F9H,21H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FAH,0D8H
82、,0F9H,0E1H,0FDH,6EH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0F9H,0E1H,0F9H,21H</p><p> ; 2 3 4 4 6 5 3 2 3 3 4 5 </p><p&
83、gt; DB 0F9H,0E1H,0FAH,8CH,0FAH,0D8H,0FAH,0D8H,0FBH,0E9H,0FBH,68H,0FAH,8CH,0F9H,0E1H,0FAH,8CH,0FAH,8CH,0FAH,0D8H,0FBH,68H</p><p> ; 1 i 7 6 4 7 i 2
84、9; 5 2' 7 i </p><p> DB 0F9H,21H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FAH,0D8H,0FCH,5BH,0FCH,8FH,0FCH,0EFH,0FBH,68H,0FCH,0EFH,0FCH,5BH,0FCH,8FH</p><p> ; 6
85、7 i 6 7 i 2' 5 </p><p> DB 0FBH,0E9H,0FCH,0EFH,0FCH,8FH,0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FCH,0EFH,0FBH,68H</p><p><b> ;《知足》節(jié)拍表</b>
86、;</p><p><b> RYTH2:</b></p><p> DB 08,04,04,08,12,08,04,04,20</p><p> DB 08,04,04,06,09,04,04,04,04,20</p><p> DB 08,04,04,08,12,10,07,07,20</p>
87、<p> DB 10,08,08,08,04,06,06,04,03,04,05</p><p> DB 04,06,06,08,08,05,04,05,05,06,08,08</p><p> DB 04,05,08,04,05,08,04,05,08,04,05,06</p><p> DB 04,05,06,10,08,06,06,12,09
88、,07,06,15</p><p> DB 04,04,14,04,04,14,05,22</p><p> MUSTART3: ;歌曲3的播放程序</p><p> MOV R0,#00H ;節(jié)拍表指針置零</p><p> MOV R
89、1,#00H ;音符表指針置零</p><p> RTAB3:MOV A,R0</p><p> MOV DPTR,#RYTH3</p><p> MOVC A,@A+DPTR</p><p> MOV R2,A ;查表法將一個(gè)節(jié)拍數(shù)據(jù)取出放R2
90、計(jì)數(shù)器中</p><p> TTAB3:MOV A,R1</p><p> MOV DPTR,#TONE3</p><p> MOVC A,@A+DPTR</p><p> MOV R3,A ;取出音符表高8位</p><p> INC R1
91、 ;指針加1</p><p><b> MOV A,R1</b></p><p> MOV DPTR,#TONE3</p><p> MOVC A,@A+DPTR</p><p> MOV R4,A ;取出低8位</
92、p><p> SETB P1.7 ;輸出相應(yīng)音調(diào)的方波</p><p> LOOP3:MOV R5,#3BH</p><p> MAIN3:MOV TMOD,#01H</p><p> MOV TL0,R4</p><p> MOV TH0,R3</p>
93、;<p><b> SETB TR0</b></p><p> WAIT33:JNB TF0,WAIT33</p><p><b> CLR TF0</b></p><p><b> CPL P1.7</b></p><p> MAYA2:JB P1.5
94、,MAYB2 </p><p> JB P1.6,MAYB2 ;判斷1.5,1.6口是否有1</p><p><b> LJMP RB1</b></p><p> MAYB2:JB P1.2,BACK1</p><p> JB P1.4,BACK1</p><p>
95、; LJMP MUSTART1 ;1.2,1.4口皆為0則放第一首歌</p><p> BACK1:LJMP JIELI</p><p> RB1: MOV A,#86H</p><p> ACALL SHOW</p><p> DJNZ R5,MAIN3 ;無打斷則繼續(xù)放第三首歌</p&g
96、t;<p> DJNZ R2,LOOP3</p><p><b> INC R0</b></p><p> INC R1 ;兩個(gè)表的指針都加1</p><p> CJNE R1,#166,RTAB3 ;判斷是否取完</p><p> LJ
97、MP KEYPRO</p><p> 2.Proteus仿真</p><p> 1)創(chuàng)建一個(gè)Keil 應(yīng)用程序</p><p> (1)新建一個(gè)工程項(xiàng)目文件;</p><p> (2)為工程選擇保存位置,且命名(最好在一個(gè)新建文件夾中);</p><p> (3)為工程項(xiàng)目設(shè)置調(diào)試環(huán)境;因芯片為AT89C52
98、,選擇設(shè)備Atmel下AT89C52</p><p> (4)新建一個(gè)新文件并輸入程序代碼;</p><p> (5)另存創(chuàng)建的源程序項(xiàng)目文件到同一個(gè)文件夾,后綴.asm;</p><p> (6)把源程序文件添加到項(xiàng)目中。</p><p> 2)編譯連接環(huán)境設(shè)置 </p><p> 為產(chǎn)生.hex輸出文件,
99、按如下圖對(duì)工程目標(biāo)進(jìn)行設(shè)定:</p><p> 輸出.hex文件,點(diǎn)擊編譯,沒有問題就可以直接運(yùn)行了。</p><p><b> 仿真</b></p><p> 點(diǎn)擊proteus軟件中電路圖芯片位置,導(dǎo)入該hex,運(yùn)行即可。</p><p> 3.外接單片機(jī)使用方法</p><p>
100、(1)連接好實(shí)驗(yàn)儀與主機(jī)的RS-232通信電纜和電源;</p><p> (2)把實(shí)驗(yàn)儀的工作模式選擇開關(guān)切換到LOAD處,復(fù)位系統(tǒng)使實(shí)驗(yàn)儀工作于下載狀態(tài);</p><p> (3)運(yùn)下載軟件并裝載hex文件:把用戶程序經(jīng)過編譯后生成的HEX文件下載,將實(shí)驗(yàn)版工作模式選擇開關(guān)撥至“LOAD”位置,按下復(fù)位開關(guān)“RESET”,系統(tǒng)復(fù)位后,實(shí)驗(yàn)儀將執(zhí)行P87C52X2中的下載監(jiān)控程序,實(shí)現(xiàn)
101、與上位機(jī)進(jìn)行通信,完成下載程序的功能;</p><p> (4)keil設(shè)置:</p><p> 為目標(biāo)選項(xiàng)參數(shù)設(shè)置:-------設(shè)置,根據(jù)所連計(jì)算機(jī)插口,選擇COM口;</p><p> 點(diǎn)擊調(diào)試-運(yùn)行,即可;</p><p> 若要停止,點(diǎn)擊調(diào)試--停止運(yùn)行;</p><p> (5)脫機(jī)運(yùn)行程序:&l
102、t;/p><p> 正確連接實(shí)驗(yàn)儀與主機(jī)的RS-232通信電纜和電源;</p><p> 把實(shí)驗(yàn)儀的工作模式選擇開關(guān)切換到RUN處,復(fù)位系統(tǒng)使實(shí)驗(yàn)儀工作于脫機(jī)運(yùn)行狀態(tài)。</p><p><b> 五、實(shí)驗(yàn)感想</b></p><p> 縱觀這次實(shí)驗(yàn),自我感覺收獲很大。因?yàn)閱纹瑱C(jī)課程本身實(shí)用性就很強(qiáng),在課堂理論講解時(shí)的
103、硬件結(jié)構(gòu),指令系統(tǒng),程序結(jié)構(gòu),存儲(chǔ)器擴(kuò)展技術(shù)等部分內(nèi)容,均讓我在本次實(shí)驗(yàn)中有了切身的理解和應(yīng)用體會(huì)。</p><p> 首先是單片機(jī)的焊接,因?yàn)橛须娐穲D,所以焊接沒有什么難度。但是,同樣的的焊接方法,我焊接好的單片機(jī)卻出故障而不能調(diào)試,在多方查找癥結(jié)無果后,我借用他人單片機(jī)對(duì)我的程序進(jìn)行了調(diào)試。</p><p> 此外我還對(duì)基本程序和新程序做了仿真。仿真使用的是proteus軟件,需要
104、點(diǎn)擊芯片導(dǎo)入hex文件。我先對(duì)一些基本小程序做出仿真,大獲成功。在本文中我挑選了幾個(gè)小程序做出說明。</p><p> 接著,我開始對(duì)新程序進(jìn)行仿真和調(diào)試。</p><p> 利用Keil C51集成開發(fā)環(huán)境完成從新工程建立和管理、編譯、連接、目標(biāo)hex文件的生成,然后用proteus軟件仿真,待成功后調(diào)整參數(shù)對(duì)單片機(jī)進(jìn)行調(diào)試。</p><p> 不過仿真芯片
105、和實(shí)踐中所用單片機(jī)芯片不同,所以在調(diào)試新程序時(shí),使用keil新建工程時(shí)所選設(shè)備不同,應(yīng)該是設(shè)備Atmel下AT89C52。</p><p> 這次實(shí)驗(yàn),從程序編寫調(diào)試,軟件仿真,電路焊接,單片機(jī)調(diào)試等各環(huán)節(jié)我都學(xué)到了很多經(jīng)驗(yàn),做到了把課本上的理論知識(shí)應(yīng)用到了實(shí)踐當(dāng)中。</p><p><b> 六、參考文獻(xiàn)</b></p><p> [1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《單片機(jī)課程設(shè)計(jì)》報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)控制秒表系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告doc
- 單片機(jī)課程設(shè)計(jì)課題報(bào)告
- btec單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)應(yīng)用課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告 (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告-日歷
- 單片機(jī)課程設(shè)計(jì)報(bào)告蜂鳴器
- 單片機(jī)課程設(shè)計(jì)報(bào)告 (2)
- 單片機(jī)課程設(shè)計(jì)實(shí)習(xí)報(bào)告
評(píng)論
0/150
提交評(píng)論