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

下載本文檔

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

文檔簡介

1、<p><b>  課程設計</b></p><p><b>  數(shù)字式溫度計設計</b></p><p>  摘要:隨著時代的進步和發(fā)展,單片機技術已經普及到我們生活,工作,科研,各個領域,已經成為一種比較成熟的技術,本文將介紹一種基于單片機控制的數(shù)字溫度計,本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內時,可以

2、報警。 關鍵詞:單片機,數(shù)字控制,溫度計, DS18B20,AT89S52</p><p><b>  0 引言</b></p><p>  隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技

3、術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p>  本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用單片機AT89S52,測溫傳感器使用DS18B20,用3位共陽極LED數(shù)碼管以串口傳送數(shù)據(jù),實現(xiàn)溫度顯示,能準確達到以上要求</p><p><b&

4、gt;  1、設計方案</b></p><p>  本設計方案的選擇主要是感溫元件的選擇,經查閱資料,IC式感溫器在市場上應用比較廣泛的有以下幾種:</p><p>  (1)AD590:電流輸出型的測溫組件,溫度每升高1攝氏度K(凱式溫度),電流增1uA,溫度測量范圍在-55℃~150℃之間。其所采集到的數(shù)據(jù)需經A/D轉換,才能得到實際的溫度值。.</p>&l

5、t;p>  (2)DSl8B20:除了測量溫度外,它還可以把溫度值以數(shù)字的方式(9Bit)送出,溫度送出的精度為O.5℃,溫度測量范圍在-55℃~125℃之間,可以做恒溫控制。</p><p>  (3)SMARTEC感溫組件:這是一只3個管腳感溫IC,溫度測量范圍在—45℃~130。C。誤差可以保持在0.7℃以內。</p><p>  本設計選用DSl8820感溫IC,這是因其性能

6、參數(shù)符合設計要求,接口簡單,內部集成了A/D轉換,測溫更簡便,精度也較高,反應速度快,且經過市場考察,該芯片易購買,使用方便。</p><p>  本電路主要由以下三大模塊組成。</p><p>  模塊一:DSl8B20芯片。</p><p>  實現(xiàn)功能:實現(xiàn)溫度的采集和模擬量與數(shù)字量的轉換,采集后的數(shù)據(jù)經過芯片內部模數(shù)轉換后通過一個單總線傳送到單片機的信號輸入

7、口。</p><p>  模塊二:AT89S52單片機。</p><p>  實現(xiàn)功能:通過程序開發(fā)并輸入到單片機,使其具備一定的數(shù)據(jù)處理能力,同時通過對DSl8B20芯片的讀和寫把檢測到的數(shù)據(jù)轉換成編碼寫到AT89S52單片機中,再通過單片機的輸出口輸出數(shù)據(jù)經過控制由LCDl602動態(tài)顯示出來。</p><p>  模塊三:LCDl602。</p>

8、<p>  實現(xiàn)功能:將單片機輸出的數(shù)據(jù)進行動態(tài)顯示。</p><p>  2、DSl8B20芯片</p><p>  美國DALLAS生產的DSl8B20,將各種數(shù)字轉換電路都集成在一起,省去了電路中的轉換、放大等單元,節(jié)約了大量的引線和控制通道切換的邏輯電路,DS18B20內部主要由四部分組成:暫態(tài)存儲器、64位ROM、溫度傳感器及溫度報警觸發(fā)裝置;DSl8B20的測量溫度范

9、圍從一55℃~+125℃,所以在實際的應用中具有極高的性價比。</p><p><b>  2.1性能特點</b></p><p>  1)在一10℃~+85℃范圍內,DSl8B20具有±O.5℃的精度。</p><p>  2)獨特的寄生電源供電方式和外接電源供電方式并存,且供電范圍為3.0V~5.5V。</p>&l

10、t;p>  3)具有可編程的9~12位溫度轉換精度。</p><p>  4)采用“一線總線”結構,且處理只要一只I/0端口就可以實現(xiàn)多點測溫,節(jié)省硬件資源。</p><p>  5)內部設有程序設置寄存器,可用來設置各種參數(shù):分辨率、報警溫度等。</p><p>  2.2 DSl8B20的內部存儲器</p><p>  由圖1可以看

