雙機(jī)通信課程設(shè)計_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機(jī)課程設(shè)計報告書</p><p><b>  題目:雙機(jī)通信系統(tǒng)</b></p><p><b>  一 、系統(tǒng)整體設(shè)計</b></p><p><b>  1.系統(tǒng)設(shè)計思路</b></p><p>  雙機(jī)通信的實(shí)質(zhì)就是解決兩單片機(jī)串行通信問題。針對

2、于89C52單片機(jī)全雙工異步串行通信口,我們采用單片機(jī)直接交叉互連的串行通信方式。</p><p>  考慮到設(shè)計應(yīng)用于短距離傳輸、兩單片機(jī)具有相同的數(shù)據(jù)格式及電平且為使設(shè)計簡單,我們最終決定采用方式二單片機(jī)直接交叉連接的串行通信方式,上位機(jī)發(fā)送的數(shù)據(jù)由串行口TXD端輸出,直接由下位機(jī)的串行口數(shù)據(jù)接收端RXD接收。需要注意的是一定要保證主從機(jī)相同的數(shù)據(jù)傳輸速率,即要求設(shè)置相同的波特率。電路分為數(shù)碼管顯示模塊,以及

3、單片機(jī)工作的基本復(fù)位、晶振模塊。</p><p><b>  2.系統(tǒng)設(shè)計原理</b></p><p><b> ?。?)串行通信</b></p><p>  串行數(shù)據(jù)通信要解決兩個關(guān)鍵問題,一個是數(shù)據(jù)傳送,另一個是數(shù)據(jù)轉(zhuǎn)換。所謂數(shù)據(jù)傳送就是指數(shù)據(jù)以什么形式進(jìn)行傳送。所謂數(shù)據(jù)轉(zhuǎn)換就是指單片機(jī)在接收數(shù)據(jù)時,如何把接收到的串行

4、數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),單片機(jī)在發(fā)送數(shù)據(jù)時,如何把并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)進(jìn)行發(fā)送。單片機(jī)的串行通信使用的是異步串行通信,所謂異步就是指發(fā)送端和接收端使用的不是同一個時鐘。異步串行通信通常以字符(或者字節(jié))為單位組成字符幀傳送。字符幀由發(fā)送端一幀一幀地傳送,接收端通過傳輸線一幀一幀地接收。而對于兩個單片機(jī)之間的串行通信,由于具有相同的數(shù)據(jù)格式及電平且是短距離通信則不必要使用一些電平轉(zhuǎn)化芯片(如max232等)便可直接實(shí)現(xiàn)串行通訊,需要注意的是

5、兩單片機(jī)硬件要共地,軟件中需要設(shè)置相同波特率。</p><p>  STC89C52單片機(jī)有一個全雙工的異步串行通信口,串行結(jié)構(gòu)如下:</p><p> ?、贁?shù)據(jù)緩沖器(SBUF)</p><p>  接受或發(fā)送的數(shù)據(jù)都要先送到SBUF緩存。有兩個,一個緩存,另一個接受,用同一直接地址99H,發(fā)送時用指令將數(shù)據(jù)送到SBUF即可啟動發(fā)送;接收時用指令將SBUF中接收到

6、的數(shù)據(jù)取出。</p><p> ?、诖锌刂萍拇嫫鳎⊿CON)</p><p>  SCON用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:</p><p>  SM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應(yīng)于工作方式0、1、2、3。串行接口工作方式特點(diǎn)見下表1.</p><p>  表1 串行口工作

7、方式表</p><p>  SM2:多機(jī)通信控制位。</p><p>  REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。</p><p>  TB8:方式2或3時,TB8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。</p><p>  RB8:在方式2或3時,RB8位接收到的第9位數(shù)據(jù),實(shí)際為主機(jī)發(fā)送的第9位數(shù)據(jù)TB8,使從

8、機(jī)根據(jù)這一位來判斷主機(jī)發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。</p><p>  TI:發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。</p><p>  RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。</p><p><b> ?、圯斎胍莆患拇嫫?lt;/b>&l

