單片機課程設計報告_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程設計</b></p><p>  實 驗 報 告</p><p>  XX 年 XX 月 XX 日</p><p><b>  一、實驗目的</b></p><p>  1.熟練應用proteus仿真單片機基本功能;</p>

2、;<p>  2.了解計算機控制蜂鳴器發(fā)聲原理(模擬電子琴);</p><p>  3.增強對匯編語言的熟悉。</p><p><b>  二、功能說明</b></p><p>  仿真功能:可以成功仿真單片機小程序;</p><p>  2. 單片機功能:電子音調發(fā)生器--撥動不同的開關產(chǎn)生不同的音調即依

3、次波動K0~K7,發(fā)出1,2,3,4,5,6,7,i八個音調,播放兩首樂曲。</p><p>  三、實驗原理及設計思路</p><p>  (一)Proteus仿真單片機</p><p>  在PROTEUS繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實物運行狀態(tài)和過程。</p><p>

4、  PROTEUS不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。</p><p>  它的元器件、連接線路等卻和傳統(tǒng)的單片機實驗硬件高度對應。這在相當程度上替代了傳統(tǒng)的單片機實驗教學的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調試、運行結果等。</p><p>  使用Pro

5、teus 軟件進行單片機系統(tǒng)仿真設計,是虛擬仿真技術和計算機多媒體技術相結合的綜合運用,有利于培養(yǎng)學生的電路設計能力及仿真軟件的操作能力;且對單片機的學習比單純學習書本知識更容易讓人接受,更容易提高。實踐證明,在使用 Proteus 進行系統(tǒng)仿真開發(fā)成功之后再進行實際制作,能極大提高單片機系統(tǒng)設計效率。</p><p> ?。ǘ╇娮右粽{發(fā)生器</p><p><b>  1.實

6、驗原理</b></p><p><b> ?。?)音調與節(jié)拍:</b></p><p>  音調由不同頻率的方波產(chǎn)生,音調與頻率的關系如下表所示。要產(chǎn)生音頻方波,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用計時器計時此半周期時間,每當計時到后就將輸出方波的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳得

7、到此頻率的方波。在ZKS-03實驗儀上,產(chǎn)生方波的I/O腳選用P1.7,通過跳線選擇器JP1將單片機的P1.7與蜂鳴器的驅動電路相連。這樣P1.7輸出不同頻率的方波,蜂鳴器便會發(fā)出不同的聲音。</p><p>  音樂的節(jié)拍是由延時實現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍值只能是它的整數(shù)倍。</p><p><b

8、> ?。?)蜂鳴器電路:</b></p><p>  蜂鳴器有交流和直流兩種。直流蜂鳴器驅動簡單,一旦在引腳上加入直流電源它就會發(fā)出一定頻率的聲音,此時聲音的音調和音量是固定的;而交流蜂鳴器在這方面則顯得較靈活,輸入聲音信號的頻率和音長是可控的,因此輸出的聲響將更逼真、更悅耳。本實驗儀有一個交流蜂鳴器,由于一般I/O口的驅動能力有限,因此不用它直接驅動蜂鳴器,它與P87C52X2的連接方式如下圖

9、所示。Buzzer通過一個跳線與P1.7相連,P1.7輸出不同頻率的方波信號,蜂鳴器就會發(fā)出不同的聲音。如果控制輸出信號的頻率和音長,蜂鳴器則會發(fā)出悅耳的音樂。</p><p><b>  2.設計思路</b></p><p>  可將功能實現(xiàn)分如下模塊:電源模塊-開關控制模塊+MCU控制模塊+蜂鳴器發(fā)生模塊--數(shù)碼管顯示模塊</p><p>

10、<b>  四、實驗過程</b></p><p>  (一)Proteus仿真單片機</p><p>  1.第一個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>  實驗

