欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)同pc機(jī)間的串行通信課程設(shè)計(jì)報(bào)告 [打印本頁]

作者: quhaojie    時(shí)間: 2018-12-12 15:19
標(biāo)題: 單片機(jī)同pc機(jī)間的串行通信課程設(shè)計(jì)報(bào)告
目錄
1.選題              2
1.1選題背景              2
1.2選題要求              2
2.課程目的              3
3.方案設(shè)計(jì)              3
3.1系統(tǒng)的基本方案              4
3.2各模塊方案選擇              5
3.3單片機(jī)工作原理              5
4.軟件設(shè)計(jì)              6
4.1源程序              7
4.2調(diào)試過程及結(jié)果              7
5.設(shè)計(jì)小結(jié)              8
6.附錄              8

一,選題

本次,我組所選項(xiàng)目名稱為:單片機(jī)同pc機(jī)間的串行通信

1.1選題背景


在各種單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)中,如智能儀器儀表、各類手持設(shè)備、GPS接收器等,常常遇到計(jì)算機(jī)與外界的信息交換,即通訊。通信的基本方式可分為并行通信與串行通信兩種。

目前,在許多單片機(jī)應(yīng)用系統(tǒng)中,上、下位機(jī)分工明確,作為下位機(jī)核心器件的單片機(jī)往往只負(fù)責(zé)數(shù)據(jù)的采集和通信,而上位機(jī)通常以基于圖形界面的Windows系統(tǒng)為操作平臺(tái)。

現(xiàn)階段這種應(yīng)用的核心便是數(shù)據(jù)通信,它包括單片機(jī)和上位機(jī)之間、客戶端和服務(wù)器之間以及客戶端和客戶端之間的通信,而在單片機(jī)和上位機(jī)之間的數(shù)據(jù)通信則是整個(gè)系統(tǒng)的基礎(chǔ)。單片機(jī)和PC的通信是通過單片機(jī)的串口和PC機(jī)之間的硬件連接實(shí)現(xiàn)。鑒于PC機(jī)具有強(qiáng)大的監(jiān)控和管理功能,單片機(jī)則具有快速以及容易控制的特點(diǎn),在數(shù)據(jù)量不大、傳輸要求不高的情況下,一般都采用給PC機(jī)配置的RS-232標(biāo)準(zhǔn)串行接口COM1、COM2等相連接來實(shí)現(xiàn)應(yīng)用系統(tǒng)與PC機(jī)之間的數(shù)據(jù)交換。

現(xiàn)今我國(guó)工業(yè)迅速發(fā)展的情況下,對(duì)工業(yè)中的計(jì)算機(jī)控制提出了較高的要求。比如在常見的現(xiàn)場(chǎng)數(shù)據(jù)采集中,對(duì)各個(gè)采集點(diǎn)需要采集不同的數(shù)據(jù),比如溫度、濕度、壓力、照度,這就需要單片機(jī)對(duì)計(jì)算機(jī)發(fā)出的不同的指令做出不同的反應(yīng),并且返回相應(yīng)的采集到的數(shù)據(jù)。這就需要單片機(jī)和PC機(jī)進(jìn)行雙向數(shù)據(jù)通信。這也是本設(shè)計(jì)的目標(biāo)效果。【以上為參考內(nèi)容,詳見附錄】


1.2選題要求


利用開發(fā)板編程實(shí)現(xiàn)單片機(jī)同PC機(jī)間的串行通信,要求:

1.單片機(jī)能夠通過鍵盤輸入數(shù)據(jù)并在數(shù)碼管上顯示;

2.根據(jù)PC機(jī)發(fā)送的指令,單片機(jī)向PC機(jī)發(fā)送相應(yīng)的數(shù)據(jù);



二,        課程目的

通過書本的學(xué)習(xí),掌握電子電路的工藝設(shè)計(jì)過程,了解單片機(jī)技術(shù)的基本組成與結(jié)構(gòu),通過對(duì)單片機(jī)技術(shù)電路的裝配過程,掌握單片機(jī)技術(shù)以及MCU的設(shè)計(jì)開發(fā)流程,掌握單片機(jī)技術(shù)硬件和軟件的設(shè)計(jì)能力,學(xué)習(xí)的單片機(jī)技術(shù)電路裝配工藝和正確的焊接方法,程序調(diào)試、下載及提高動(dòng)手能力。掌握印刷電路板的設(shè)計(jì)、制作及檢驗(yàn)。掌握單片機(jī)技術(shù)的綜合編程與開發(fā)、設(shè)計(jì)制造、調(diào)試仿真的能力。了解設(shè)計(jì)過程中的各個(gè)基本環(huán)節(jié),也為今后的實(shí)際應(yīng)用奠定基礎(chǔ)。