9、t;/p><p>  接收的數(shù)據(jù)先串行進(jìn)入輸入移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收SBUF中。</p><p><b> ?、懿ㄌ芈拾l(fā)生器</b></p><p>  波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機(jī)用定時器T1作為波特率發(fā)生器,T1設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳

10、送的數(shù)據(jù)位數(shù)。</p><p>  ⑤電源控制寄存器PCON</p><p>  其最高位為SMOD:波特率倍增位,在串行口方式1、方式2、方式3時,波特率與SMOD有關(guān),當(dāng)SMOD=1時,波特率提高一倍,復(fù)位時,SMOD=0。</p><p><b> ?、薏ㄌ芈视嬎?lt;/b></p><p>  當(dāng)定時器T1工作在定時

11、方式的時候,定時器T1溢出率=(T1計數(shù)率)/(產(chǎn)生溢出所需機(jī)器周期)。由于是定時方式,T1計數(shù)率= fORC/12。產(chǎn)生溢出所需機(jī)器周期數(shù)=模M-計數(shù)初值X。</p><p>  (2)基本設(shè)計原理概述</p><p>  雙機(jī)通信系統(tǒng)通過主從單片機(jī)的串行口來實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。主單片機(jī)通過開關(guān)電路來啟動發(fā)送程序,當(dāng)開關(guān)按下時向從機(jī)發(fā)送一個數(shù)據(jù),從機(jī)通過接收中斷來接收主機(jī)發(fā)送過來的數(shù)據(jù),并通

12、過編寫好的數(shù)據(jù)代碼在LED數(shù)碼管上顯示主機(jī)發(fā)送過來的數(shù)據(jù)。同時從機(jī)給主機(jī)發(fā)送一個應(yīng)答信號來表示已經(jīng)接收到了主機(jī)發(fā)送過來的數(shù)據(jù),在主機(jī)接收應(yīng)答并校驗(yàn)正確,以二極管顯示,這樣就完成了一個數(shù)據(jù)的通信過程,等待按鍵按下,然后繼續(xù)下一次數(shù)據(jù)的發(fā)送直到結(jié)束。</p><p><b>  3.系統(tǒng)設(shè)計結(jié)構(gòu)圖</b></p><p>  圖1 雙機(jī)通信系統(tǒng)結(jié)構(gòu)圖</p>

13、<p>  二 、設(shè)計要求及任務(wù)</p><p>  按鍵觸發(fā)主機(jī)向從機(jī)發(fā)送數(shù)據(jù)。</p><p>  從機(jī)以中斷方式實(shí)時接收數(shù)據(jù)。</p><p>  從機(jī)將接受到的數(shù)據(jù)顯示并回送應(yīng)答信息給主機(jī)。</p><p>  主機(jī)查詢回送信息并校驗(yàn)以判斷是否繼續(xù)發(fā)送。</p><p>  制作硬件電路,并調(diào)試,最

14、后實(shí)現(xiàn)雙機(jī)通信系統(tǒng)功能。</p><p>  三 、硬件電路設(shè)計及實(shí)現(xiàn)</p><p>  1.硬件電路設(shè)計方案</p><p>  從硬件電路設(shè)計的目標(biāo)出發(fā),我們盡量考慮到可靠、高效、簡潔的原則,在整個系統(tǒng)設(shè)計過程中嚴(yán)格按照規(guī)范進(jìn)行,做好各部分模塊設(shè)計最優(yōu)。簡潔是指在滿足了可靠、高效的要求后,為了盡量在器件允許的范圍內(nèi)使電路設(shè)計導(dǎo)線無交叉,應(yīng)使電路設(shè)計盡量簡潔,盡

15、量減少元器件使用數(shù)量,縮小電路板面積,使電路部分重量輕。在焊接電路板時由于從機(jī)的數(shù)碼管管腳排布無規(guī)律,使得導(dǎo)線不能直接的焊接,我們盡量合理設(shè)計元件排列和電路走線,使本系統(tǒng)達(dá)到設(shè)計要求。</p><p><b>  2.硬件電路的實(shí)現(xiàn)</b></p><p>  整個雙機(jī)通信系統(tǒng)以STC89C52單片機(jī)為主控制器,由數(shù)碼管為核心的數(shù)據(jù)顯示模塊、以及單片機(jī)最小系統(tǒng)構(gòu)成。&

