數(shù)字式溫度計(jì)課程設(shè)計(jì)論文_第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>  電子信息工程實(shí)驗(yàn)教學(xué)中心</p><p>  《電子技術(shù)課程設(shè)計(jì)》設(shè)計(jì)報(bào)告</p><p>  完成日期:2014年6月22號(hào)</p><p> 設(shè)計(jì)題目數(shù)字式溫度計(jì)的設(shè)計(jì)</p><p> 年級(jí)專(zhuān)業(yè)學(xué) 號(hào)姓 名成 績(jī)</p><p> 2011電子信息工程</p>&

2、lt;p> 2011電子信息工程2</p><p> 2011電子信息工程</p><p> 評(píng)語(yǔ):</p><p><b>  目錄</b></p><p><b>  目錄1</b></p><p><b>  ⒈原理分析1</b><

3、/p><p><b> ?、卜桨高x擇2</b></p><p> ?、?電路原理圖繪制及仿真(Mutilsim)3</p><p>  ⒋ PCB圖(protel)繪制5</p><p><b>  5.綜合調(diào)試6</b></p><p>  6.課程設(shè)計(jì)體會(huì)11<

4、;/p><p>  原理分析 (小組所有成員共同完成)</p><p>  DS18B20是一種數(shù)字溫度傳感器,它把溫度轉(zhuǎn)換成數(shù)字量以后存貯在自身內(nèi)部,和單片機(jī)通過(guò)連接一個(gè)I/O口連接,單片機(jī)把數(shù)據(jù)讀出,然后在數(shù)碼管或者液晶屏上顯示。</p><p>  按照系統(tǒng)設(shè)計(jì)的功能和要求,確定系統(tǒng)由3個(gè)模塊組成:主控制器,測(cè)溫電路和顯示電路。</

5、p><p>  1)主控模塊AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4K的可反復(fù)擦寫(xiě)的FLASH只讀存儲(chǔ)器和128 BYTES的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器,40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口。AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-

6、51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。</p><p>  圖1 AT89C52引腳圖</p><p>  2)DS18B20是美國(guó)DALLAS半導(dǎo)體公司近年推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測(cè)溫度,

7、并可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9-12位的數(shù)字值讀數(shù)方式,無(wú)需外加測(cè)量電路及A/D轉(zhuǎn)換器,簡(jiǎn)化了電路;而且從DS18B20讀出或?qū)懭胄畔H需一根口線,大大降低了單片機(jī)的硬件資源占用?;贒S18B20的單片機(jī)溫度控制器具有電路簡(jiǎn)單、可靠性高的優(yōu)點(diǎn)。 </p><p>  圖2 DS18B20內(nèi)部構(gòu)圖</p><p><b>  性能特點(diǎn)</b>

8、;</p><p>  ●獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;</p><p>  ●多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;</p><p><b>  ●無(wú)須外部器件;</b></p><p>  ●可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p>&l

9、t;b>  ●零待機(jī)功耗;</b></p><p>  ●溫度以9或12位數(shù)字;</p><p>  ●用戶可定義報(bào)警設(shè)置;</p><p>  ●報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;</p><p>  ●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。</p>

10、<p>  3)顯示電路采用4位共陽(yáng)LED數(shù)碼管,從P1口輸出段碼,列掃描用P3.0~P3.3來(lái)實(shí)現(xiàn),列驅(qū)動(dòng)用9012三極管。</p><p>  方案選擇 (小組所有成員共同完成)</p><p>  圖3 方案設(shè)計(jì)框圖</p><p>  系統(tǒng)電路由電源電路、溫度信號(hào)產(chǎn)生電路、單片機(jī)控制電路和液