13、現(xiàn)象:第一個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>  實驗現(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 //中斷服務程序</p><p>  { EA = 0;</p><p>  Delay(4000);</p><

20、;p>  dispcount++; //每按一次中斷按鍵,計數(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 //中斷服務程序</p><p>  { EA = 0;</p><p>  Delay(4000);</p><p>  dispcount--; //每按一次中斷按鍵,計數(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>  實驗現(xiàn)象:</b></p><p>  數(shù)碼管顯示4個0,進入等待外部中斷狀態(tài):按下S1時,顯示值加一;按下S2時,顯示值減一;</p><p><b>  仿真結果:</b></p><p>

36、  初始顯示0000,按下開關一后,數(shù)字加一;按下開關二,數(shù)字減一;最大值9999.</p><p>  (二)電子音調發(fā)生器</p><p><b>  1.實驗源程序</b></p><p><b>  ORG 0000H</b></p><p>  KEYPRO:JB P1.2,GO1 ;

37、P1.2口為1時跳轉</p><p>  LJMP GOMUS1 ;P1.2口為0時判斷P1.4是否也為0,P1.4為0時長轉移</p><p>  GO0:LJMP KEYP01 ;P1.4口不為0,P1.2口為0時發(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 ;音調1的方波發(fā)生</p><p>  MOV R3,#100 ;設循環(huán)初值,使開關在0時播放一段時間</p><p><b>  MAIN01:</b><

46、/p><p>  MOV TMOD,#01H ;設置定時器t0工作方式1</p><p>  MOV TL0,#21H</p><p>  MOV TH0,#0F9H ;音調1對應初值f921h</p><p>  SETB TR0 ;啟動t0工作</p>

47、;<p>  WAIT1:JNB TF0,WAIT1 ;定時未到,循環(huán)等待</p><p>  CLR TF0 ;定時到,清tf0</p><p>  CPL P1.7 ;由p1.7輸出,信號取反</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 ;音調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 ;音調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、 ;音調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 ;音調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 ;音調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 ;音調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 ;音調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、 ;查表法將一個節(jié)拍數(shù)據(jù)取出放R2計數(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 ;輸出相應音調的方波</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 ;兩個表的指針都加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 ;查表法將一個節(jié)拍數(shù)據(jù)取出放R2

90、計數(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 ;輸出相應音調的方波</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 ;兩個表的指針都加1</p><p>  CJNE R1,#166,RTAB3 ;判斷是否取完</p><p>  LJ

97、MP KEYPRO</p><p>  2.Proteus仿真</p><p>  1)創(chuàng)建一個Keil 應用程序</p><p>  (1)新建一個工程項目文件;</p><p>  (2)為工程選擇保存位置,且命名(最好在一個新建文件夾中);</p><p>  (3)為工程項目設置調試環(huán)境;因芯片為AT89C52

98、,選擇設備Atmel下AT89C52</p><p>  (4)新建一個新文件并輸入程序代碼;</p><p>  (5)另存創(chuàng)建的源程序項目文件到同一個文件夾,后綴.asm;</p><p>  (6)把源程序文件添加到項目中。</p><p>  2)編譯連接環(huán)境設置 </p><p>  為產(chǎn)生.hex輸出文件,

99、按如下圖對工程目標進行設定:</p><p>  輸出.hex文件,點擊編譯,沒有問題就可以直接運行了。</p><p><b>  仿真</b></p><p>  點擊proteus軟件中電路圖芯片位置,導入該hex,運行即可。</p><p>  3.外接單片機使用方法</p><p>  

100、(1)連接好實驗儀與主機的RS-232通信電纜和電源;</p><p>  (2)把實驗儀的工作模式選擇開關切換到LOAD處,復位系統(tǒng)使實驗儀工作于下載狀態(tài);</p><p>  (3)運下載軟件并裝載hex文件:把用戶程序經(jīng)過編譯后生成的HEX文件下載,將實驗版工作模式選擇開關撥至“LOAD”位置,按下復位開關“RESET”,系統(tǒng)復位后,實驗儀將執(zhí)行P87C52X2中的下載監(jiān)控程序,實現(xiàn)

101、與上位機進行通信,完成下載程序的功能;</p><p>  (4)keil設置:</p><p>  為目標選項參數(shù)設置:-------設置,根據(jù)所連計算機插口,選擇COM口;</p><p>  點擊調試-運行,即可;</p><p>  若要停止,點擊調試--停止運行;</p><p>  (5)脫機運行程序:&l

102、t;/p><p>  正確連接實驗儀與主機的RS-232通信電纜和電源;</p><p>  把實驗儀的工作模式選擇開關切換到RUN處,復位系統(tǒng)使實驗儀工作于脫機運行狀態(tài)。</p><p><b>  五、實驗感想</b></p><p>  縱觀這次實驗,自我感覺收獲很大。因為單片機課程本身實用性就很強,在課堂理論講解時的

103、硬件結構,指令系統(tǒng),程序結構,存儲器擴展技術等部分內容,均讓我在本次實驗中有了切身的理解和應用體會。</p><p>  首先是單片機的焊接,因為有電路圖,所以焊接沒有什么難度。但是,同樣的的焊接方法,我焊接好的單片機卻出故障而不能調試,在多方查找癥結無果后,我借用他人單片機對我的程序進行了調試。</p><p>  此外我還對基本程序和新程序做了仿真。仿真使用的是proteus軟件,需要

104、點擊芯片導入hex文件。我先對一些基本小程序做出仿真,大獲成功。在本文中我挑選了幾個小程序做出說明。</p><p>  接著,我開始對新程序進行仿真和調試。</p><p>  利用Keil C51集成開發(fā)環(huán)境完成從新工程建立和管理、編譯、連接、目標hex文件的生成,然后用proteus軟件仿真,待成功后調整參數(shù)對單片機進行調試。</p><p>  不過仿真芯片

105、和實踐中所用單片機芯片不同,所以在調試新程序時,使用keil新建工程時所選設備不同,應該是設備Atmel下AT89C52。</p><p>  這次實驗,從程序編寫調試,軟件仿真,電路焊接,單片機調試等各環(huán)節(jié)我都學到了很多經(jīng)驗,做到了把課本上的理論知識應用到了實踐當中。</p><p><b>  六、參考文獻</b></p><p>  [1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論