16、lt;/p><p>  3.以89C52為核心的單片機(jī)最小系統(tǒng)</p><p>  89C52單片機(jī)的最小系統(tǒng)采用內(nèi)部時鐘方式:以XTAL1和XTAL2引腳外接晶振,構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時鐘脈沖信號,然后給晶振的每個腳分別外接一個30PF的電容,以此使晶振快速起振并且達(dá)到約12MHZ的穩(wěn)定頻率。而在單片機(jī)的RST腳接上按鍵開關(guān)以及適當(dāng)?shù)碾娮?、電容便?gòu)成按鍵與斷電兩用的復(fù)位電路。具

17、體電路如圖3.2.1-1所示:</p><p><b>  圖2單片機(jī)最小系統(tǒng)</b></p><p><b>  4.數(shù)碼管顯示模塊</b></p><p>  設(shè)計中,我們使用的是共陽的兩位一體數(shù)碼管并使用P2口控制數(shù)碼管段選信號,P1口選取兩位為位選信號控制端。拿到數(shù)碼管后,我們借助萬用表進(jìn)行測試,最終確定為共陽型數(shù)

18、碼管,進(jìn)一步測試便得出了該數(shù)碼管對應(yīng)的管腳分布圖。</p><p><b>  5.設(shè)計實(shí)物圖</b></p><p>  最終實(shí)物如下圖3所示。</p><p>  圖3 雙機(jī)通信系統(tǒng)設(shè)計實(shí)物圖</p><p><b>  四 、軟件系統(tǒng)實(shí)現(xiàn)</b></p><p>  1

19、. Proteus仿真圖</p><p>  圖4雙機(jī)通信系統(tǒng)的proteus仿真圖</p><p>  2. 軟件實(shí)現(xiàn)方案分析</p><p>  串行通信分為查詢方式和中斷方式。</p><p>  編程中,對于從機(jī)我們擬定采用中斷接收和查詢發(fā)送方式,原因在于程序開銷無異。中斷方式使得從機(jī)時刻處于準(zhǔn)備接收狀態(tài),接收后判斷范圍,顯示,再回送

20、。而對于主機(jī),工作流程分析如下:得到按鍵允許,開始查詢發(fā)送,查詢中等待應(yīng)答即中斷接收,中斷后得到應(yīng)答,使得LED指示燈閃爍,如此往復(fù)。</p><p>  在主機(jī)編程中,我們增加了置位取數(shù)標(biāo)志的編程思路,即通過查詢?nèi)?shù)標(biāo)志實(shí)現(xiàn)在主函數(shù)回送應(yīng)答并執(zhí)行相應(yīng)服務(wù)程序,如此一來,很好的避免了中斷程序的冗長,提高了程序?qū)崿F(xiàn)的效率。</p><p>  串行通信程序設(shè)計包括:1)初始化程序:對特殊功能

21、寄存器SCON和PCON的設(shè)置,來選擇串行口的工作方式,設(shè)置通信波特率。由于設(shè)計采用了中斷方式,則還要對中斷系統(tǒng)進(jìn)行設(shè)置;2)發(fā)送數(shù)據(jù)的程序:51單片機(jī)串口發(fā)送數(shù)據(jù)的條件是串行口已準(zhǔn)備好,此時標(biāo)志位TI狀態(tài)為“1”,則需將待發(fā)數(shù)據(jù)傳送到發(fā)送數(shù)據(jù)緩沖區(qū)SBUF,即啟動一次發(fā)送;3)接收數(shù)據(jù)的程序:51單片機(jī)串行口接收數(shù)據(jù)的條件是SCON中的RI置“1”,表明串行口已收到一個字節(jié)數(shù)據(jù),此時即可置位取數(shù)標(biāo)志;4)通信控制程序:用來控制發(fā)送和接

