2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩15頁(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>  專(zhuān) 業(yè):電氣工程及其自動(dòng)化</p><p>  班 級(jí): 電氣1001班 </p><p>  姓 名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師:

2、 </p><p>  2013 年 3 月 7 日</p><p> 評(píng)語(yǔ):</p><p> 考勤(10)守紀(jì)(10)過(guò)程(40)設(shè)計(jì)報(bào)告(30)答辯(10)總成績(jī)(100)</p><p><b>  摘 要</b></p><p>  本文將介紹一種基于單片機(jī)控制的數(shù)字溫度計(jì)。

3、在硬件方面介紹單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì), 對(duì)硬件原理圖做簡(jiǎn)潔的描述。系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序。軟硬件分別調(diào)試完成以后,將程序下載入單片機(jī)中,電路板接上電源,電源指示燈亮,按下開(kāi)關(guān)按鈕,數(shù)碼管顯示當(dāng)前溫度。由于采用了智能溫度傳感器DS18B20,所以本文所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比它的轉(zhuǎn)換速率極快,進(jìn)行讀、寫(xiě)操作非常簡(jiǎn)便。它具有數(shù)字化輸出,可測(cè)量遠(yuǎn)距離的點(diǎn)溫度。

4、系統(tǒng)具有微型化、微功耗、測(cè)量精度高、功能強(qiáng)大等特點(diǎn),加之DS18B20內(nèi)部的差錯(cuò)檢驗(yàn),所以它的抗干擾能力強(qiáng),性能可靠,結(jié)構(gòu)簡(jiǎn)單。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī),數(shù)字控制,溫度計(jì),DS18B20</p><p><b>  Abstract</b></p><p>  This article introduces a microcompu

5、ter-based control of digital thermometers from the hardware description Temperature Control system design, hardware schematics and concise description. System program includes the main program, subroutine read temperatur

6、e, the temperature conversion command subroutine, subroutines calculate the temperature, display data refresh routines. Debugging of hardware and software were completed, the program downloaded into the MCU, the circuit

7、board connected to the p</p><p>  Key words: Single-chip microcomputer, digital control, thermometer, DS18B20</p><p><b>  1 引言</b></p><p><b>  1.1 目的設(shè)計(jì)</b>&l

8、t;/p><p>  通過(guò)本次設(shè)計(jì),熟悉單片機(jī)AT89C51和傳感器DS18B20的應(yīng)用,及單片機(jī)與外圍電路的接法,加深對(duì)單片機(jī)以及傳感器的認(rèn)識(shí),了解單片機(jī)在日常生活中的應(yīng)用及其重要性。同時(shí),通過(guò)查找資料,設(shè)計(jì)電路,使本次設(shè)計(jì)的數(shù)字溫度計(jì)具有結(jié)構(gòu)簡(jiǎn)單、成本低廉、精確度高、反應(yīng)速度快、數(shù)字化顯示和不易損壞等特點(diǎn)。</p><p><b>  1.2 設(shè)計(jì)要求</b><

9、/p><p>  本設(shè)計(jì)主要是應(yīng)用51系列單片機(jī)設(shè)計(jì)一個(gè)數(shù)字溫度計(jì),該數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于要求測(cè)溫比較準(zhǔn)確的場(chǎng)所或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)AT89C51,測(cè)溫傳感器使用DS18B20,其主要功能有: </p><p>  (1) 數(shù)字溫度計(jì)測(cè)溫范圍:0~99℃;<

10、;/p><p>  (2) 可以實(shí)現(xiàn)四位溫度顯示,溫度值精確到小數(shù)點(diǎn)后一位;</p><p>  (3) 測(cè)溫誤差在正負(fù)0.5℃以內(nèi)。</p><p><b>  1.3 設(shè)計(jì)方法</b></p><p>  采用智能溫度傳感器DS18B20作為檢測(cè)元件,測(cè)溫范圍為-55~125℃,最高分辨率可達(dá)0.0625℃,DS18B2

11、0可以直接讀出被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。</p><p><b>  2 總體設(shè)計(jì)方案</b></p><p>  按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由3個(gè)模塊組成:主控制器、測(cè)溫電路、顯示電路。數(shù)字溫度計(jì)總體電路結(jié)構(gòu)框圖如圖2-1所示。</p><p><b>  圖2-1 原理圖</b></p>

12、;<p><b>  3 硬件設(shè)計(jì)</b></p><p>  3.1 系統(tǒng)芯片的選擇</p><p>  AT89C51作為溫度測(cè)試系統(tǒng)設(shè)計(jì)的核心器件。該器件是INTEL公司生產(chǎn)的MCS一5l系列單片機(jī)中的基礎(chǔ)產(chǎn)品,采用了可靠的CMOS工藝制造技術(shù),具有高性能的8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS—51的CMOS產(chǎn)品。不僅結(jié)合了HMOS的高速和高密度技術(shù)及CH