三,方案設(shè)計(jì)

3.1系統(tǒng)的基本方案

                                             

   本次設(shè)計(jì)通過使用一塊AT89C51單片機(jī)芯片實(shí)現(xiàn)與PC機(jī)之間的串行通信,首先利用可視化程序設(shè)計(jì)編制串口調(diào)試軟件,然后向串口發(fā)送“1”、“2”......“8”、“9”、“0”等字符,板子收到數(shù)據(jù)后通過數(shù)碼管顯示出來,同時(shí)會(huì)向PC機(jī)反饋顯示成功的信號(hào)。

3.2各模塊方案選擇


3.2.1單片機(jī)的選擇

統(tǒng)一選擇STC89C51單片機(jī),他是一種低功耗,高性能的CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C51位眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活,超有效的解決方案。

3.2.2顯示模塊的選擇

采用八段數(shù)碼管顯示,同PC端地址符合時(shí),相應(yīng)發(fā)光二極管點(diǎn)亮。


3.2.3串行方式,串行口工作方式,波特率,數(shù)據(jù)傳送方式的選擇

本次課程設(shè)計(jì)中采用的是串行異步通信方式。

串行口工作方式選擇方式1。

波特率設(shè)置為9600b/s。

數(shù)據(jù)傳送方式選擇全雙工方式。

3.3單片機(jī)工作原理


3.3.1 串行通信的概念及分類

通信的基本方式可分為并行通信與串行通信兩種。

并行通信:是將組成數(shù)據(jù)的各位同時(shí)傳送,并通過并行門(如P1口等)來實(shí)現(xiàn)。在并行通信中,數(shù)據(jù)傳送線的根數(shù)與傳送的數(shù)據(jù)位數(shù)相等,傳送數(shù)據(jù)速度快,但所占用的傳輸線位數(shù)多。因此,并行通信適合短距離通信。如圖2-1所示。

串行通信:是指數(shù)據(jù)一位一位地按順序傳送。串行通信通過串行口來實(shí)現(xiàn)。在全雙工的串行通信中,僅需要一根發(fā)送線和一根接收線,串行通信可大大節(jié)省傳送線路的成本,但數(shù)據(jù)傳送速度慢。由于其所需電纜線少,接線簡(jiǎn)單,所以在較遠(yuǎn)距離傳輸中,得到了廣泛的運(yùn)用。如圖3-2所示。


圖3-1 并行通信                        圖3-2 串行通信

串行通信有同步通信和異步通信兩種基本方式。

(1)異步通信方式:數(shù)據(jù)通常是以字符(或字節(jié))為單位組成字符幀傳送的。發(fā)送方發(fā)送各個(gè)字符的間隔時(shí)間是不定的,收發(fā)雙方各用自己的時(shí)鐘源來控制發(fā)送和接收,這兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。接收端是依靠字符幀格式來判斷發(fā)送端是何時(shí)開始發(fā)送及何時(shí)結(jié)束發(fā)送。平時(shí),發(fā)送線為高電平(邏輯“1”),每當(dāng)接收端檢測(cè)到傳輸線上發(fā)送過來的低電平邏輯“0”(字符幀中起始位)時(shí),就知道發(fā)送端已開始發(fā)送,每當(dāng)接收端接收到字符幀中的停止位時(shí),就知道一幀字符信息己發(fā)送完畢。

(2)同步通信方式:是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀和異步通信中的字符幀不同,通常有若干個(gè)數(shù)據(jù)字符。同步字符幀由同步字符、數(shù)據(jù)字符和校驗(yàn)字符三部分組成。同步字符位于幀結(jié)構(gòu)開頭,用于確認(rèn)數(shù)據(jù)字符的開始(接收端不斷對(duì)傳輸線采樣,并把采到的字符和雙方約定的同步字符比較,只有比較成功后才會(huì)把后面接收到的字符加以存儲(chǔ));數(shù)據(jù)字符在同步字符之后,個(gè)數(shù)不受限制,由所需傳輸?shù)臄?shù)據(jù)塊長(zhǎng)度決定;校驗(yàn)字符有1~2個(gè),位于幀結(jié)構(gòu)末尾,用于接收端對(duì)接收到的數(shù)據(jù)字符的正確性的校驗(yàn)。