22、收的進(jìn)行。</p><p><b>  3. 主程序</b></p><p>  #include <reg52.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>

23、  sbit DIG1 = P1^0; //位選信號控制</p><p>  sbit DIG2 = P1^1;</p><p>  sbit LED = P1^3;//LED控制端</p><p>  uchar ch, i = 0;</p><p><b>  uint r,k;</b></p><

24、;p>  uchar ge, sh;</p><p>  uchar const NUM[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};</p><p>  void delay_ms(uchar ms);</p><p>  void initModule(void);&

25、lt;/p><p>  void sendOneChar(uchar ch);</p><p>  void sendOneChar(uchar ch)</p><p><b>  {</b></p><p>  ES = 0; </p><p>  SBUF = ch;</p>

26、;<p>  while(!TI);//判斷發(fā)送中斷位TI是否為1</p><p><b>  TI = 0;</b></p><p><b>  ES = 1;</b></p><p><b>  }</b></p><p>  void initModule(

27、)</p><p><b>  {</b></p><p>  TMOD = 0x20;//定義定時器T1工作方式2</p><p>  TH1 = 0xfd;//波特率9600b/s</p><p>  TL1 = 0xfd;</p><p>  SCON = 0x50;//串口工作方式1,允許

28、串口接收位REN=1</p><p>  DIG1 = 0;//賦初值</p><p><b>  DIG2 = 0;</b></p><p><b>  LED = 1;</b></p><p><b>  }</b></p><p>  void d

29、elay_ms(uchar ms)//定義延時程序</p><p><b>  {</b></p><p>  uchar i, j;</p><p>  for (i=0; i<ms; i++)</p><p><b>  {</b></p><p>  for(j=

30、0; j<200; j++);</p><p>  for(j=0;j<102;j++);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {<

31、;/b></p><p>  initModule();</p><p><b>  EX0 = 1;</b></p><p><b>  IT0 = 1;</b></p><p><b>  ES = 1;</b></p><p><b&g

32、t;  EA = 1;</b></p><p><b>  TR1 = 1;</b></p><p>  P2 = NUM[0];</p><p><b>  while(1)</b></p><p><b>  {}</b></p><p>

33、;<b>  }</b></p><p>  void button() interrupt 0//發(fā)送程序</p><p><b>  {</b></p><p>  uchar num = 0;</p><p>  delay_ms(20);</p><p>  if (

34、INT0 == 0)</p><p>  delay_ms(14);</p><p>  if (INT0 == 0)</p><p><b>  {</b></p><p><b>  LED = 0;</b></p><p>  delay_ms(400);</p&

35、gt;<p><b>  LED = 1;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  sh = i / 10;</p><p>  ge = i % 10;</p><p

36、>  while (num < 15)//數(shù)碼管顯示</p><p><b>  {</b></p><p>  for(r=5;r>0;r--)</p><p><b>  {</b></p><p><b>  DIG1 = 1;</b></p>

37、;<p>  P2 = NUM[sh];</p><p>  delay_ms(5);</p><p><b>  DIG1 = 0;</b></p><p><b>  DIG2 = 1;</b></p><p>  P2 = NUM[ge];</p><p>

38、;  delay_ms(5);</p><p><b>  DIG2 = 0;</b></p><p><b>  }</b></p><p><b>  num++;</b></p><p><b>  }</b></p><p>

39、;  sendOneChar(i);</p><p><b>  }</b></p><p>  void read() interrupt 4//接收程序</p><p><b>  {</b></p><p>  uchar num = 0;</p><p><b&

40、gt;  RI = 0;</b></p><p><b>  LED = 0;</b></p><p>  delay_ms(400);</p><p><b>  LED = 1;</b></p><p>  sh = SBUF / 10;</p><p>  

