課程設計--三位半數(shù)字顯示溫度計_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  實習名稱 電子技術綜合設計 </p><p>  學 院 信息工程學院 </p><p>  年級班別 </p><p>  學 號 <

2、/p><p>  學生姓名 </p><p>  2017年12月04日</p><p>  《三位半數(shù)字顯示溫度計》</p><p><b>  設計報告</b></p><p>  設計時間: 2017.11.09~2017.12.04 </p

3、><p>  班 級: </p><p>  姓 名: </p><p>  報告頁數(shù): 29頁 </p><p><b>  目錄</b></p><p>  一、設計任務與要求6</p>

4、<p>  二、 設計方案及比較(設計可行性分析)7</p><p>  三、系統(tǒng)設計總體思路8</p><p>  四、電路元件清單9</p><p>  五、各模塊工作原理分析10</p><p>  六、程序代碼展示14</p><p>  七、畫出電路原理圖及PCB圖22</p&g

5、t;<p>  八、產(chǎn)品的制作及調(diào)試22</p><p>  九、實驗結(jié)果及展示26</p><p><b>  十、實驗感想28</b></p><p><b>  一、設計任務與要求</b></p><p><b>  設計任務:</b></p&g

6、t;<p>  采用STC89C52單片機、DS18B20傳感器、數(shù)字顯示器設計一個日常溫度數(shù)字溫度計。</p><p> ?。ㄒ唬┊a(chǎn)品指標及技術要求:</p><p> ?、贉囟蕊@示范圍:0℃~50℃;</p><p> ?、跀?shù)字顯示分辨率:0.1℃;</p><p> ?、劬日`差≤0.5℃;</p><

7、p> ?、茈娐饭ぷ麟娫纯稍?~9V范圍內(nèi)工作. </p><p>  二、設計方案及比較(設計可行性分析)</p><p>  方案一:基于單片機的數(shù)字溫度計設計</p><p>  器件:單片機,18B20,LED數(shù)碼管,電阻,晶振,電容。</p><p>  優(yōu)點:溫度高低限度可以自由設定、讀出溫度后實時顯示溫度能,且可編程提升了

8、裝置的擴展性,可為后續(xù)功能增加預留空間。</p><p>  缺點:單片機需要編程,軟硬結(jié)合,溫度計的調(diào)試更為復雜 </p><p>  方案二:基于LM3芯片與ICL7107數(shù)字顯示溫度計設計</p><p>  器件:LM35、ICL7107、電阻、電容、數(shù)碼管等。</p><p>  優(yōu)點:無需編程,純硬件設計</p>&

9、lt;p>  缺點:電路設計復雜,PCB圖布線密集,如果制作單層板,需要大量飛線,易造成系統(tǒng)不穩(wěn)定,以及功能固定。</p><p>  經(jīng)過綜合比較,方案一雖然需要軟硬結(jié)合,總體難度大于方案二,但功能強大,而且相對來說在制板難度較小,綜合比較我們還是選擇方案一。</p><p>  三、系統(tǒng)設計總體思路</p><p>  經(jīng)分析,將系統(tǒng)分為三個部分,一個是由

10、溫度傳感器DS18B20組成的檢測部分,另一個是由單片機和晶振回路組成的主控分析部分,以及最后用數(shù)碼管顯示器與電阻做的顯示模塊。如圖所示DS18B20將檢測到的數(shù)據(jù)送到單片機,單片機對接收到的數(shù)據(jù)進行處理并送到數(shù)碼管顯示,6V電源給各個部分供電。</p><p><b>  四、電路元件清單</b></p><p>  五、各模塊工作原理分析</p>&

11、lt;p>  本系統(tǒng)由單片機主控電路、DS18B20溫度檢測模塊、LED數(shù)碼管顯示模塊3部分組成。</p><p>  1. STC89C52單片機主控制器件</p><p>  STC89C52RC是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K字節(jié)系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核</p><p>  

12、標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(兼容傳統(tǒng)51的5向量2級中斷結(jié)構),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保

13、存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。</p><p>  2. LED數(shù)碼管顯示模塊 </p><p>  LED數(shù)碼管原理圖如下所示</p><p>  下面左圖為實驗板其中一只數(shù)碼管,而右圖為數(shù)碼管的內(nèi)部接法,也 就是前面所說的共陽極。當要其顯示“1”時,只需置B 與C 為低電平,而其

14、它的為高電平;當要顯示“2”時,只需置A﹑B﹑G﹑E﹑D 為低電平,而其它的為高電平;當要顯示“8”時,就除了小數(shù)點以外全部為低電平;如此類推。</p><p>  LED 數(shù)碼管顯示方法 ——“動態(tài)掃描”。什么是動態(tài)掃描?就是所要工作的若干個數(shù)碼管輪流顯示,只要輪流顯示的速度足夠快,每秒約50 次以上,由于人眼的 “視覺暫留” 特性,看起來就像是連續(xù)顯示,這樣稱為動態(tài)掃描。這種顯示方式在數(shù)碼管應用系統(tǒng)中應用得最

15、為廣泛</p><p>  左圖為共陽極的動態(tài)掃電路,而右圖則為電路的工作時序。下面我們來分析一下動態(tài)掃描的工作原理。在電路中T1﹑T2﹑T3 為用作開關作用,當B極dig1﹑dig2﹑dig3 為低電平時導通,為高電平時截止,三個電阻為限流電阻。下面我們從圖5-15 來理解一下動態(tài)掃描的工作原理。 第一:首先顯示個位,在單片機中將dig1 置低電平,而dig2 與dig3 置高電平,所以只有T1 導通,而T2

16、 與T3 則截止,同時在段碼a~g 中輸出相應段碼的低電平,那么在數(shù)碼管中只有個位顯示,而相應的十位與百位則沒有顯示。 第二:顯示十位,在單片機中將dig2 置低電平,而dig1 與dig3 置高電平,所以只有T2 導通,而T1 與T3 則截止,同時在段碼a~g 中輸出相應段碼的低電平,那么在數(shù)碼管中只有十位顯示,而相應的個位與百位則沒有顯示。 第三:顯示百位,在單片機中將dig3 置低電平,而dig1 與dig2 置高電平,所以只有

17、T3 導通,而T1 與T2 則截止,同時在段碼a~g 中輸出相應段碼的低電平,那么在數(shù)碼管中只有百位顯示,而相應的個位與十位則沒有顯示。</p><p>  3. 溫度檢測模塊 </p><p>  DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~

18、12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下: </p><p>  獨特的單線接口僅需要一個端口引腳進行通信; </p><p>  多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能; </p><p><b>  無須外部器件; </b></p><p>  可通過數(shù)據(jù)線供電,電壓范圍為3.0

19、~5.5V;</p><p>  測溫范圍從-55度到+125度(從-10度到+85度的精度為±0.5度) </p><p><b>  零待機功耗;</b></p><p>  溫度以9或12數(shù)字; </p><p>  用戶可定義報警設置; </p><p>  報警搜索命令識別并

20、標志超過程序限定溫度(溫度報警條件)的器件; </p><p>  負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; </p><p>  DS18B20接線圖如下所示:</p><p><b>  六、程序代碼展示</b></p><p>  #include <reg51.h><

21、;/p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p><b>  uint TT;</b></p><p>  /*******************************共陽LED段碼表********

22、***********************/</p><p>  unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0xbf,0xc6};</p><p>  uchar code tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78

23、,0x00,0x10};</p><p>  /*************************端口定義************************/</p><p>  sbit DQ=P3^3; //數(shù)據(jù)傳輸線接單片機的相應的引腳</p><p>  /*************************定義全局變量*****************/<

24、;/p><p>  unsigned char tempL=0; //臨時變量低位</p><p>  unsigned char tempH=0; //臨時變量高位</p><p>  float temperature; //溫度值</p><p>  float temperature2;</p><p>  /**

25、********************************************************</p><p>  函數(shù)功能:延時子程序</p><p><b>  入口參數(shù):k</b></p><p><b>  出口參數(shù):</b></p><p>  *************

26、*********************************************/</p><p>  void delay(unsigned int k)</p><p><b>  {</b></p><p>  unsigned int n;</p><p><b>  n=0;</b&g

27、t;</p><p>  while(n < k)</p><p><b>  {n++;}</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  /****************

28、******************************************</p><p>  函數(shù)功能:數(shù)碼管掃描延時子程序</p><p><b>  入口參數(shù):</b></p><p><b>  出口參數(shù):</b></p><p>  ***********************

29、***********************************/</p><p>  void delay1(void)</p><p><b>  {</b></p><p><b>  int k;</b></p><p>  for(k=0;k<100;k++);</p&g

30、t;<p><b>  }</b></p><p>  /**********************************************************</p><p>  函數(shù)功能:數(shù)碼管顯示子程序</p><p><b>  入口參數(shù):k</b></p><p&g

31、t;<b>  出口參數(shù):</b></p><p>  **********************************************************/</p><p>  void display(int k)</p><p><b>  {</b></p><p><

32、b>  P0=0xff;</b></p><p>  P2=0xff; //1111 1111</p><p><b>  delay1();</b></p><p>  P2=0xfe;//1111 1110</p><p>  P0=tab[k/100]; //十位在第一位數(shù)碼管&l

33、t;/p><p><b>  delay1();</b></p><p><b>  P0=0xff;</b></p><p>  P2=0xff;//1111 1110</p><p><b>  delay1();</b></p><p>  P2=0

34、xfd; //1111 1101</p><p>  P0=tab1[k%100/10];</p><p><b>  delay1();</b></p><p><b>  P0=0xff;</b></p><p>  P2=0xff;//1111 1110</p><p

35、><b>  delay1();</b></p><p>  //個位在第二位數(shù)碼管</p><p>  ////P0=0x7f; //顯示小數(shù)點</p><p>  ////delay1();</p><p>  ////delay1();</p><p><b>  

36、//</b></p><p>  // P2=0xff;//1111 1110</p><p>  //delay1();</p><p>  P2=0xfb; //1111 1011</p><p>  P0=tab[k%100%10]; //小數(shù)位在第三個數(shù)碼管</p><p>&

37、lt;b>  delay1();</b></p><p><b>  P0=0xff;</b></p><p>  P2=0xff;//1111 1110</p><p><b>  delay1();</b></p><p><b>  P2=0xf7;</b&

38、gt;</p><p>  P0=0xc6; //第四位數(shù)碼管顯示C</p><p><b>  delay1();</b></p><p><b>  P0=0xff;</b></p><p>  P2=0xff; //1111 1111</p><

39、p><b>  delay1();</b></p><p><b>  }</b></p><p>  函數(shù)功能:DS18B20初始化子程序</p><p><b>  入口參數(shù):</b></p><p><b>  出口參數(shù):</b></p&

40、gt;<p>  **********************************************************/</p><p>  Init_DS18B20(void)</p><p><b>  {</b></p><p>  unsigned char x=0;</p><p>

41、;  DQ=1; //DQ先置高</p><p>  delay(8); //延時</p><p>  DQ=0; //發(fā)送復位脈沖</p><p>  delay(85); //延時(>480ms)</p><p>  DQ=1; //拉高數(shù)據(jù)線</p><p>  delay(14); //等待(15~60m

42、s)</p><p><b>  }</b></p><p>  /**********************************************************</p><p>  函數(shù)功能:向DS18B20讀一字節(jié)數(shù)據(jù)</p><p><b>  入口參數(shù):</b><

43、/p><p><b>  出口參數(shù):dat</b></p><p>  **********************************************************/</p><p>  ReadOneChar(void)</p><p><b>  {</b></p>

44、;<p>  unsigned char i=0;</p><p>  unsigned char dat=0;</p><p>  for (i=8;i>0;i--)</p><p><b>  {</b></p><p><b>  DQ=1;</b></p>

45、<p><b>  delay(1);</b></p><p><b>  DQ=0;</b></p><p><b>  dat>>=1;</b></p><p><b>  DQ=1;</b></p><p><b> 

46、 if(DQ)</b></p><p>  dat|=0x80;</p><p><b>  delay(4);</b></p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b&g

47、t;</p><p>  /**********************************************************</p><p>  函數(shù)功能:向DS18B20寫一字節(jié)數(shù)據(jù)</p><p><b>  入口參數(shù):dat</b></p><p><b>  出口參數(shù):</b&

48、gt;</p><p>  **********************************************************/</p><p>  WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i

49、=0;</p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p><b>  DQ=0;</b></p><p>  DQ=dat&0x01;</p><p><b>  delay(5);</

50、b></p><p><b>  DQ=1;</b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p><b>  delay(4);</b></p><p&

51、gt;<b>  }</b></p><p>  /**********************************************************</p><p>  函數(shù)功能:向DS18B20讀溫度值</p><p><b>  入口參數(shù):</b></p><p>  出口參

52、數(shù):temperature</p><p>  **********************************************************/</p><p>  ReadTemperature(void)</p><p><b>  {</b></p><p>  Init_DS18B20();

53、 //初始化</p><p>  WriteOneChar(0xcc); //跳過讀序列號的操作</p><p>  WriteOneChar(0x44); //啟動溫度轉(zhuǎn)換</p><p>  delay(125); //轉(zhuǎn)換需要一點時間,延時</p><p>  Init_DS18B20(); //初始化</p><p

54、>  WriteOneChar(0xcc); //跳過讀序列號的操作</p><p>  WriteOneChar(0xbe); //讀溫度寄存器(頭兩個值分別為溫度的低位和高位)</p><p>  tempL=ReadOneChar(); //讀出溫度的低位LSB</p><p>  tempH=ReadOneChar(); //讀出溫度的高位MSB<

55、;/p><p>  //溫度轉(zhuǎn)換,把高低位做相應的運算轉(zhuǎn)化為實際溫度</p><p>  temperature=((tempH*256)+tempL)*0.0625;</p><p><b>  /*加*/</b></p><p>  temperature2=temperature*10+0.5;</p>

56、<p>  temperature=temperature2;</p><p><b>  /*加*/</b></p><p>  delay(200);</p><p>  return(temperature);</p><p><b>  }</b></p><

57、p>  /**********************************************************</p><p><b>  函數(shù)功能:主程序</b></p><p><b>  入口參數(shù):</b></p><p><b>  出口參數(shù):</b></p>

58、<p>  **********************************************************/</p><p>  void main()</p><p><b>  {</b></p><p><b>  float i;</b></p><p>

59、<b>  while(1)</b></p><p>  {i=ReadTemperature();</p><p>  display(i);}}</p><p>  七、畫出電路原理圖及PCB圖</p><p><b>  電路原理圖: </b></p><p><

60、b>  PCB圖:</b></p><p><b>  實物圖:</b></p><p>  八、產(chǎn)品的制作及調(diào)試</p><p>  產(chǎn)品的制作具體步驟如下:</p><p>  在網(wǎng)上收集相關芯片的數(shù)據(jù)以及典型電路,為設計原理圖和PCB圖做準備。</p><p>  用軟件A

61、ltium Designer完成電路原理圖制作,包括元件,封裝的,以及尋找元件庫,封裝庫。</p><p>  利用軟件Altium Designer導入原理圖的元器件,并根據(jù)原理圖進行人工布局布線,布線的線寬以20mil為基準,電源線用30mil.</p><p>  轉(zhuǎn)印。利用Altium Designer導出PCB圖的pdf文件,通過打印機在熱敏紙上打印出PCB圖,用砂紙打磨銅板,去

62、除銅表面的氧化層。然后將印有電路圖的一面熱轉(zhuǎn)印紙與銅板壓緊并剪去多余的熱轉(zhuǎn)印紙,進行五到六次遍不間斷的來回加熱,通過在高溫下將銅版紙上的電路圖墨跡粘到銅板上,再檢查線路是否清晰,是否聯(lián)通,用油性馬克筆在墨跡不清晰和斷路的地方修補并加粗。</p><p>  制版。首先用水壺把自來水加熱,然后用腐蝕藥粉與水按一定比例倒入水盆中,調(diào)制腐蝕液,水的量以浸沒覆銅板為準,腐蝕粉大約四分之一包,然后將敷銅板放入其中,并不斷地

63、搖晃盆子加快反應速率。</p><p>  打孔。利用鉆孔機進行打孔。放置底座的孔要盡量對齊,可以在打孔前畫一條直線,若孔口不足放入底座(元器件),則應該換一個大一點的鉆頭重新鉆一遍。</p><p>  將元器件焊接到相應位置,并用萬用表檢查是否出現(xiàn)斷路、短路的情況。若出現(xiàn)斷路,則應該重新焊上;若出現(xiàn)短路,則應該用電烙鐵沾上松香使其斷路。</p><p>  利用

64、keil uvision軟件進行單片機程序編輯,然后將程序下載到單片機中。</p><p>  測試,下載程序至單片機之后,對電路板進行測試工作(對電路板通入5V穩(wěn)定電壓,觀察當前室溫是否與顯示對應。利用電烙鐵靠近溫度感應器加熱,觀察數(shù)碼管顯示變化,記錄拍照)。</p><p><b>  九、實驗結(jié)果及展示</b></p><p><b

65、>  常溫下</b></p><p>  用電烙鐵靠近加熱,每提高5℃記錄數(shù)據(jù)一次</p><p>  溫度計可以在50℃內(nèi)正常運行</p><p><b>  十、實驗感想</b></p><p>  從第十周開始上課開題布置設計任務,在十一周和十二周進行設計相關資料的收集,初步完成電路原理圖的設計,

66、到十三周將原理圖轉(zhuǎn)化為PCB圖,將PCB圖導出PDF文件,然后轉(zhuǎn)印PCB圖,腐蝕覆銅板并打孔,最后將元器件焊入電路板上并燒入程序測試成功。在這三個星期中也遇到了挺多問題,比如,在設計PCB圖自動布線線路太過曲折密集,無法滿足實際要求,需要人為布線使之符合要求;在第一次把底座管腳無法順利插入電路板中,后來才知道底座的孔口需要大一些,換上大一些的鉆頭重新打鉆;再例如數(shù)碼管只顯示8888,無法正常工作,一步一步排查問題,檢查電路圖是否短路斷路

67、,元件是否燒壞,檢查代碼,最后發(fā)現(xiàn)是連接單片機VCC的管腳與電源正極管腳之間斷路了。中間也有些問題反復出現(xiàn),混淆了問題出處。萬幸最后終于解決了問題。</p><p>  通過這次課程設計,更加加深了對PCB圖的制作過程,也學到了制板的整個過程,也學會了如何運用網(wǎng)上的芯片手冊進行原理圖的設計。在完成每一步的過程中也感受到了課程設計帶來的快樂,通過設計出的三位半溫度計,提升了實驗實踐能力,培養(yǎng)了獨立思考、動手操作的能

溫馨提示

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

評論

0/150

提交評論