2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于單片機的系統(tǒng)設(shè)計</p><p>  題 目 AD轉(zhuǎn)換 </p><p>  學(xué) 院 電子信息工程學(xué)院</p><p>  學(xué)科門類 單片機 </p><p>  班 級 </p><p>  指導(dǎo)教師

2、 </p><p>  小組成員 </p><p>  2011年 12月08日</p><p><b>  實驗?zāi)康?lt;/b></p><p> ?。?)學(xué)習(xí)基于單片機的系統(tǒng)設(shè)計;</p><p> ?。?)學(xué)習(xí)單片機電路設(shè)計和制版工藝;</p>&

3、lt;p> ?。?)學(xué)會數(shù)據(jù)采集電路設(shè)計;</p><p> ?。?)學(xué)會VB編寫上位機,實現(xiàn)和單片機通信;</p><p> ?。?)學(xué)習(xí)單片機的軟件設(shè)計;</p><p><b>  二、實驗要求</b></p><p> ?。?)要求每位同學(xué)設(shè)計單片機最小系統(tǒng);</p><p> ?。?/p>

4、2)每位同學(xué)自己設(shè)計硬件電路設(shè)計和程序編寫;</p><p> ?。?)每位同學(xué)自己完成調(diào)試;</p><p>  (4)認真細心的安裝焊接。</p><p><b>  三、使用的主要器材</b></p><p>  (1)單片機,TLC549及其他元件一套;</p><p><b>

5、 ?。?)工具一套;</b></p><p><b> ?。?)PC機一臺;</b></p><p>  四、TLC549簡介</p><p><b>  4.1引腳排列</b></p><p>  /CS:片選 低有效</p><p><b>  GN

6、D:地</b></p><p><b>  VCC:電源</b></p><p>  ANALOG IN:模擬信號輸入

7、 </p><p>  DATA OUT :數(shù)據(jù)串行輸出</p><p>  I/O CLOCK:外接輸入輸出時鐘</p><p>  REF+:正基準電壓輸入端, REF+ 大于等于2.5V 小于等于Vcc+0.1V</p><p>  REF-:負基準電壓輸入端,REF+

8、 大于等于-0.1V 小于等于2.5V ,切要求REF+- REF-大于等于1V</p><p><b>  4.2內(nèi)部結(jié)構(gòu)</b></p><p><b>  4.3時序分析</b></p><p>  TLC549是SPI三總線器件,其時序見上圖,當/CS為高電平時候,AD正在進行內(nèi)部轉(zhuǎn)換,轉(zhuǎn)換時間大概為17us,當/

9、CS有高電平變?yōu)榈碗娖綍r候,這時候上次的采樣轉(zhuǎn)換結(jié)果的最高位A7首先出現(xiàn)在DATA OUT端,其余7位將會在7個I/O CLOCK的下降沿時候出現(xiàn)在DATA OUT端,并在第4個I/O CLOCK的下降沿啟動采樣保持電路,開始采樣模擬輸入量,在第8個I/O CLOCK的下降沿開始保持,這時候,/CS由低電平變?yōu)楦唠娖?,在其上升沿開始啟動AD轉(zhuǎn)換,這時候/CS需保持17us,保證本次的采樣轉(zhuǎn)換完成,然后按上次一樣步驟,輸出AD轉(zhuǎn)換結(jié)果和輸

10、入模擬采樣。</p><p><b>  五、上位機</b></p><p><b>  5.1上位機簡介</b></p><p>  上位機軟件通過串口,實現(xiàn)單片機和PC機的通信,以簡單可視化的窗口,實現(xiàn)對單片機的監(jiān)控。本次課程設(shè)計采用VB編寫上位機,VB擁有功能強大的可視化窗口控件和串口控件Microsoft Comm