11、到,Dsl8820的內部存儲器是由8個單元組成,其中第0、1個存放測量溫度值,第2、3分別存放報警溫度的上下限值,第4單元為配置單元,5、6、7單元在DSl8820這里沒有被用到。對于第4個寄存器,用戶可以設置溫度轉換精度,系統(tǒng)默認12bit轉換精度,相當于十進制的0.0625℃,其轉換時間大約為750磷。具體見表l。</p><p>  圖1 內部存儲器結構圖</p><p><b

12、>  表1 溫度精度配置</b></p><p>  由于DS18B20采用的“一線總線”結構,所以數(shù)據(jù)的傳輸與命令的通訊只要通過微處理器的一根雙向I/o口就可以實現(xiàn)。DSl8B20約定在每次通信前必須對其復位,具體的復位時序如圖2所示。</p><p><b>  圖2 復位時序圖</b></p><p>  圖2中所示,t

13、RSTL為主機發(fā)出的低電平信號,本文中有AT89S52提供,tRSTL的最小時延為,然后釋放總線,檢查DSl8B20的返回信號,看其是否已準備接受其他操作,其中tPDHIGH時間最小為,最長不能超過,否則認為DS18B20沒有準備好,主機應繼續(xù)復位,直到檢測到返回信號變?yōu)榈碗娖綖橹埂?lt;/p><p>  主機一旦檢測到DS18B20的存在,根據(jù)DS18B2的工作協(xié)議,就應對ROM進行操作,接著對存儲器操作,最后進

14、行數(shù)據(jù)處理。在DS18B20中規(guī)定了5條對ROM的操作命令。見表2.</p><p>  主機在發(fā)送完ROM操作指令之后,就可以對DS18B20內部的存儲器進行操作,同樣DS18B20規(guī)定了6條操作指令。見表3。 DS18B20的讀、寫時序圖見圖3。</p><p>  圖3 DS18B20的讀、寫時序圖</p><p>  3、AT89S52單片機</p&g

15、t;<p><b>  3.1主要性能 </b></p><p>  與MCS-51單片機產品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33Hz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)

16、指針 、掉電標識符 。</p><p>  3.2功能特性描述 </p><p>  AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編

17、程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、

18、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52 </p><p>  P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 </p><p>  當訪問外部程序和數(shù)據(jù)存

19、儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0具有內部上拉電阻。 </p><p>  在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗 時,需要外部上拉電阻。 </p><p>  P1 口:P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅動4 個TTL 邏輯電平。對P1 端口寫“1”時,內部上拉電阻把端口拉高,

20、此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2 的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 </p><p>  在flash編程和校驗時,P1口接收低8位地址字節(jié)。 </p><p><b>  引腳號第二功能 </b&

21、gt;</p><p>  P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出 </p><p>  P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) </p><p>  P1.5 MOSI(在系統(tǒng)編程用) </p><p>  P1.6 MISO(在系統(tǒng)編程用) </p><p> 

22、 P1.7 SCK(在系統(tǒng)編程用) </p><p>  P2 口:P2 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個 </p><p>  TTL 邏輯電平。對P2 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入 </p><p>  口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 &l

23、t;/p><p>  在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR) 時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內容。 </p><p>  在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。 </p><

24、;p>  P3 口:P3 口是一個具有內部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅動4 個TTL 邏輯電平。對P3 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 </p><p>  P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 </p><p>  在fla

25、sh編程和校驗時,P3口也接收一些控制信號。 </p><p><b>  端口引腳 第二功能</b></p><p>  P3.0 RXD(串行輸入口)</p><p>  P3.1 TXD(串行輸出口)</p><p>  P3.2 INTO(外中斷0)</p><p>  P3.3 INT1

26、(外中斷1)</p><p>  P3.4 TO(定時/計數(shù)器0)</p><p>  P3.5 T1(定時/計數(shù)器1)</p><p>  P3.6 WR(外部數(shù)據(jù)存儲器寫選通)</p><p>  P3.7 RD(外部數(shù)據(jù)存儲器讀選通)</p><p>  此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控

27、制信號。</p><p>  RST——復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。</p><p>  ALE/PROG——當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過