【以上為參考內(nèi)容,出處詳見附錄】


3.3.2 串行口的工作方式

51單片機(jī)串行口有4種工作方式——方式0,方式1,方式2,方式3。

(1)方式0:設(shè)定SM0,SM1為00時(shí),串行接口工作于方式0,在方式0下,RXD(P3.0)為數(shù)據(jù)輸入/輸出端,TXD(P3.1)為同步脈沖輸出端,發(fā)送或接收的數(shù)據(jù)為8位低位在前,高位在后,方式0的波特率固定為fosc/12,也就是每一機(jī)器周期傳送1位數(shù)據(jù),方式0可外接移位寄存器,將串行接口擴(kuò)展為并行接口,也可外接同步輸入輸出設(shè)備。

(2)方式1:當(dāng)設(shè)定SM0,SM1為01時(shí),串行接口工作于方式1,方式1為波特率可變的8位異步通信方式,由TXD發(fā)送,RXD接收。一幀數(shù)據(jù)為10位,1位起始位(低電平)8位數(shù)據(jù)位(低位在前)和1位停止位(高電平)。

方式1:

波特率=2SMOD*(定時(shí)器T1溢出率)/32        (1)

(3)方式2和方式3:當(dāng)設(shè)定SM0,SM1為10或11時(shí),串行口工作于方式2或方式3,這兩種方式都是9位異步通信,僅波特率不同,適用于多機(jī)通信。在方式2或方式3下,數(shù)據(jù)由TXD發(fā)送,RXD接收,1幀數(shù)據(jù)為11位,1位起始位(低電平)8位數(shù)據(jù)位(低位在前)1位可編程位(第9位數(shù)據(jù))用作奇偶校驗(yàn)或地址/數(shù)據(jù)選擇,1位停止位,與方式1相比多了一位可編程位,發(fā)送時(shí),第9位數(shù)據(jù)為TB8,接收時(shí),第9位數(shù)據(jù)送入RB8。方式2和方式3的區(qū)別只在于波特率不同。

方式2:

波特率=2SMOD*fosc/64                  (2)

方式3:

波特率=2SMOD*(定時(shí)器T1溢出率)/32          (3)

【以上為參考內(nèi)容,出處詳見附錄】


3.3.3串行通信的數(shù)據(jù)傳送方式

在串行通信中,數(shù)據(jù)是在兩個(gè)站之間傳送的。按照數(shù)據(jù)傳送方向,串行通信可分為單工、半雙工和全雙工三種傳送方式。如圖2-4。

單工方式:通信線的一端接發(fā)送器,另一端接接收器,它們形成單向連接,只允許數(shù)據(jù)按照一個(gè)固定的方向傳送。數(shù)據(jù)只能單方向傳送。

半雙工方式:數(shù)據(jù)能夠?qū)崿F(xiàn)雙方向傳送,但任何時(shí)刻只能由其中的一方發(fā)送數(shù)據(jù),另一方接收數(shù)據(jù)。

全雙工方式:系統(tǒng)的每端都含有發(fā)送器和接收器,數(shù)據(jù)可以同時(shí)在兩個(gè)方向上傳送

【以上為參考內(nèi)容,出處詳見附錄】


4.2調(diào)試過程及結(jié)果

剛開始調(diào)試并不順利,雖然程序參照了書本上的內(nèi)容,但由于設(shè)計(jì)要求的不同和自己的疏忽,導(dǎo)致了多次單片機(jī)毫無反應(yīng)的結(jié)果,不過好在通過小組間的通力合作,對(duì)程序進(jìn)行了從頭到尾的認(rèn)真排查,終于發(fā)現(xiàn)了在寫程序過程中犯的低級(jí)錯(cuò)誤。并且由于上次試驗(yàn)后忘記把跳線帽從P3.3和P3.4上拔下,也導(dǎo)致了排查時(shí)間的延長(zhǎng)。好在最終終于讓單片機(jī)顯示了從PC端傳來的數(shù)據(jù)。

*調(diào)試過程相關(guān)圖片


五,設(shè)計(jì)小結(jié)

