基于單片機(jī)的系統(tǒng)課程設(shè)計(jì)---ad轉(zhuǎn)換_第1頁(yè)
已閱讀1頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、 ?。?)工具一套;</b></p><p><b> ?。?)PC機(jī)一臺(tái);</b></p><p>  四、TLC549簡(jiǎn)介</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:模擬信號(hào)輸入

7、 </p><p>  DATA OUT :數(shù)據(jù)串行輸出</p><p>  I/O CLOCK:外接輸入輸出時(shí)鐘</p><p>  REF+:正基準(zhǔn)電壓輸入端, REF+ 大于等于2.5V 小于等于Vcc+0.1V</p><p>  REF-:負(fù)基準(zhǔn)電壓輸入端,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時(shí)序分析</b></p><p>  TLC549是SPI三總線器件,其時(shí)序見(jiàn)上圖,當(dāng)/CS為高電平時(shí)候,AD正在進(jìn)行內(nèi)部轉(zhuǎn)換,轉(zhuǎn)換時(shí)間大概為17us,當(dāng)/

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

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

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

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

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

14、分,C就是小數(shù)部分,顯示即可</p><p>  5.3上位機(jī)設(shè)計(jì)界面</p><p><b>  5.4上位機(jī)程序</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 = "打開(kāi)串口"</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 "無(wú) 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 = "打開(kāi)串口"</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$ = "無(wú)效端口號(hào)"</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>  六、實(shí)驗(yàn)步驟</b></p><p><b>  6.1設(shè)計(jì)硬件電路</b></p><p>  6.1.1數(shù)據(jù)采集電路設(shè)計(jì)</p><p> 

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

49、性好)時(shí)可以不再處理 ;</p><p>  6.4檢查印制板的銅箔線條是否完好,有無(wú)斷線及短路,特別注意邊緣;</p><p>  6.5安裝元器件,元器件安裝質(zhì)量及順序直接影響整機(jī)質(zhì)量及成功率,合理的安裝需要思考及經(jīng)驗(yàn);</p><p><b>  6.6軟件設(shè)計(jì)</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ù)存儲(chǔ)區(qū)</p><p>  uchar data_out[]={0,0,0,0,0,0};</p&

53、gt;<p>  void delay() //數(shù)碼管動(dòng)態(tài)掃描延時(shí),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() //動(dòng)態(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ù)點(diǎn)</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)換成對(duì)應(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>  七、實(shí)驗(yàn)總結(jié)</b></p><p>  課程設(shè)計(jì)是培

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

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

73、最深處。</p><p>  這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)的過(guò)程中可以說(shuō)是困難重重,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,感謝各位老師對(duì)我的耐心講解和悉心指導(dǎo)。同時(shí),在老師的身上我也學(xué)到了很多的實(shí)用知識(shí),對(duì)我以后的專業(yè)發(fā)展奠定了一定的基礎(chǔ)。在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故。這次的設(shè)計(jì)讓我有了信心

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論