11、晶顯示電路等四部分組成。由兩節(jié)1.5V干電池為系統(tǒng)電路提供工作電壓。溫度信號(hào)產(chǎn)生電路采用DS18B20單總線系統(tǒng)電路,實(shí)時(shí)檢測(cè)環(huán)境溫度,并在內(nèi)部處理后產(chǎn)生數(shù)字溫度信號(hào),輸出到單片機(jī)進(jìn)行顯示處理。單片機(jī)控制電路由單片機(jī)最小系統(tǒng)電路組成,用于實(shí)時(shí)檢測(cè)并處理數(shù)字溫度信號(hào),輸出數(shù)碼管控制命令,進(jìn)而控制共陰極數(shù)碼管實(shí)時(shí)顯示當(dāng)前的溫度值。本電路方案結(jié)構(gòu)簡(jiǎn)單,技術(shù)成熟,具有功能擴(kuò)展空間特點(diǎn)。</p><p>  本數(shù)字式溫度計(jì)

12、對(duì)溫度進(jìn)行實(shí)時(shí)測(cè)量并顯示,其主要功能介紹:</p><p> ?。?)實(shí)時(shí)測(cè)量溫度,采用DS18B20傳感器。</p><p> ?。?)采集測(cè)溫范圍為-50~+120 ℃.</p><p> ?。?)溫度精度在0.1 ℃;誤差±0.2℃以?xún)?nèi).</p><p> ?。?)顯示模塊,采用4個(gè)LED數(shù)碼管顯示.</p>&

13、lt;p> ?。?)供電采用電池供電方式。</p><p>  至此,設(shè)計(jì)目的已全部實(shí)現(xiàn)。</p><p> ?、?電路原理圖繪制及仿真(Mutilsim) (譚海燕)</p><p><b>  1)元件型號(hào)</b></p><p>  圖4 元件清單<

14、/p><p>  2)電路原理圖及仿真結(jié)果</p><p>  圖 5 電路原理圖</p><p>  圖6 仿真結(jié)果</p><p> ?、?PCB圖(protel)繪制 (鄭冰倩)</p><p><b>

15、  1)PCB設(shè)計(jì)步驟</b></p><p> ?。?)繪制電路原理圖 </p><p>  首先將所有元件都從庫(kù)中取出來(lái),放置在圖紙上,并且調(diào)整好位置。使用連線工具將元件連接起來(lái),設(shè)置元件屬性。使用Tool/Annotate菜單對(duì)元件進(jìn)行編號(hào),使用電氣檢查(ERC),使用Edit/Export to Spread 菜單建立元件列表。使用Design/Create

16、Netlist 菜單建立網(wǎng)絡(luò)表,畫(huà)電路板圖。 ? </p><p><b> ?。?)繪制PCB圖</b></p><p>  使用向?qū)?,定義一個(gè)寬90mm、高70mm的單面PCB板,根據(jù)溫度計(jì)的原理圖,設(shè)計(jì)數(shù)顯溫度計(jì)的PCB圖。將原理圖的網(wǎng)絡(luò)表調(diào)入設(shè)計(jì)的單面板中,進(jìn)行布局,啟動(dòng)自動(dòng)拉伸元 件,然后進(jìn)行人工布局,布局一定要合理使線走的最短,最省。進(jìn)性布線規(guī)則設(shè)定(銅

17、膜線線寬設(shè)為15mil,地線和電源線寬設(shè)為 30mil線間距設(shè)為15mil)然后進(jìn)行布線,盡量使過(guò)線減少,走跨線的少,不能出現(xiàn)高亮線。</p><p><b>  2)設(shè)計(jì)原則</b></p><p>  (1)注意發(fā)熱元件應(yīng)該遠(yuǎn)離熱敏元件。</p><p>  盡可能按照原理圖的元件安排對(duì)元件進(jìn)行布局,信號(hào)從左邊進(jìn)入、從右邊輸出,從上邊輸入、

18、從下邊輸出。 按照電路流程,安排各個(gè)功能電路單元的位置,使信號(hào)流通更加順暢和保持方向一致。</p><p> ?。?)元件放置的順序 首先放置與結(jié)構(gòu)緊密配合的固定位置的元件,如電源插座、指示燈、開(kāi)關(guān)和連接插件等。 再放置特殊元件,例如發(fā)熱元件、變壓器、集成電路等。 最后放置小元件,例如電阻、電容、二極管等。</p><p> ?。?)元件離電路板邊緣的距離,所有元件均應(yīng)該放置在離板邊緣 3

