雙機通訊課程設計報告--雙機通信的設計_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  測控儀器課程設計報告書</p><p>  題目:雙機通信的設計</p><p><b>  雙機通訊</b></p><p><b>  設計目的</b></p><p>  基于單片機實現(xiàn)雙機通信</p><p><b>  設計要求<

2、;/b></p><p>  單片機要發(fā)送信息到另外一個單片機,另外一個單片機要反饋信息給發(fā)送者。實現(xiàn)兩個單片機的通信。</p><p><b>  三、設計器材</b></p><p>  STC89C52芯片(2個)</p><p>  LED七段顯示數(shù)碼管(2個)</p><p>&l

3、t;b>  晶振(2個)</b></p><p><b>  發(fā)光二極管(4個)</b></p><p><b>  復位開關(2個)</b></p><p><b>  5V電源(1個)</b></p><p><b>  導線(若干)</b

4、></p><p><b>  四、設計方案及分析</b></p><p>  主機發(fā)送從機接收方式的主機工作流程:</p><p>  主機設置數(shù)據傳送方法控制位DIR位0,以表示主機有數(shù)據發(fā)送到從機;</p><p>  主機STB端口產生一個負脈沖,以使從機進入中斷,并準備接收數(shù)據;</p>&

5、lt;p>  主機將數(shù)據送8位數(shù)據端口,再設定ACK信號表示數(shù)據有效:</p><p>  主機檢查CHK端口,等待從機8位端口取走數(shù)據;</p><p><b>  數(shù)據發(fā)送完成返回。</b></p><p>  主機接收從機發(fā)送方式的主機工作流程:</p><p><b>  進入中斷服務程序;<

6、;/b></p><p><b>  檢查數(shù)據傳送的方向</b></p><p>  如果DIR為0.。則等待CHK信號有效,再從8位端讀取數(shù)據,讀完后設定ACK信號有效</p><p>  如果DIR為1,從機將數(shù)據送到8位端上,再設定ACK位有喜愛哦,并等待主機取走數(shù)據(即CHK信號有效);</p><p>

7、<b>  推出中斷服務程序。</b></p><p><b>  程序:</b></p><p>  #include <reg52.h></p><p>  #define unchar unsigned char</p><p>  #define unint unsigned i

8、nt</p><p>  sbit Key = P1^1;</p><p>  sbit Led = P1^0;</p><p>  unchar code SEG7[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};</p>&l

9、t;p>  unchar temp = 0;</p><p>  unchar count = 0;</p><p>  void Uartsend(unchar k) //串口發(fā)送子函數(shù)</p><p><b>  {</b></p><p><b>  SBUF = k;</b&g

10、t;</p><p>  while(!TI);//待待發(fā)送結束</p><p>  TI=0; //添加發(fā)送中斷(仿真時不需要)</p><p><b>  }</b></p><p>  void delay(int t){</p><p><b

11、>  int n,m;</b></p><p>  for (n=t;n>0;n--){}</p><p>  for (m=t;m>0;m--){}</p><p><b>  }</b></p><p>  void main()</p><p><b>

12、;  {</b></p><p><b>  Led = 1;</b></p><p>  TMOD = 0x20;//定時器1工作方式2</p><p>  TH1 = 0xfa;</p><p>  TL1 = 0xfa;//裝入定時器初值11.0592M晶振,波特率4800</p>

13、<p>  PCON = 0;//波特率不倍增</p><p>  ET1 = 0;//定時器1中斷允許</p><p>  EA = 1;//總中斷允許</p><p>  ES = 1;//串口中斷允許</p><p>  TR1 = 1;//定時器0開始計時</p>&l

14、t;p>  SCON = 0x50;//串口工作方工1,準備接收</p><p>  while(1)//死循環(huán)</p><p><b>  { </b></p><p>  if(!Key)//判斷是否有鍵按下</p><p>  delay(50);</p><p>

15、;  while(!Key)</p><p><b>  {</b></p><p><b>  Led = 0;</b></p><p>  count += 1;</p><p>  //delay(100);</p><p>  Uartsend(count);//用

16、串口發(fā)送0xaa</p><p>  while(!Key);//等待鍵釋放</p><p>  delay(20);</p><p>  while(!Key);//等待鍵釋放</p><p><b>  }</b></p><p><b>  Led = 1;</b>&l

17、t;/p><p>  if(count == 15) count = 0;</p><p>  P0 = SEG7[temp];</p><p><b>  }</b></p><p><b>  }</b></p><p>  void uart() interrupt 4&l