11、 Control 6.0,從而減少了編寫上位機的難度。</p><p><b>  5.2上位機思路</b></p><p>  應(yīng)為本次的課程設(shè)計要求,只是在PC機上通過串口顯示電壓,那么就不需要上位機通過串口發(fā)送指令,控制單片機。所以,編寫上位機時候,我沒有編寫發(fā)送部分的指令。其次,本次采集的電壓,電壓范圍為0v—5v,為充分利用數(shù)碼管,我采用了一位整數(shù)和五位小數(shù)

12、,并且在單片機內(nèi)完成了二進制到BCD碼的轉(zhuǎn)換。在編寫上位機傳送程序時候,我想發(fā)送一針就包括小數(shù)和整數(shù),這樣編寫單片機發(fā)送程序和上位機接收程序,就會簡單,并且發(fā)送的是十進制BCD,這樣就減少了上位機的運算。</p><p>  下位機思路:因為一針是8為數(shù)據(jù),那么最大為255,如果想一針包含兩位小數(shù),那么就需要把整數(shù)擴大100,第一位小數(shù)擴大10倍,然后相加:一針=整數(shù)位*100+第一位小數(shù)位*10+第二位小數(shù)位,

13、因為采集的電壓范圍為0v—5v,這時候就由可能超出255的范圍,如果一針包含一位整數(shù)和一位小數(shù),那么他的范圍為0v—50v,這時候不會超出255的范圍,所以我發(fā)送的一針就包含一位整數(shù)和一位小數(shù),即:一針=整數(shù)位*10+第一位小數(shù)位。采用9600波特率,1位開始為,1位結(jié)束位,8位數(shù)據(jù)位,沒有校驗位。</p><p>  上位機思路:就收一針存于A,然后和10整除,結(jié)果存于B,然后C=A-10*B,那么B就是整數(shù)部

14、分,C就是小數(shù)部分,顯示即可</p><p>  5.3上位機設(shè)計界面</p><p><b>  5.4上位機程序</b></p><p>  Public style1 As Integer</p><p>  Public style As Integer</p><p>  Privat

15、e Sub Form_Load()</p><p>  If MSComm1.PortOpen = True Then</p><p>  MSComm1.PortOpen = False</p><p><b>  Else</b></p><p><b>  End If</b></p&g

16、t;<p>  Combo1.AddItem "COM1"</p><p>  Combo1.AddItem "COM2"</p><p>  Combo1.AddItem "COM3"</p><p>  Combo1.AddItem "COM4"</p>

17、<p>  Combo1.AddItem "COM5"</p><p>  Combo1.AddItem "COM6"</p><p>  Combo1.AddItem "COM7"</p><p>  Combo1.AddItem "COM8"</p><

18、p>  Combo1.AddItem "COM9"</p><p>  Combo1.AddItem "COM10"</p><p>  Combo1.AddItem "COM11"</p><p>  Combo1.AddItem "COM12"</p><p

19、>  Combo1.ListIndex = 0</p><p>  MSComm1.CommPort = 3</p><p>  MSComm1.Settings = "9600,n,8,1"</p><p>  Command2.Caption = "打開串口"</p><p>  Shape1

20、.FillColor = &HFFFFC0</p><p>  Option2.Value = True</p><p>  Combo2.AddItem "256000"</p><p>  Combo2.AddItem "128000"</p><p>  Combo2.AddItem &q

21、uot;115200"</p><p>  Combo2.AddItem "57600"</p><p>  Combo2.AddItem "38400"</p><p>  Combo2.AddItem "28800"</p><p>  Combo2.AddItem &

22、quot;19200"</p><p>  Combo2.AddItem "9600"</p><p>  Combo2.AddItem "4800"</p><p>  Combo2.AddItem "2400"</p><p>  Combo2.AddItem &quo

23、t;1200"</p><p>  Combo2.AddItem "600"</p><p>  Combo2.AddItem "300"</p><p>  Combo3.AddItem "無 None"</p><p>  Combo3.AddItem "奇

24、Odd"</p><p>  Combo3.AddItem "偶 Even"</p><p>  Combo4.AddItem "4"</p><p>  Combo4.AddItem "5"</p><p>  Combo4.AddItem "6"&l