13、MOS的低功耗特征,而且繼承和擴(kuò)展了MCS—48單片機(jī)的體系結(jié)構(gòu)和指令系統(tǒng)。單片機(jī)小系統(tǒng)的電路圖如圖3-1所示。以AT89C51單片機(jī)為核心,選用12M的晶振,這是最常用的選擇,外接電容沒(méi)有特別的要求,但是外接電容的大小會(huì)影響振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性,因此我們選用30pf的電容作為起振電容。復(fù)位電路為按鍵低電平復(fù)位,當(dāng)按鍵按下,RET端為高電平,當(dāng)高電平持續(xù)4us的時(shí)間就可以使單片機(jī)復(fù)位。這里尤其要注意的是晶振和電

14、容的位置,它們距離單片機(jī)引腳越短越好,因?yàn)樘L(zhǎng)可能無(wú)法使單片機(jī)起振。</p><p><b>  3.2 顯示模塊</b></p><p>  1602液晶屏顯示清晰且不會(huì)閃爍,在需要時(shí)還可以輸出字符等內(nèi)容,由于液晶屏是數(shù)字式的,因此和單片機(jī)系統(tǒng)的接口簡(jiǎn)單,操作方便。1602LCD液晶顯示屏的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC 上,因而耗電量比其他顯示器要少得多,功

15、耗較低。由于其內(nèi)部集成有顯示芯片,程序編寫(xiě)簡(jiǎn)單,適用于多方面的應(yīng)用。如圖3-2所示。</p><p>  3.3 溫度檢測(cè)模塊</p><p>  DS18B20數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。它在實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)

16、測(cè)溫。如圖3-3所示。</p><p>  圖3-1 單片機(jī)小系統(tǒng)的電路圖</p><p><b>  圖3-2 顯示模塊</b></p><p>  圖3-3 DS18B20數(shù)字溫度傳感器</p><p><b>  4 軟件設(shè)計(jì)</b></p><p>  數(shù)字溫度計(jì)主要

17、是測(cè)溫電路模擬環(huán)境溫度,然后送于單片機(jī),由單片機(jī)處理后送液晶顯示器顯示溫度。整體原理流程圖如圖4-1所示。DSl8820的主要數(shù)據(jù)元件有:64位激光Lasered ROM,溫度靈敏元件和非易失性溫度告警觸發(fā)器TH和TL。DSBl820可以從單總線獲取電源,當(dāng)信號(hào)線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號(hào)線為低電平時(shí),將該電源斷開(kāi),直到信號(hào)線變?yōu)楦唠娖街匦陆由霞纳?電容)電源為止。此外,還可外接5 V電源,給DSl8820供電。DS

18、l8820的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。圖4-2為讀取數(shù)據(jù)流程圖。</p><p>  5 系統(tǒng)仿真及其調(diào)試</p><p>  由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對(duì)DS18B20進(jìn)行讀/寫(xiě)編程時(shí),必須嚴(yán)格的保證讀/寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)量結(jié)果。本程序采用單片機(jī)C語(yǔ)言編寫(xiě),用Keil C編譯器編程調(diào)試。</p><p>

19、  軟件調(diào)試到數(shù)碼管能顯示溫度值,而且在有溫度變化時(shí)(例如改變傳感器的溫度值)顯示溫度能改變。用Proteus軟件連接電路圖,然后將程序?qū)隤roteus中,最后開(kāi)始仿真。結(jié)果如圖5-1所示。</p><p><b>  6 總結(jié)</b></p><p>  作為一名大三學(xué)生,我覺(jué)得做單片機(jī)課程設(shè)計(jì)是很有意義的,而且也是必要的。在做這次課程設(shè)計(jì)的過(guò)程中,我感觸最深的當(dāng)

20、屬查閱大量的設(shè)計(jì)資料了。為了讓自己的設(shè)計(jì)更加完善,查閱這方面的實(shí)際資料是十分必要的,也是必不可少的。其次,在這次課程設(shè)計(jì)中,我們運(yùn)用了以前學(xué)過(guò)的專(zhuān)業(yè)課知識(shí),如:proteus仿真、匯編語(yǔ)言、模擬和數(shù)字電路知識(shí)等。雖然過(guò)去我從未獨(dú)立應(yīng)用過(guò)他們,但在學(xué)習(xí)的過(guò)程中帶著問(wèn)題去學(xué)我發(fā)現(xiàn)效率很高,這是我做這次課程設(shè)計(jì)的又一收獲。在這次的課程設(shè)計(jì)中,我真正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單片機(jī)更是如此,