28、一個ALE脈沖。</p><p>  對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p>  如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。</p><p> 

29、 PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。</p><p>  EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內

30、部會鎖存EA端狀態(tài)。</p><p>  如EA端為高電平(接Vcc端),CPU則執(zhí)行內部程序存儲器的指令。</p><p>  FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。</p><p><b>  4、電路原理</b></p><p><b&g

31、t;  4.1電路原理</b></p><p>  本設計進行溫度顯示控制主要的控制器件是AT89S51單片機,而DSl8820芯片是單總線結構的電子元件。單線總線是一種具有一個總線主機和一個或若干個從機(從屬器件)的系統(tǒng)。DSl8S20芯片在電路中起從機的作用。單線總線只有一根線,即線上的第一個器件能在適當?shù)臅r間驅動該總線。為了做到這一點,第一個連接到單線總線上的器件必須具有漏極開路或三態(tài)輸出。另外

32、。單線總線的空閑狀態(tài)是高電平。不管任何原因,如果執(zhí)行需要被掛起,那么,若要重新恢復執(zhí)行,總線必須保持在空閑狀態(tài)。如果不滿足這一點且總線保持在低電乎時閾大于480us,那么總線上所有器件均被復位。由此。DSl8820芯片的DQ接單片機lqO 1:1 P3.3,通過溫度傳感器采樣的數(shù)據(jù)送入單片機,單片機依據(jù)預先寫好的程序,通過靜態(tài)顯示,最后在LcDl602顯示出了溫度數(shù)值。電路原理如圖l所示。</p><p>  4

33、.2電路的焊接和調試</p><p>  由于本設計的電路比較簡單。為了節(jié)省成本選擇了使用萬用板。按電路圖把所有的元器件焊接好,并連接好電源線和地線,檢查無誤,用“easy Isp_2”下載線,使用Easy 51Prov2.0下載程序,把程序下載到52單片機實驗板上,即可通電調試。另外,為了向溫度計提供一個穩(wěn)定的5v穩(wěn)壓工作電源,在板上另加了一個5V穩(wěn)壓電源。</p><p><b&

34、gt;  5、結束語</b></p><p>  基于單片機的數(shù)字式溫度計通過在各種環(huán)境溫度下的多次測量實驗,測試結果表明本文設計的數(shù)字溫度計能較好地顯示出實際環(huán)境溫度,且反應迅速,使用方便,測量的溫度精確在0.8"E之內,完全滿足設計要求。該數(shù)顯溫度計已在各種冷藏庫、雞苗孵化房等場合使用,收到了良好的效果</p><p><b>  6、參考文獻</

35、b></p><p>  [1]林伸茂.8051單片機徹底研究實習篇[M].北京:人民郵電出版社。2002.</p><p>  [2]李群芳.張士軍,黃建.單片微型計算機與接口技術(第2版)[M].北京:電子工業(yè)版社,2005.</p><p>  [3]馬家展。孫玉德,張穎.MCS-51單片機原理及接口技術[Ml哈爾濱:哈爾濱工業(yè)大學出版社。1998.&l

36、t;/p><p><b>  附件</b></p><p><b>  電路原理圖</b></p><p><b>  PCD板</b></p><p><b>  程序:</b></p><p>  /****************

37、*************************************************/ </p><p>  /*名稱: 測溫+顯示程序 */

38、 </p><p>  /*功能: 讀取當前18B20溫度,由數(shù)碼管顯示出來。 */

39、 </p><p>  /************

40、*****************************************************/</p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  sbit DQ =P3^7;//18B20數(shù)據(jù)線引腳</p><p&g

41、t;<b>  //行掃描數(shù)組</b></p><p>  uchar code scan[4] = {0x7f,0xbf,0xdf,0xef};//row0--row4</p><p>  //數(shù)碼管顯示的段碼表</p><p>  uchar code table[20] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x

42、82,0xf8,0x80,0x90, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};</p><p>  uchar dispbuf[4]; //顯示緩沖區(qū) </p><p>  uchar temper[2];//存放溫度的數(shù)組 </