25、t;/p><p>  Combo4.AddItem "7"</p><p>  Combo4.AddItem "8"</p><p>  Combo5.AddItem "1"</p><p>  Combo5.AddItem "2"</p><p&

26、gt;  MSComm1.InBufferSize = 24</p><p>  MSComm1.OutBufferSize = 10</p><p><b>  style = 0</b></p><p>  style1 = 0</p><p><b>  End Sub</b></p&g

27、t;<p>  Private Sub Combo1_Click()</p><p>  If MSComm1.PortOpen = True Then</p><p>  MSComm1.PortOpen = False</p><p><b>  End If</b></p><p>  MSComm1

28、.CommPort = Combo1.ListIndex + 1</p><p><b>  End Sub</b></p><p>  Private Sub Command1_Click()</p><p>  Text1.Text = ""</p><p><b>  End Sub&

29、lt;/b></p><p>  Private Sub Command2_Click()</p><p>  On Error GoTo uerror</p><p>  If Command2.Caption = "關(guān)閉串口" Then</p><p>  MSComm1.PortOpen = False<

30、/p><p>  Command2.Caption = "打開串口"</p><p>  Shape1.FillColor = &HFFFFC0</p><p><b>  Else</b></p><p>  MSComm1.PortOpen = True</p><p>

31、;  Command2.Caption = "關(guān)閉串口"</p><p>  Shape1.FillColor = &HFF</p><p><b>  End If</b></p><p><b>  Exit Sub</b></p><p><b>  ue

32、rror:</b></p><p>  msg$ = "無效端口號"</p><p>  Title$ = "串口調(diào)試助手"</p><p>  X = MsgBox(msg$, 48, Title$)</p><p><b>  End Sub</b></p&g

33、t;<p>  Private Sub MSComm1_OnComm()</p><p>  Dim BytReceived() As Byte</p><p>  Static strBuff As String</p><p>  Static strBuff1 As String</p><p>  Static sly

34、 As Single</p><p>  Dim i As Integer</p><p>  Select Case MSComm1.CommEvent</p><p>  Case comEventRcOver</p><p>  Text1.Text = ""</p><p><b>

35、;  Exit Sub</b></p><p>  Case comEvReceive</p><p>  MSComm1.InputLen = 1</p><p>  strBuff = MSComm1.Input</p><p>  Text1.Text = ""</p><p> 

36、 If MSComm1.InputMode = comInputModeBinary Then</p><p>  BytReceived() = strBuff</p><p>  For i = 0 To UBound(BytReceived)</p><p>  If Len(Hex(BytReceived(i))) = 1 Then</p>&

37、lt;p>  strData = staData & "0" & Hex(BytReceived(i)) & ""</p><p><b>  Else</b></p><p>  strData = strData & Hex(BytReceived(i)) & "&qu

38、ot;</p><p><b>  End If</b></p><p><b>  Next</b></p><p>  strBuff1 = strData</p><p>  sly = CLng("&H" & strData)</p><

39、;p>  If style = 1 Then</p><p>  If style1 = 0 Then</p><p>  Text1.Text = Str(Format(sly, "0.0")) & "D"</p><p><b>  Else</b></p><p&g

40、t;  Text1.Text = Str(Format(sly / 10, "0.0")) & "V"</p><p><b>  End If</b></p><p><b>  Else</b></p><p>  Text1 = Text1 & strData

41、& "H"</p><p>  strData = ""</p><p><b>  End If</b></p><p><b>  Else</b></p><p>  Text1 = Text1 & strBuff & "

42、;$"</p><p><b>  End If</b></p><p>  End Select</p><p><b>  End Sub</b></p><p>  Private Sub Option1_Click()</p><p>  MSComm1.I

43、nputMode = comInputModeBinary</p><p>  Text1.MaxLength = 6</p><p>  style1 = 1</p><p><b>  style = 1</b></p><p><b>  End Sub</b></p><

