雙機(jī)通訊課程設(shè)計(jì)報(bào)告--雙機(jī)通信的設(shè)計(jì)_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

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

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

7、<b>  推出中斷服務(wù)程序。</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ā)送結(jié)束</p><p>  TI=0; //添加發(fā)送中斷(仿真時(shí)不需要)</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;//定時(shí)器1工作方式2</p><p>  TH1 = 0xfa;</p><p>  TL1 = 0xfa;//裝入定時(shí)器初值11.0592M晶振,波特率4800</p>

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

14、t;p>  SCON = 0x50;//串口工作方工1,準(zhǔn)備接收</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ù)據(jù)</p><p>  if(temp != count)</p><p>  Uartsend(temp);</p><p>  count = temp;</p><p>  RI = 0; //清除中斷標(biāo)志</p><p><b>  }</b></p>

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

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

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

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

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

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

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

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

28、程設(shè)計(jì)的程序比較難,也許是但是沒有好好學(xué)習(xí)c語言吧,現(xiàn)在讀起程序來都和費(fèi)力,在這里我必須說明本次試驗(yàn)編的程序我未曾參與,我只是在別人編好的基礎(chǔ)上仔細(xì)讀了一下,這可話費(fèi)了大半天時(shí)間,因?yàn)橛行┏绦蚍栕约焊揪筒皇呛芏?,在?duì)友的幫助下,我終于把程序弄懂了。最后就是進(jìn)行仿真了,proteus這個(gè)軟件我還是比較熟悉的,它也比較好用。很短的時(shí)間我們就完成了仿真,到這時(shí)已經(jīng)是課程設(shè)計(jì)的第5天了,我們終于把仿真通過了。</p><

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

30、助下,我們終于知道自己錯(cuò)在哪了,原來是程序有了一點(diǎn)點(diǎn)的小問題,這個(gè)問題在仿真時(shí)是根本看不出來的,因?yàn)榉抡娈吘故窃诶硐霠顟B(tài)下進(jìn)行的。關(guān)于一個(gè)延時(shí)的問題就要重點(diǎn)注意了,在理想狀態(tài)下,延時(shí)可以忽略,但在現(xiàn)實(shí)中延時(shí)是相當(dāng)重要的,沒有延時(shí)許多功能是用肉眼看不到的。</p><p>  在程序修改之后,把它載入AT89C52里,最后得到了預(yù)期的結(jié)果。給老師驗(yàn)收后我們可以說是本次課設(shè)順利完成。在這次課設(shè)中我得到了很多有關(guān)實(shí)驗(yàn)的

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

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

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

溫馨提示

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

評論

0/150

提交評論