41、ge = SBUF % 10;</p><p>  while (num < 15)</p><p><b>  {</b></p><p>  for(k=5;k>0;k--)</p><p><b>  {</b></p><p><b>  DIG

42、1 = 1;</b></p><p>  P2 = NUM[sh];</p><p>  delay_ms(5);</p><p><b>  DIG1 = 0;</b></p><p><b>  DIG2 = 1;</b></p><p>  P2 = NUM

43、[ge];</p><p>  delay_ms(5);</p><p><b>  DIG2 = 0;</b></p><p><b>  //k--;</b></p><p><b>  }</b></p><p><b>  num++;

44、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  五、 總結(jié)</b></p><p><b>  1.電路改進(jìn)</b></p><p>  為了保證數(shù)碼

45、管顯示亮度,我們可以考慮增加必要的數(shù)碼管驅(qū)動電路。假如不驅(qū)動的話,單片機(jī)的單低電平仍然可以控制數(shù)碼管的亮滅,但這時的數(shù)碼的亮度會比較暗,并且掃描頻率很高,仍然有微小的閃動現(xiàn)象.因?yàn)閱纹瑱C(jī)的輸出的電流并身就很弱。</p><p>  在實(shí)際情況允許時,增加必要的電平轉(zhuǎn)化芯片來連接兩個單片機(jī),則能夠適應(yīng)更遠(yuǎn)距離的數(shù)據(jù)通訊。</p><p><b>  2. 心得體會</b>

46、;</p><p>  本次實(shí)訓(xùn)增強(qiáng)了我查閱資料的方法技巧,更是大大的提高了我們自學(xué)的能力,同時也增強(qiáng)了我們的動手能力。</p><p>  我很清楚這個實(shí)驗(yàn)的目的,表面上我們最終僅僅只是實(shí)現(xiàn)了設(shè)計要求的基本功能,但我覺得,這次課程設(shè)計更加深刻的意義是——從這樣一個最基本,簡單的實(shí)驗(yàn)中,從這樣一個完整的過程中我了解一種系統(tǒng)設(shè)計的流程,甚至說是一種思路,思維。</p><

47、p>  從最初拿到題目,分析設(shè)計要求以及實(shí)現(xiàn)的初步思路,然后去查閱資料進(jìn)行更加具體的設(shè)計這次實(shí)驗(yàn)無疑要求我們團(tuán)隊(duì)協(xié)作,互相配合并且整體上比較全面的統(tǒng)籌設(shè)計。于是,初步規(guī)劃后,我們開始將系統(tǒng)要實(shí)現(xiàn)功能的各個模塊單獨(dú)開來用PROTEUS仿真,并最終將各個模塊組合后整體調(diào)試。整個過程中我們在仿真上花費(fèi)了較長時間,因?yàn)橹婪抡娉晒κ菍?shí)現(xiàn)真正硬件電路的基礎(chǔ),仿真是從根本上檢驗(yàn)設(shè)計者的設(shè)計邏輯以及思路的,很好的仿真才能使得設(shè)計系統(tǒng)在實(shí)現(xiàn)要求功

48、能的基礎(chǔ)上更加穩(wěn)定、簡單,仿真中,我們仔細(xì)斟酌了電路布線的合理性。在焊接過程中,由于之前的統(tǒng)籌布局使得我們的電路布線簡潔、明了,需要注意的是,由于焊接的粗心,有些焊點(diǎn)需要一再解焊導(dǎo)致焊盤脫落,而且對于數(shù)碼管管腳焊接方式也是值得進(jìn)一步改進(jìn)的,這便是我今后所要更加注意的,爭取全心全意的焊接電路,不要因?yàn)槟承┐中牡脑蚴请娐泛附影l(fā)生錯誤,在那個下午堅(jiān)持不懈的努力下我們終于完成了任務(wù),可以說是大部分的任務(wù)都是在那個下午一氣呵成的。</p&

49、gt;<p>  總的來說,在實(shí)驗(yàn)中,我們盡量統(tǒng)籌并使得團(tuán)隊(duì)協(xié)作發(fā)揮更大作用,第一周的周三分發(fā)元器件后,在第二天我們組便基本上完成了設(shè)計要求的基本功能,于是,我們利用剩下的時間去調(diào)試硬件以及更加深入的總結(jié)題目的意義。最后,作為本次實(shí)驗(yàn)小組的組長,我對大家辛勤勞作默契配合的合作精神深感欣慰,希望以后得到好的繼承與發(fā)揚(yáng)!</p><p>  本次課程設(shè)計我們做的是雙機(jī)通信,剛開始時感覺上挺難的,因?yàn)閯e的