44、p>  Private Sub Option2_Click()</p><p>  MSComm1.InputMode = comInputModeBinary</p><p>  Text1.MaxLength = 3</p><p><b>  style = 0</b></p><p><b>  

45、End Sub</b></p><p>  Private Sub Option3_Click()</p><p>  MSComm1.InputMode = comInputModeText</p><p>  Text1.MaxLength = 0</p><p><b>  End Sub</b><

46、;/p><p>  Private Sub Option4_Click()</p><p>  MSComm1.InputMode = comInputModeBinary</p><p>  Text1.MaxLength = 6</p><p><b>  style = 1</b></p><p&g

47、t;  style1 = 0</p><p><b>  End Sub</b></p><p><b>  六、實驗步驟</b></p><p><b>  6.1設(shè)計硬件電路</b></p><p>  6.1.1數(shù)據(jù)采集電路設(shè)計</p><p> 

48、 6.1.2 單片機外圍電路設(shè)計</p><p>  6.1.3 LED驅(qū)動電路設(shè)計</p><p>  6.1.4 串行通訊電路</p><p>  6.1.5 電源電路</p><p>  6.2根據(jù)設(shè)計電路清點全套零件,并負責(zé)保管;</p><p>  6.3對元器件引線或引腳進行鍍錫處理,注意鍍錫層未氧化(可焊

49、性好)時可以不再處理 ;</p><p>  6.4檢查印制板的銅箔線條是否完好,有無斷線及短路,特別注意邊緣;</p><p>  6.5安裝元器件,元器件安裝質(zhì)量及順序直接影響整機質(zhì)量及成功率,合理的安裝需要思考及經(jīng)驗;</p><p><b>  6.6軟件設(shè)計</b></p><p>  #include&quo

50、t;reg52.h"</p><p>  #include"intrins.h"</p><p>  #include"math.h"</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned

51、 int</p><p>  #define ulint unsigned long int</p><p>  sbit IO=P1^0;</p><p>  sbit DATA=P1^1;</p><p>  sbit CS=P1^2;</p><p>  uchar SMG[]={0x3F,

52、0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //數(shù)碼管顯示譯碼</p><p>  uchar data_in=0; //接受DATA數(shù)值</p><p>  uchar data_pc=0; //串口通信數(shù)據(jù)存儲區(qū)</p><p>  uchar data_out[]={0,0,0,0,0,0};</p&

53、gt;<p>  void delay() //數(shù)碼管動態(tài)掃描延時,3ms</p><p>  { uint j,i;</p><p>  for(i=3;i>0;i--)</p><p>  for(j=110;j>0;j--);</p><p><b>  }</b></p>

54、<p>  void SM() //動態(tài)掃描數(shù)碼管</p><p>  { uchar m;</p><p><b>  P2=0;</b></p><p>  for(m=0;m<6;m++)</p><p>  { if(m==0)</p><p>  P0=SMG[

55、data_out[m]]|0x80; //小數(shù)點</p><p><b>  else</b></p><p>  P0=SMG[data_out[m]];</p><p><b>  delay();</b></p><p>  P0=0; //數(shù)碼管消隱</p>&l

56、t;p><b>  P2+=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void TLC549() //接受TLC549的采集電壓</p><p>  { uchar n,k;</p>

57、<p><b>  CS=1;</b></p><p><b>  IO=0;</b></p><p>  data_in=0;</p><p><b>  CS=0;</b></p><p><b>  _nop_();</b></p&

58、gt;<p>  data_in=data_in|DATA;</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  for(n=0;n<7;n++)</p><p><b>  {</b&g

59、t;</p><p><b>  IO=1;</b></p><p>  for(k=5;k>0;k--);</p><p><b>  IO=0;</b></p><p>  data_in=data_in<<1;</p><p>  if(DATA==1

60、)</p><p>  data_in=data_in|0x01;</p><p>  for(k=5;k>0;k--);</p><p><b>  }</b></p><p><b>  IO=1;</b></p><p>  for(k=5;k>0;k--)