43、p><p>  /*****************************延時函數(shù)**************************/</p><p>  void delay (unsigned int us) </p><p><b>  {</b></p><p>  while(us--);</p>

44、<p><b>  }</b></p><p>  void reset(void) //復位</p><p><b>  {</b></p><p>  uchar x=0;</p><p><b>  DQ = 1;</b></p><

45、p>  delay(8); //稍做延時</p><p><b>  DQ = 0;</b></p><p>  delay(80); //精確延時 大于 480us</p><p>  DQ = 1; //拉高總線</p><p>  delay(14);</p><p>&l

46、t;b>  x=DQ;</b></p><p>  delay(20);</p><p><b>  }</b></p><p>  /**********************從DS18B20讀一字節(jié)***************/</p><p>  uchar readbyte(void) //

47、讀1字節(jié)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  uchar dat=0;</p><p>  for (i=8;i>0;i--)</p><p><b>  {</b></p><p&g

48、t;<b>  DQ = 0;</b></p><p><b>  dat>>=1;</b></p><p><b>  DQ = 1;</b></p><p><b>  if(DQ)</b></p><p>  dat|=0x80;<

49、/p><p><b>  delay(4);</b></p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  /***********************向DS18

50、B20寫一字節(jié)***********************/</p><p>  void writebyte(unsigned char dat) //寫1字節(jié)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  for (i=8; i>0; i--)</

51、p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p>  DQ = dat&0x01;</p><p><b>  delay(5);</b></p><p><b>  DQ = 1;&l

52、t;/b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p><b>  delay(4);</b></p><p><b>  }</b></p><p&g

53、t;  /***********************CPU讀取溫度值***************************/</p><p>  void readtemp(void) //讀取溫度</p><p><b>  {</b></p><p>  uchar a=0,b=0;</p><p><b&

54、gt;  reset();</b></p><p>  writebyte(0xCC); // 跳過序列號</p><p>  writebyte(0x44); // 啟動溫度轉換</p><p><b>  reset();</b></p><p>  writebyte(0xCC);</p>

55、<p>  writebyte(0xBE); //讀9個寄存器,前兩個為溫度</p><p>  a=readbyte(); //低位</p><p>  b=readbyte(); //高位</p><p>  temper[0]=a&0x0f;</p><p>  a=a>>4; /

56、/低位右移4位,舍棄小數(shù)部分</p><p>  temper[1]=b<<4; //高位左移4位,舍棄符號位</p><p>  temper[1]=temper[1]|a;</p><p><b>  }</b></p><p>  /***************************

57、***顯示+讀鍵*************************/</p><p>  void vLedKey_Scan()</p><p>  { unsigned char i,value; </p><p>  for(i=0;i<=3;i++)</p><p><b>  {</b></p&g

58、t;<p>  value =table[dispbuf[i]]; //取一行顯示數(shù)據(jù) </p><p><b>  if(i==0)</b></p><p>  value &= 0x7f;</p><p>  P0 = value;</p><p>  P2 = scan[i];//取row0-

59、-row7行掃描數(shù)據(jù)</p><p>  delay(100); //延時50us</p><p>  P2 = 0xff;//關顯示</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*******************

60、************主函數(shù)***********************/</p><p><b>  main()</b></p><p>  { uchar i;</p><p>  uchar temp;</p><p>  float backbit; </p><p>  for

61、(i=0;i<=3;i++)</p><p>  dispbuf[i] = 17;</p><p><b>  while(1){</b></p><p>  vLedKey_Scan(); //顯示,讀鍵掃描 </p><p>  readtemp();//讀18B20</p><p> 

62、 backbit = temper[0];//換成浮點數(shù)</p><p>  backbit = backbit * 6.25;//乘以0.0625*100</p><p>  temp = backbit;//取低2位整數(shù)部分</p><p>  dispbuf[3] = temp%10 ;</p><p>  temp = temp/10

63、;</p><p>  dispbuf[2] = temp%10 ;</p><p>  temp = temper[1];//取整數(shù)部分</p><p>  dispbuf[1] = temp%10;</p><p>  dispbuf[1]+=10;//給數(shù)碼管顯示第二位后面加小數(shù)點</p><p>  temp

64、 = temp/10;</p><p>  dispbuf[0]= temp%10;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /********************************結束**********************

溫馨提示

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

評論

0/150

提交評論