50、課題都像是很直接的看到要做的東西,而我們的就不行。后來經(jīng)過一番了解后我才發(fā)現(xiàn)其實(shí)很簡單的。</p><p>  這次實(shí)驗(yàn)我們是四人一組,因?yàn)榧纫玫杰浖?,又要用到硬件,所以我們就分工合作。我和另一個同學(xué)負(fù)責(zé)硬件電路的仿真。在仿真過程中我們剛開始想用單片機(jī)直接通信。因?yàn)榫嚯x比較近,所以我們使用單片機(jī)進(jìn)行通信。如果距離遠(yuǎn)的話就要使用串口進(jìn)行通信。在焊接電路過程中,因?yàn)槲覀円恢焙芗?xì)心,所以就沒有什么問題。</p&

51、gt;<p>  通過這次課程設(shè)計讓我又一次覺得團(tuán)結(jié)的力量是那么的強(qiáng)大,合作精神是我們必不可少的。首先我們要一起討論怎么去設(shè)計這個雙機(jī)通信,討論怎么去實(shí)現(xiàn),大概都要用什么實(shí)現(xiàn);其次,我們在仿真硬件時,要告訴編程的同學(xué)我們是怎么做的,他們好根據(jù)這個來實(shí)現(xiàn)軟件編程;最后,在調(diào)試時,我們做硬件的同學(xué)要檢查電路是否哪里有問題,而軟件的同學(xué)則要考慮是否是程序有問題,當(dāng)我們確定是程序有問題時就一起想辦法解決。這次課程設(shè)計對我的影響不僅

52、是現(xiàn)在的,還會影響我的以后,在以后的生活中我要發(fā)揚(yáng)團(tuán)結(jié),互助,合作的精神。這樣才能發(fā)揮大家所有人的潛力。大家都聽過筷子的故事吧,它告訴我們團(tuán)結(jié)就是力量。好多項(xiàng)研究都是大家努力的結(jié)果,你聽過哪項(xiàng)研究是一個人做的,也許有,但那畢竟是少數(shù),我們都不是天才,合作精神對我們來說是必須的。再說,人步、不可能脫離人群而獨(dú)活,所以呢團(tuán)結(jié),互助,合作對我們都是必不可少的。</p><p>  本次課程設(shè)計我們組主要研究的是雙機(jī)通信

53、實(shí)驗(yàn),通過與組成員之間的合作,在開始的前兩天中,主要是通過查找資料,或是在圖書館里查看書籍來學(xué)習(xí)有關(guān)雙機(jī)通信實(shí)驗(yàn)的基本要求和實(shí)驗(yàn)所需要的器件,以及各實(shí)驗(yàn)器件所實(shí)現(xiàn)怎樣的功能。</p><p>  經(jīng)過了我們四個人的協(xié)商,由兩個人開始編寫代碼,再由兩個人開始設(shè)計實(shí)驗(yàn)電路。在編寫程序代碼的時候,使我學(xué)習(xí)到了最大的是MCS51單片機(jī)的中斷程序的編寫。在編寫程序的時候由于之前只是在課堂上和書本上學(xué)習(xí)的有單片機(jī)中的中斷源以

54、及中斷向量,所以在實(shí)踐的編寫代碼過程中會遇到很多不懂的問題,需要自己或者與同組成員相互溝通。并且也學(xué)會了單片機(jī)的有關(guān)中斷設(shè)計的思想,由于我們是制作雙機(jī)通信的課程設(shè)計,所以在實(shí)驗(yàn)中需要用到兩片單片機(jī)作為主從機(jī)來控制信號的接受與發(fā)送。還學(xué)習(xí)到了單片機(jī)在使用中斷的時候,如果有中斷申請的話,硬件電路會自動把單片機(jī)里接受發(fā)送中斷的TI和RI置1.這樣就表示單片機(jī)此時有外部中斷的申請,必須開中斷來接受發(fā)送過來的信號。大概兩天的時間,我們就把初步的軟