通過本次單片機(jī)間串行通信實(shí)驗(yàn)設(shè)計(jì),使我對(duì)單片機(jī)有更加深刻的了解,明白了軟件與硬件的配合使用,懂得怎樣去調(diào)試程序以及電路,雖然在設(shè)計(jì)過程中遇到很多困難,但是經(jīng)過進(jìn)一步查閱相關(guān)資料,進(jìn)行反復(fù)排錯(cuò),問題才得以解決,總體上來說實(shí)現(xiàn)了單片機(jī)與PC機(jī)間串行通信,基本上完成了設(shè)計(jì)要求,通過本次設(shè)計(jì)也使得自己明白軟件與硬件相結(jié)合的重要性,二者缺一不可,所以在實(shí)現(xiàn)硬件連接的同時(shí)也要讀懂軟件所實(shí)現(xiàn)的功能。本設(shè)計(jì)介紹了一種單片機(jī)與PC機(jī)之間串行通信的設(shè)計(jì)方法,主要是對(duì)單片機(jī)與單片機(jī)之間串行通信的方式和重要的數(shù)據(jù)位說明,接著提出了可行的設(shè)計(jì)方案,詳細(xì)介紹了整個(gè)設(shè)計(jì)的工作原理及設(shè)計(jì)過程,同時(shí)驗(yàn)證了方案的可行性。平時(shí)上課時(shí)老師教授的內(nèi)容也很重要,想要得到更多知識(shí)和能力,還需要自己在以后的學(xué)習(xí)中付出更多認(rèn)真和努力。


附錄

本次主要參考文獻(xiàn)為《MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程》。

   


單片機(jī)源程序如下:


  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar i=0,k,kk=100,n;
  5. uchar arry[4];
  6. uchar LED[16]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  7. void delay(uint z)
  8. {
  9.               uint x,y;
  10.               for(x=z;x>0;x--);
  11.                             for(y = 100;y>0;y--);
  12. }
  13. void delay20ms()
  14. {
  15.     unsigned char i,j;
  16.               for(i=0;i<100;i++)
  17.                     for(j=0;j<20;j++);
  18. }

  19. void display(unsigned char a)
  20. {
  21. unsigned char shi,ge;
  22. shi=a/10;
  23. ge=a%10;
  24. P0=LED[shi];
  25. P1=0x01;
  26. delay(1000);
  27. P0=0xff;
  28. P0=LED[ge];
  29. P1=0x02;
  30. delay(1000);
  31. P0=0xff;
  32. }

  33. unsigned char keyscan()
  34. {
  35.    unsigned char row,col=0,m=0xff;
  36.    P2=0Xf0;
  37.    if((P2&0xf0)==0xf0)
  38.        return m;
  39.    delay20ms();
  40.    if((P2&0xf0==0xf0))
  41.        return m;
  42.    for(row=0;row<4;row++)
  43.    {
  44.        P2=~(1<<row);
  45.                  m=P2&0xf0;
  46.                     if(m!=0xf0)
  47.                     {
  48.                                     while(m&(1<<(col+4)))
  49.                               col++;
  50.                               m=row*4+col+1;
  51.                               P2=0xf0;
  52.                               while((P2&0xf0)!=0xf0);
  53.                               break;
  54.                     }
  55.    }
  56.    return m;
  57. }

  58. void main()
  59. {
  60.               TMOD = 0x20;
  61.               TH1 = 0xfd;
  62.               TL1 = 0xfd;
  63.               TR1 = 1;
  64.               SCON = 0x50;
  65.               ES = 1;
  66.               EA = 1;
  67.               P0 = 0;
  68.               while(1)
  69.               {
  70.                             k=keyscan();
  71.                             if(k!=0xff)
  72.                             {
  73.                                           if(k!=kk)
  74.                                                         kk=k;
  75.                                           n=k;
  76.                             }
  77.                             display(n);
  78.               }
  79.             
  80. }
  81. void server() interrupt  4
  82. {
  83.               uchar n;
  84.               uint j,temp;
  85.               if(TI)
  86.               A:TI=0;
  87.               else
  88.               {
  89.                             RI = 0;
  90.                             n = SBUF;
  91.                             arry[0]=n/1000;
  92.                             arry[1]=n%1000/100;
  93.                             arry[2]=n%100/10;
  94.                             arry[3]=n%10;
  95.                             while(1)
  96. ……………………

  97. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:

單片機(jī)同pc機(jī)間的串行通信.docx (342.44 KB, 下載次數(shù): 17)









歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1