61、;</p><p><b>  IO=0;</b></p><p><b>  CS=1;</b></p><p><b>  }</b></p><p>  void BCD() //轉(zhuǎn)換成對應(yīng)的BCD碼</p><p>  { float

62、y;</p><p><b>  ulint x;</b></p><p>  y=0.01961*data_in;</p><p>  x=(ulint)(100000*y);</p><p>  data_out[0]=(uchar)(x/100000);</p><p>  data_ou

63、t[1]=(uchar)((x-data_out[0]*100000)/10000);</p><p>  data_out[2]=(uchar)(x/1000-data_out[0]*100-data_out[1]*10);</p><p>  data_out[3]=(uchar)(x/100-data_out[0]*1000-data_out[1]*100-data_out[2]*1

64、0); data_out[4]=(uchar)(x/10-data_out[0]*10000-data_out[1]*1000-data_out[2]*100-data_out[3]*10); data_out[5]=(uchar)(x-data_out[0]*100000-data_out[1]*10000-data_out[2]*1000-data_out[3]*100-data_out[4]*10);</p>

65、<p>  data_pc=data_out[0]*10+data_out[1];</p><p><b>  }</b></p><p>  void com(void) interrupt 4</p><p><b>  { TI=0;</b></p><p><b>

66、  EA=0;</b></p><p><b>  }</b></p><p>  void main()</p><p>  { SCON=0x40;</p><p>  PCON=0x00;</p><p>  TMOD=0x20;</p><p><

67、b>  TH1=0xfd;</b></p><p><b>  TL1=0xfd;</b></p><p><b>  EA=1;</b></p><p><b>  ES=1;</b></p><p><b>  ET1=1;</b>&

68、lt;/p><p><b>  while(1)</b></p><p>  { uchar t,h;</p><p><b>  TR1=1;</b></p><p>  for(h=0;h<10;h++)</p><p><b>  { SM();<

69、;/b></p><p><b>  TLC549();</b></p><p><b>  BCD();</b></p><p><b>  }</b></p><p><b>  EA=1;</b></p><p>  S

70、BUF=data_pc;</p><p>  for(t=0;t<180;t++);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  七、實驗總結(jié)</b></p><p>  課程設(shè)計是培

71、養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程,對我們學(xué)工科的同學(xué)來說尤為重要。本次課程設(shè)計,是基于單片機的最小系統(tǒng)設(shè)計,我設(shè)計的是AD轉(zhuǎn)換+上位機,且適合較小的電壓。</p><p>  回顧起此次電子課程設(shè)計,至今我仍感慨頗多。的確,從理論到實踐,在整整兩星期的日子里,可以說得上是苦多于甜,但是我從中學(xué)到了很多很多的東西。我不僅鞏固了以

72、前所學(xué)過的知識,而且學(xué)到了很多在書本上沒有的知識,提高了自己的實際動手能力和獨立思考的能力。我知道只擁有理論知識是遠遠不夠的,而這次工藝實習(xí)給了我很好的一個機會,讓我真正領(lǐng)教了這實踐過程中的困難重重和心理變化,比如說變壓器不懂怎么去選,對電路PCB制版軟件掌握得不好……專業(yè)技術(shù)知識的欠缺讓我望而卻步,我告訴自己我能做到,于是我鼓起勇氣重新拿起課本,并在老師的悉心指導(dǎo)下一步步有了轉(zhuǎn)機。成功的那一刻那種喜悅是不言而喻的,那種自信是發(fā)自內(nèi)心的

73、最深處。</p><p>  這次課程設(shè)計終于順利完成了,在設(shè)計的過程中可以說是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,感謝各位老師對我的耐心講解和悉心指導(dǎo)。同時,在老師的身上我也學(xué)到了很多的實用知識,對我以后的專業(yè)發(fā)展奠定了一定的基礎(chǔ)。在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。這次的設(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論