21、程序只有在經(jīng)常寫(xiě)與讀的過(guò)程中才能提高,這就是這次課程設(shè)計(jì)的最大收獲。</p><p>  圖4-1 主程序流程圖</p><p>  圖4-2 溫度傳感器數(shù)據(jù)讀取流程圖</p><p>  圖5-1 仿真電路圖</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 余永全.單片

22、機(jī)在控制系統(tǒng)中的應(yīng)用.北京:電子工業(yè)出版社,2003.</p><p>  [2] 李朝青.單片機(jī)原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,1994.</p><p>  [3] 李華.MCS-51系統(tǒng)單片機(jī)實(shí)用接口技術(shù).北京:北京航空航天大學(xué)出版社,1993.</p><p><b>  附 錄</b></p><

23、p><b>  程序</b></p><p>  #include<reg52.h> //頭文件</p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  sbit rs=P2^0;<

24、/p><p>  sbit lcden=P2^1; //液晶使能端</p><p>  sbit DATA = P3^7; //DS18B20接入口</p><p>  uchar FLAG_DIS=0;</p><p>  uchar bai_18b20,shi_18b20,ge_18b20,num; //定義變量</p>

25、<p>  bit flag_Negative_number ;//負(fù)數(shù)標(biāo)志</p><p>  uchar code table[]={"tempreture:"} ; //提示語(yǔ)</p><p>  /*****一毫秒定時(shí)*****/</p><p>  void delay_ms(uint z)</p><p

26、><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p>&

27、lt;p><b>  /*延時(shí)子函數(shù)*/</b></p><p>  void delay(uint num)</p><p><b>  {</b></p><p>  while(num--) ;</p><p><b>  }</b></p><

28、p><b>  /*液晶寫(xiě)命令*/</b></p><p>  void write_lcd_com(uchar com)</p><p><b>  {</b></p><p><b>  rs=0;</b></p><p><b>  lcden=0;<

29、;/b></p><p><b>  P0=com;</b></p><p>  delay_ms(1);</p><p><b>  lcden=1;</b></p><p>  delay_ms(1);</p><p><b>  lcden=0;<

30、;/b></p><p><b>  }</b></p><p><b>  /*液晶寫(xiě)數(shù)據(jù)*/</b></p><p>  void write_lcd_date(uchar date)</p><p><b>  {</b></p><p>&

31、lt;b>  rs=1;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=date;</b></p><p>  delay_ms(1);</p><p><b>  lcden=1;</b></p>

32、<p>  delay_ms(1);</p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  /*液晶初始化程序*/</p><p>  void lcd_init()</p><p><b>

33、;  {</b></p><p>  write_lcd_com(0x38);</p><p>  write_lcd_com(0x0c);</p><p>  write_lcd_com(0x06);</p><p>  write_lcd_com(0x01);</p><p><b>  }&

34、lt;/b></p><p>  /*************DS18b20溫度傳感器函數(shù)*********************/</p><p>  void Init_DS18B20(void) //傳感器初始化</p><p><b>  {</b></p><p>  uchar x=0;<

35、;/p><p>  DATA = 1; //DQ復(fù)位</p><p>  delay(10); //稍做延時(shí)</p><p>  DATA = 0; //單片機(jī)將DQ拉低</p><p>  delay(80); //精確延時(shí) 大于 480us //450</p><p>  DATA = 1;

36、 //拉高總線</p><p>  delay(20);</p><p>  x=DATA; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗</p><p>  delay(30);</p><p><b>  }</b></p><p>  /*溫度傳感器讀一個(gè)字節(jié)*/

37、</p><p>  ReadOneChar(void)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  uchar dat = 0;</p><p>  for (i=8;i>0;i--)</p><p><

38、;b>  {</b></p><p>  DATA = 0; // 給脈沖信號(hào)</p><p><b>  dat>>=1;</b></p><p>  DATA = 1; // 給脈沖信號(hào)</p><p><b>  if(DATA)</b></p>&

39、lt;p>  dat|=0x80;</p><p><b>  delay(8);</b></p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  /*溫度傳

40、感器寫(xiě)一個(gè)字節(jié)*/</p><p>  void WriteOneChar(uchar dat)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  {</b

41、></p><p><b>  DATA = 0;</b></p><p>  DATA = dat&0x01;</p><p>  delay(10);</p><p><b>  DATA = 1;</b></p><p><b>  dat>

42、;>=1;</b></p><p><b>  }</b></p><p><b>  delay(8);</b></p><p><b>  }</b></p><p>  /*讀取溫度傳感器溫度*/</p><p>  int Re

43、adTemperature(void)</p><p><b>  {</b></p><p>  uchar a=0;</p><p>  uchar b=0;</p><p><b>  int t=0;</b></p><p>  float tt=0;</p&g

44、t;<p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作</p><p>  WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); //跳

45、過(guò)讀序號(hào)列號(hào)的操作</p><p>  WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器)前兩個(gè)就是溫度</p><p>  a=ReadOneChar();//低位</p><p>  b=ReadOneChar();//高位</p><p><b>  t=b;</b></p>