19、mm 以?xún)?nèi)的位置。</p><p> ?。?)銅膜線的不拐彎處應(yīng)為圓角或斜角,而直角或尖角在高頻電路和布線密度高的情況下會(huì)影響電氣性能。當(dāng)雙面板布線時(shí),兩面的導(dǎo)線應(yīng)該相互垂直、斜交或彎曲走線,避免相互平行,以減少寄生電容。</p><p>  (6)元件布置要合理分區(qū)。元件在電路板上排列的位置要充分考慮抗電磁干擾問(wèn)題。原則之一就是各個(gè)元件之間的銅膜線要盡量的短,在布局上,要把模擬電路、數(shù)字

20、電路和產(chǎn)生大噪聲的電路(繼電器、大電流開(kāi)關(guān)等)合理分開(kāi),使它們相互之間的信號(hào)耦合最小。 </p><p> ?。?)屏蔽與接地:銅膜線的公共地線應(yīng)該盡可能放在電路板的邊緣部分。在電路板上應(yīng)該盡可能多地保留銅箔做地線,這樣可以使屏蔽能力增強(qiáng)。另外地線的形狀最好作成環(huán)路或網(wǎng)格狀。多層電路板由于采用內(nèi)層做電源和地線專(zhuān)用層,因而可以起到更好的屏蔽作用效果。</p><p><b>  3

21、)PCB圖</b></p><p>  圖7 PCB圖</p><p>  5.綜合調(diào)試 (胡星樺)</p><p><b>  1)軟件部分</b></p><p>  圖8 程序流程圖<

22、;/p><p>  主程序主要分為4大部分:初始化、讀取溫度、處理溫度、顯示溫度。</p><p><b>  初始化子程序:</b></p><p><b>  程序</b></p><p>  #include<reg52.h></p><p>  #includ

23、e<intrins.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  sbit SEG1=P2^0; //段碼位1</p><p>  sbit SEG2=P2^2; //段碼位2 &l

24、t;/p><p>  sbit SEG3=P2^4; //段碼位3</p><p>  sbit SEG4=P2^6; //段碼位4</p><p>  sbit DQ1=P1^7; //傳感器1</p><p>  uchar ng; //負(fù)號(hào)標(biāo)志</p><p>  ucha

25、r code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0xFF};//共陰數(shù)碼碼表</p><p>  /* 0 1 2 3 4 5 6 7 8 9 C 無(wú)*/</p><p>  uchar code df_Table[]= </p

26、><p><b>  {</b></p><p>  0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9</p><p>  }; //溫度小數(shù)位對(duì)照表</p><p>  uchar CurrentT = 0; //當(dāng)前讀取的溫度整數(shù)部分</p><p

27、>  uchar Temp_Value[]={0x00,0x00}; //從DS18B20讀取的溫度值</p><p>  uchar Display_Digit[]={0,0,0,0};//待顯示的各溫度數(shù)位</p><p>  bit DS18B20_IS_OK = 1; //傳感器正常</p><p><b>  //延時(shí)&l

28、t;/b></p><p>  //************************************************************************/</p><p>  // 函數(shù): LCD_Delay()</p><p>  // 描述: 延時(shí)t ms函數(shù)</p><p><b>  //

29、參數(shù): t </b></p><p><b>  // 返回: 無(wú)</b></p><p>  // 備注: 12MHZ t=1延時(shí)時(shí)間約1ms</p><p>  // 版本: 2011/01/01 First version</p><p>  //****************

30、********************************************************/</p><p>  void Delay_ms(unsigned int t)//延時(shí)1ms</p><p><b>  {</b></p><p>  unsigned int i,j;</p><p>