55、件程序和硬件電路設(shè)計好了。并且在PROTEUS的仿真器件中實(shí)現(xiàn)了硬件電路的連接,然后我們把PROTEUS的仿真硬件和51的程序下載到單片機(jī)中通過調(diào)節(jié)實(shí)驗(yàn)硬件和共同修改軟件程序最終實(shí)現(xiàn)了器件的仿真。</p><p>  接下來就是焊接電路的工作了,由另外的組員來實(shí)現(xiàn)大部分的硬件電路的焊接,從中我也學(xué)習(xí)幫忙,盡快完成我們的全部的設(shè)計內(nèi)容。在完成了所有的焊接的時候,把程序下載到單片機(jī)中后,發(fā)現(xiàn)了數(shù)碼管顯示的和預(yù)期設(shè)置的

56、有些不同,在經(jīng)過簡單的修改之后,我們成功的完成了我們的實(shí)驗(yàn)作品。在此次課程設(shè)計中我學(xué)習(xí)到了好多新的知識以及通過了團(tuán)隊(duì)小組的合作受益匪淺。 </p><p>  這次課程設(shè)計的題目比較簡單,我們感覺自己完成的也比較出色。我們采用了兩位動態(tài)顯示的數(shù)碼管,掌握了多位數(shù)碼管的工作原理;我們在硬件連接完成好以后進(jìn)行檢測,當(dāng)我們檢測所有的焊點(diǎn)都沒有問題后,讓單片機(jī)發(fā)送數(shù)據(jù)。我們既用了匯編程序控制通信,也用了C語言程序,兩個都

57、實(shí)現(xiàn)了實(shí)驗(yàn)的要求,只不過匯編程序的參數(shù)設(shè)定的不夠理想,數(shù)碼管在高頻閃動,我們也研究過好長時間,但還是不能夠達(dá)到我們的要求。通過兩個星期的學(xué)習(xí),我們在鞏固和學(xué)習(xí)硬件知識的同時,用軟件控制協(xié)調(diào)硬件實(shí)現(xiàn)現(xiàn)實(shí)功能,通過硬件完成軟件的功能等方面的融會貫通,取得了一定的效果。軟件編寫時,對于某些指令的功能,功能模塊的連接,芯片地址選擇等都遇到了很大的障礙,不過我們查閱資料得到了解決,與此同時,了解了不少的問題。例如,51系列單片機(jī)具有多級中斷功能,

58、為了不至于在保護(hù)現(xiàn)場或恢復(fù)現(xiàn)場的同時,由于CPU響應(yīng)其他中斷請求,而使現(xiàn)場破壞,一般規(guī)定,在保護(hù)和恢復(fù)現(xiàn)場時,CPU不響應(yīng)外界的中斷請求,即關(guān)中斷。另外,設(shè)計中犯一些常識性的錯誤,對設(shè)計進(jìn)程造成了一定的影響。</p><p>  在這次設(shè)計中,我收獲不少東西,也遇到了不少的問題。首先,在完成單片機(jī)課程學(xué)習(xí)任務(wù)后,對內(nèi)容的掌握不夠,缺乏靈活運(yùn)用的能力,對于知識的擴(kuò)展也存在一定的問題,因此,初面對設(shè)計課題,無法系統(tǒng)地

59、進(jìn)行設(shè)計思路的擬定。通過本次課程設(shè)計,不僅使理論知識得到了實(shí)踐,有效鞏固了知識。同時對于單片機(jī)發(fā)展歷史、強(qiáng)大功能、應(yīng)用領(lǐng)域以及系列知識得到了大概的系統(tǒng)認(rèn)識,同時也初步了解了一個完整的系統(tǒng)開發(fā)的過程,對于創(chuàng)造思維的培養(yǎng)和開發(fā)能力的鍛煉,本次設(shè)計,為此提供了一個很好的平臺。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 《單片機(jī)原理及接口技術(shù)》

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論