46、;<p><b>  t<<=8;</b></p><p><b>  t=t|a;</b></p><p>  if(b&0x80) </p><p><b>  {</b></p><p><b>  t=~t+1;</b&

47、gt;</p><p>  flag_Negative_number = 1;</p><p><b>  }</b></p><p>  else { flag_Negative_number = 0; }</p><p>  tt=t*0.0625;</p><p>  t= tt*10+0.

48、5; </p><p>  return(t);</p><p><b>  }</b></p><p>  /*液晶顯示溫度*/</p><p>  void dis_D18B20(void)</p><p><b>  {</b></p><p>

49、  int temp;</p><p>  temp=ReadTemperature();//讀溫度</p><p>  bai_18b20=temp%1000/100;//顯示百位</p><p>  shi_18b20=temp%100/10;//顯示十位</p><p>  ge_18b20=temp%10;//顯示個(gè)分位</p

50、><p>  if(flag_Negative_number) //負(fù)數(shù)</p><p><b>  {</b></p><p>  if(bai_18b20==0) //十位為0,則不顯示十位</p><p><b>  {</b></p><p>  write_

51、lcd_com(0x80+0x40);</p><p>  write_lcd_date(0x2D);</p><p>  write_lcd_date(0x30+shi_18b20);</p><p>  write_lcd_date(0x30+ge_18b20);</p><p>  write_lcd_date(0xDF);</p

52、><p>  write_lcd_date(0x43);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  write_lcd_com(0x80+0x40);&l

53、t;/p><p>  write_lcd_date(0x2D);</p><p>  write_lcd_date(0x30+bai_18b20);</p><p>  write_lcd_date(0x30+shi_18b20);</p><p>  write_lcd_date(0xDF);</p><p>  wri

54、te_lcd_date(0x43);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else //正數(shù)</p><p><b>  {</b></p><p>  if(bai_18b20

55、==0) //十位為0,則不顯示十位</p><p><b>  {</b></p><p>  write_lcd_com(0x80+0x40);</p><p>  write_lcd_date(0x30+shi_18b20);</p><p>  write_lcd_date(0x2E);</p>

56、;<p>  write_lcd_date(0x30+ge_18b20);</p><p>  write_lcd_date(0xDF);</p><p>  write_lcd_date(0x43);</p><p><b>  }</b></p><p><b>  else</b>

57、;</p><p><b>  {</b></p><p>  write_lcd_com(0x80+0x40);</p><p>  write_lcd_date(0x30+bai_18b20);</p><p>  write_lcd_date(0x30+shi_18b20);</p><p>

58、;  write_lcd_date(0x2E);</p><p>  write_lcd_date(0x30+ge_18b20);</p><p>  write_lcd_date(0xDF);</p><p>  write_lcd_date(0x43);</p><p><b>  }</b></p>

59、<p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  lcd_init();</p><p>  TMOD=0x01;&l

60、t;/p><p>  TH0=(65536-50000)/256; </p><p>  TL0=(65536-50000)%256; </p><p><b>  TR0=1;</b></p><p><b>  ET0=1; </b></p><p>  EA=1;

61、//開(kāi)總中斷</p><p>  write_lcd_com(0x80);</p><p>  for(num=0;num<11;num++)</p><p><b>  {</b></p><p>  write_lcd_date(table[num]);</p><p>  //de

62、lay_ms(10);</p><p><b>  }</b></p><p>  //dis_D18B20();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(FLAG_DI

63、S==1)</p><p><b>  {</b></p><p>  FLAG_DIS=0;</p><p>  dis_D18B20(); //讀溫度并顯示</p><p><b>  }</b></p><p><b>  }</b></p&

64、gt;<p><b>  }</b></p><p>  timer0() interrupt 1 // </p><p><b>  {</b></p><p>  uchar count; </p><p>  TH0=(65536-50000)/256; </p>

65、<p>  TL0=(65536-50000)%256;</p><p><b>  count++;</b></p><p>  if(count==60)//每三秒鐘讀一次溫度傳感器溫度</p><p><b>  {</b></p><p>  FLAG_DIS=1;</p&g

溫馨提示

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