31、  for(i=0;i<t;i++)</p><p>  for(j=0;j<120;j++)</p><p><b>  ;</b></p><p><b>  }</b></p><p>  void Delay(uint x)</p><p><b&g

32、t;  {</b></p><p>  while(--x);</p><p><b>  }</b></p><p>  /*DS18B20的復(fù)位脈沖 主機(jī)通過(guò)拉低單總線至少480us以產(chǎn)生復(fù)位脈沖</p><p>  然后主機(jī)釋放單總線并進(jìn)入接收模式 此時(shí)單總線電平被拉高</p><p

33、>  DS18B20檢測(cè)到上升沿后 延時(shí)15~60us,拉低總線60~240us產(chǎn)生應(yīng)答脈沖 */</p><p>  uchar Init_DS18B20()</p><p><b>  {</b></p><p>  uchar status;</p><p>  DQ1 = 1; //D

34、S18B20置高電平</p><p>  Delay(8); //延時(shí)</p><p>  DQ1 = 0; //DS18B20置低電平</p><p>  Delay(90); //延時(shí)480us以上</p><p>  DQ1 = 1; //DS18B20置高電平</p><p>  Delay(8);

35、 //延時(shí)</p><p>  status = DQ1;//讀狀態(tài)</p><p>  Delay(100); //延時(shí)</p><p>  DQ1 = 1; //DS18B20置高電平</p><p>  return status;//返回狀態(tài)</p><p><b>  }</b>

36、;</p><p>  uchar ReadOneByte()</p><p><b>  {</b></p><p>  uchar i,dat=0;</p><p>  DQ1 = 1;//DS18B20置高電平</p><p>  _nop_();//延時(shí)</p><p&

37、gt;  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  DQ1 = 0;//DS18B20置低電平</p><p>  dat >>= 1;//右移數(shù)據(jù)</p><p>  DQ1 = 1;//DS18B20置高電平</p><p>

38、;  _nop_();//延時(shí)</p><p>  _nop_();//延時(shí)</p><p><b>  if(DQ1)</b></p><p>  dat |= 0X80;</p><p>  Delay(30);//延時(shí)</p><p>  DQ1 = 1;//DS18B20置高電平</

39、p><p><b>  }</b></p><p>  return (dat); </p><p><b>  }</b></p><p>  void Read_Temperature()</p><p>  { EA=0;//關(guān)中斷</p><p&g

40、t;  if(Init_DS18B20()==1)</p><p>  DS18B20_IS_OK=0;</p><p><b>  else</b></p><p><b>  { </b></p><p>  WriteOneByte(0xcc); //跳過(guò)序列號(hào)</p>&

41、lt;p>  WriteOneByte(0x44); //啟動(dòng)溫度轉(zhuǎn)換</p><p>  Init_DS18B20();</p><p>  WriteOneByte(0xcc);//跳過(guò)序列號(hào)</p><p>  WriteOneByte(0xbe);//讀取溫度寄存器</p><p>  Temp_Value[0] = ReadO

42、neByte(); //溫度低8位</p><p>  Temp_Value[1] = ReadOneByte();//溫度高8位</p><p>  DS18B20_IS_OK=1;</p><p><b>  }</b></p><p>  EA=1;//開(kāi)中斷</p><p><b&

43、gt;  }</b></p><p>  void Display_Temperature()</p><p><b>  {</b></p><p>  // uchar i;</p><p>  uchar t = 150;//延時(shí)</p><p>  ng =

44、0; //與負(fù)值標(biāo)志</p><p>  if((Temp_Value[1]&0xf8)==0xf8) //判斷是否為負(fù)</p><p><b>  {</b></p><p>  Temp_Value[1] = ~Temp_Value[1];//取反</p><p>  Temp_Va

45、lue[0] = ~Temp_Value[0]+1;//取反</p><p>  if(Temp_Value[0]==0x00)</p><p>  Temp_Value[1]++;</p><p>  ng = 1;//負(fù)號(hào)</p><p><b>  }</b></p><p&g

46、t;  else{ng = 0;}</p><p>  Display_Digit[0] = df_Table[Temp_Value[0]&0x0f]; //查表得溫度小數(shù)部分</p><p>  CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4); //溫度整數(shù)部

47、分</p><p>  Display_Digit[3] = CurrentT/100; //百</p><p>  Display_Digit[2] = CurrentT%100/10; //十</p><p>  Display_Digit[1] = CurrentT%10; //個(gè)</p><p><b>  }

48、</b></p><p>  void DIS_SEG(void)</p><p><b>  {</b></p><p>  if(ng==1){P0=0x40;}else{P0=tab[Display_Digit[3]];} // 數(shù)碼管顯示負(fù)數(shù) 或正的百位</p><p>  SEG1=0;

49、//片選百位數(shù)碼管 </p><p>  Delay_ms(3); //延時(shí)3ms</p><p>  SEG1=1;//關(guān)閉百位數(shù)碼管</p><p>  P0=tab[Display_Digit[2]]; //溫度十位 </p><p>  SEG2=0;//片選十位數(shù)碼管</p>&

50、lt;p>  Delay_ms(3); //延時(shí)3ms</p><p>  SEG2=1; //關(guān)閉十位數(shù)碼管</p><p>  P0=(tab[Display_Digit[1]]+0x80); //溫度個(gè)位和小數(shù)點(diǎn)</p><p>  SEG3=0;//片選個(gè)位數(shù)碼管</p><p>  Delay_ms(3);

51、 //延時(shí)3ms</p><p>  SEG3=1; //關(guān)閉個(gè)位數(shù)碼管</p><p>  P0=tab[Display_Digit[0]]; //小數(shù)位</p><p>  SEG4=0;//片選小數(shù)位數(shù)碼管</p><p>  Delay_ms(3); //延時(shí)3ms</p><p>  

52、SEG4=1; //關(guān)閉小數(shù)位數(shù)碼管</p><p><b>  }</b></p><p>  void main(void)</p><p>  { uchar i,j;</p><p>  Read_Temperature(); //初始化DQ1</p><p>  Delay_m

53、s(1000); //延時(shí)1s</p><p>  Read_Temperature(); //讀溫度</p><p>  //------------------------------------</p><p>  Read_Temperature(); //讀溫度</p><p>  if(DS18B2

54、0_IS_OK) </p><p>  Display_Temperature(); //顯示溫度處理</p><p>  //------------------------------------</p><p><b>  while(1)</b></p><p>  { //--------

55、----在SEG上顯示溫度--------------------</p><p>  for(j=0;j<25;j++){DIS_SEG();}</p><p>  //--------------------溫度-----------------------</p><p><b>  i++;</b></p><

56、p>  if(i>5){Read_Temperature(); //讀溫度</p><p>  if(DS18B20_IS_OK){Display_Temperature();} //溫度數(shù)據(jù)處理</p><p><b>  i=0;</b></p><p>  }//避免頻繁采集溫度<

57、;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  硬件調(diào)試結(jié)果</b></p><p>  圖9 硬件調(diào)試圖</p><p><b>  6.課程設(shè)計(jì)體會(huì)&

58、#160;</b></p><p>  本次的課程設(shè)計(jì)使我們進(jìn)一步鞏固了書(shū)本上的知識(shí),做到了學(xué)以致用。這是我們第二次自己動(dòng)手設(shè)計(jì)的電路,通過(guò)系統(tǒng)仿真軟件protues和編譯軟件keil,使我們進(jìn)一步了解了單片機(jī)的設(shè)計(jì)制作過(guò)程,其中最為困難的是軟件部分,即編程部分,我們上網(wǎng)找了好多資料,雖然經(jīng)過(guò)自己的修改,但還是有很多功能不能實(shí)現(xiàn),如溫度上下限設(shè)置。由于protues并不是很熟練,在使用的過(guò)程中有很多原

溫馨提示

  • 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)論