18、t;/p><p><b>  {</b></p><p><b>  EA=0;</b></p><p>  if(RI) //判斷是否為接收中斷</p><p><b>  {</b></p><p>  temp = SBUF;

19、//讀數(shù)據</p><p>  if(temp != count)</p><p>  Uartsend(temp);</p><p>  count = temp;</p><p>  RI = 0; //清除中斷標志</p><p><b>  }</b></p>

20、<p>  TI = 0; //清除中斷標志</p><p><b>  EA=1; </b></p><p><b>  }</b></p><p><b>  仿真圖:</b></p><p>  五、問題分析與解決方法</p>

21、<p>  仿真沒有問題,但焊好板子后,所實現(xiàn)的功能并非預期的結果。因為仿真正確,所以我們認為應該是板子焊接的問題,但經過再三檢測,發(fā)現(xiàn)板子焊接完全沒有問題。問題究竟在哪,一時我們沒有找出來。最后請教別人后,從硬件開始入手,用萬用表全部檢測了兩遍,板子沒問題。接著只能推出是軟件,是程序的問題。仿真沒問題的,可是那只是仿真。我們仔細研究了一下程序,對串口通信,主要從RI,TI串口中斷入手,發(fā)現(xiàn)程序處理太快,出現(xiàn)了死循環(huán)。我們就加

22、了延時進去。但是還是沒有解決,延時有了,還是會進入到死區(qū)的。請了一位大四的學長,又研究了一下,最后我們把問題歸結到串口那兩個終端上。最后經過檢查,發(fā)現(xiàn)在等待中斷發(fā)送后,沒有給中斷清0,問題就這樣解決了。原來仿真正確,功能未必能實現(xiàn),因為仿真是一種理想狀態(tài)下的結果,而實踐中有很多是無法避免的,就像這次的延時,仿真對延時的要求不高,但在現(xiàn)實中延時是必不可少的,器件結合和分離時并非像仿真中那樣準確,抖動必須用延時來消除。</p>

23、<p><b>  六、設計結果</b></p><p>  用兩片STC89C52來實現(xiàn)雙機通信,一個做主機,另一個做從機。主機發(fā)送數(shù)據,從機接受數(shù)據后自己顯示并把數(shù)據返回主機顯示,顯示時間存在時間差,完全可以分辨出來誰先接到稅后接到,最后在LED數(shù)碼管上現(xiàn)實相同的數(shù)據。</p><p><b>  七、設計心得</b></p

24、><p><b> ?、?肖斌韜:</b></p><p>  我們的題目是單片機雙機通信,當接到題目后,心里一片茫然。通過查閱資料,才了解到我們必須去學習串口通信。打開單片機課本,開始從SBUF,R1,T1開始了我的串口通信編程。其間遇到了很多問題,比如串口通信有沒有什么協(xié)議,串口中斷應該如何去編程,驅動數(shù)碼時要用到的上拉電阻等等。剛剛開始,我在一本手把手教你學單片機上

25、看到了一篇關于單片機串口通信的程序。接著請偶們就開始分析了。對單片機的C語言程序也就是從這次開始的。從基礎的10K我們降低到500歐,這樣才可以讓數(shù)碼管比較亮一點。還有其間的串口中斷的問題,在編程的時候還是遇到了很大的問題。當仿真都沒有一點問題,但是焊好板子后,就是有點問題。最后才發(fā)現(xiàn),上面少加了發(fā)送中斷TI=0。</p><p>  總之,雖然很早就做完,這個實驗挺簡單的。在做這個實驗室受益匪淺,因為我們得到了

26、遇到問題去解決的能力和團隊合作的能力。這些都是每個人都應當具備的,我感覺我們團隊三個人合作很好,提前完成任務。</p><p><b> ?、?邢海:</b></p><p>  本次課程設計是有關雙機通信的內容,這可能是我們在學校最后一次課程設計了,下次再設計就是畢業(yè)設計了。這次課程設計雖然不難,但是我深信如果是我一個人做的話,肯定不能達到預期的結果。</p&

27、gt;<p>  本次試驗用的的軟件有Keil和proteus,這兩個軟件以前雖說用過,但是根本就不是很熟悉,一開始不知道在用keil和proteus仿真時,必須先生成hex格式的文件,這個文件是如何生成的,真是沒有頭緒。最后請教了一下長期在實驗室做實驗的同學,才懂得要生成hex文件,首先要在keil里建立一個工程文件夾,接下來就是花時最長的部分—編程。Keil用c語言進行編程,雖說在大二時上過c語言的課程,但我覺得這次課

28、程設計的程序比較難,也許是但是沒有好好學習c語言吧,現(xiàn)在讀起程序來都和費力,在這里我必須說明本次試驗編的程序我未曾參與,我只是在別人編好的基礎上仔細讀了一下,這可話費了大半天時間,因為有些程序符號自己根本就不是很懂,在隊友的幫助下,我終于把程序弄懂了。最后就是進行仿真了,proteus這個軟件我還是比較熟悉的,它也比較好用。很短的時間我們就完成了仿真,到這時已經是課程設計的第5天了,我們終于把仿真通過了。</p><

29、p>  在仿真完后的當天下午我們就把電路板焊接好了,但是接上電源后,效果不是我們預期的,這下我們就急了。這個問題就比較麻煩了,我們的先檢查一下硬件是否有問題,之后還得仔細排查每條線路,這個工作量不是很大,但是至于檢查清楚了沒有,我們是不自信的,第二個禮拜開始啦,我們把板子拿出來,三個人依次檢查一遍,最后發(fā)現(xiàn)板子和焊接根本沒有問題,那么問題出在哪呢?我們都蒙住了,難道程序有問題嗎。最后無奈之下我們又去請教了一下實驗室的同學,在他的幫

30、助下,我們終于知道自己錯在哪了,原來是程序有了一點點的小問題,這個問題在仿真時是根本看不出來的,因為仿真畢竟是在理想狀態(tài)下進行的。關于一個延時的問題就要重點注意了,在理想狀態(tài)下,延時可以忽略,但在現(xiàn)實中延時是相當重要的,沒有延時許多功能是用肉眼看不到的。</p><p>  在程序修改之后,把它載入AT89C52里,最后得到了預期的結果。給老師驗收后我們可以說是本次課設順利完成。在這次課設中我得到了很多有關實驗的

31、知識,最后用一句話可以這么說,理論結合實踐是一個人進步的高鐵。</p><p><b> ?、?張震:</b></p><p>  本次課程設計主要目的是對單片機理論的應用,同時學習keil 和protues的應用,以及給單片機燒程序的Stc軟件。在學習這些新知識的同時,我們也復習了C語言程序設計以及電路的焊接。</p><p>  起初的時候

32、我們對雙機通信理解不充分,簡單的認為主機能給從機發(fā)送數(shù)據,反過來從機也給主機發(fā)送數(shù)據就可以了。最后在搜相關資料后,真的了解了雙機通信的含義,主機發(fā)送給從機后,從機必須要能夠給主機反饋這個數(shù)據。幸好及時糾正了錯誤的理解,否則后面的一切都是白費功夫。結論:良好的開端成功的基石!</p><p>  在整個課程設計過程中,我們組的成員分工明確,并都能夠按時完成任務。但是不論誰在哪塊出現(xiàn)了問題,我們大家都會聚成一堆,對這

33、個問題進行分析,最終得出解決方案。無論是資料的搜集,程序的編寫,電路的仿真以及最后電路板的焊接,我們大家齊心協(xié)力,排除了一個個問題。那幾天我們一起來實驗室,一起去吃飯,晚上回到宿舍有時候還進行些討論??梢哉f正是在我們組員團結一致的情況下,才有了現(xiàn)在的成果。結論:團結就是力量!</p><p>  在有過大賽經驗的同學的指導下,我們快速掌握了仿真以及編程軟件的應用,為我們后面的工作打好了基礎。如果沒有他們的幫助,我

溫馨提示

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

評論

0/150

提交評論