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

下載本文檔

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

文檔簡介

1、<p><b>  單片機(jī)課程設(shè)計(jì)</b></p><p>  課題:恒溫控制模擬設(shè)計(jì)</p><p>  系 別: </p><p>  專 業(yè): </p><p>  姓 名: </p><p>  學(xué) 號(hào): <

2、;/p><p>  2011年12月28日</p><p><b>  成績?cè)u(píng)定·</b></p><p>  一、指導(dǎo)教師評(píng)語(根據(jù)學(xué)生設(shè)計(jì)報(bào)告質(zhì)量、答辯情況及其平時(shí)表現(xiàn)綜合評(píng)定)。</p><p><b>  二、評(píng)分</b></p><p><b>  

3、課程設(shè)計(jì)成績?cè)u(píng)定</b></p><p><b>  設(shè)計(jì)目的</b></p><p>  1、使學(xué)生增進(jìn)對(duì)單片機(jī)的感性認(rèn)識(shí),加深對(duì)單片機(jī)理論方面的理解;</p><p>  2、使學(xué)生掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時(shí)器/計(jì)數(shù)器、中斷、片內(nèi)外存貯器、I/O口、A/D、D/A、串行口通訊等;</p><p&g

4、t;  3、使學(xué)生了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計(jì)過程、方法及實(shí)現(xiàn),為以后設(shè)計(jì)和實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)打下良好基礎(chǔ)。</p><p><b>  設(shè)計(jì)要求</b></p><p>  1、對(duì)一定范圍內(nèi)的溫度進(jìn)行控制,低于此范圍內(nèi)則加熱,高于此范圍則降溫;</p><p>  2、要求給出加熱、降溫信號(hào)。</p><p>

5、  3、擴(kuò)展功能:時(shí)間顯示</p><p><b>  總體設(shè)計(jì)</b></p><p><b>  各部分電路設(shè)計(jì)</b></p><p>  上圖為18B20的電路設(shè)計(jì)。</p><p>  上圖為LCD1602的電路設(shè)計(jì)。</p><p>  下圖為獨(dú)立按鍵的電路設(shè)計(jì):

6、</p><p>  上圖為單片機(jī)晶振的連接電路。</p><p><b>  整體電路圖</b></p><p><b>  六、設(shè)計(jì)總結(jié)</b></p><p>  設(shè)計(jì)過程中遇到的問題及解決方法</p><p><b>  遇到的問題:</b>&l

7、t;/p><p>  關(guān)于溫度顯示和溫度比較,由于定義了全局溫度中間變量temp,并將temp初始化為0,所以顯示溫度時(shí)由于temp被重新初始化,故顯示的溫度為0,且比較溫度時(shí)溫度與0度比較。</p><p><b>  解決方法:</b></p><p>  關(guān)于溫度顯示,在溫度被初始化為0之前,先將溫度顯示出來,然后初始化后讀取下一個(gè)溫度。&l

8、t;/p><p>  關(guān)于溫度比較,由于初始化后將設(shè)定溫度K與初始化的溫度0比較,故重新定義了一個(gè)局部變量J,將temp的值傳遞給J,使局部變量J與設(shè)定溫度K進(jìn)行比較,從而確定加熱或是降溫。</p><p><b>  設(shè)計(jì)體會(huì)</b></p><p>  通過單片機(jī)課程設(shè)計(jì),我更加深刻具體的認(rèn)識(shí)到了單片機(jī)的工作原理,工作狀態(tài),是我對(duì)單片機(jī)有了更加

9、深刻的認(rèn)識(shí)。通過課程設(shè)計(jì),我發(fā)現(xiàn)只學(xué)習(xí)書上的理論知識(shí),而不進(jìn)行具體實(shí)踐是難以真正了解一件事物的。實(shí)踐出真知。而且通過實(shí)踐可以發(fā)現(xiàn)理論正確的程序或硬件的一些小的bug,通過修改各種錯(cuò)誤和bug,使自己的軟硬件功底不斷提高,可以在未來的各種設(shè)計(jì)中,掌握更好的設(shè)計(jì)方法。</p><p><b>  對(duì)設(shè)計(jì)的建議</b></p><p>  課程設(shè)計(jì)提高了我們對(duì)單片機(jī)的具體認(rèn)

10、識(shí),加深了理解。課程設(shè)計(jì)對(duì)更好的學(xué)習(xí)課程有很大的幫助。</p><p><b>  參考文獻(xiàn)</b></p><p>  《單片機(jī)原理及應(yīng)用》 人民郵電出版社</p><p>  《8051單片機(jī)徹底研究》 中國電力出版社</p><p>  《51單片機(jī)應(yīng)用開發(fā)技術(shù)大全》 人民郵電出版社</p&g

11、t;<p>  《51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例精講》 電子工業(yè)出版社</p><p>  《51單片機(jī)及其C語言程序開發(fā)實(shí)例》 清華大學(xué)出版社</p><p><b>  附錄(程序):</b></p><p><b>  main.c:</b></p><p>  /*

12、******************************************************************</p><p><b>  智能溫控器</b></p><p>  P0 1602數(shù)據(jù)線; P1 按鍵; P2^0 溫度;RS = P2^5; </p><p>  RW = P2^6; EN = P

13、2^7; SPEAKER=P2^3;OUT=P2^2 </p><p>  ********************************************************************/</p><p>  #include<reg52.h></p><p>  #include<stdio.h></p

14、><p>  #include"18b20.h"</p><p>  #include"1602.h"</p><p>  #include"delay.h"</p><p>  #define uchar unsigned char </p><p>  sbi

15、t MENU=P1^0; //調(diào)整溫度、時(shí)間菜單</p><p>  sbit INC=P1^1; //增加鍵</p><p>  sbit DEC=P1^2; //減小鍵 </p><p>  sbit LOW=P2^3; //低溫加熱信

16、號(hào)</p><p>  sbit HIGH=P2^2;//高溫降溫信號(hào)</p><p>  char displaytemp[16]; //定義顯示區(qū)域臨時(shí)存儲(chǔ)數(shù)組</p><p>  unsigned int temp;//中間變量</p><p>  float tempera

17、ture;//顯示溫度</p><p>  int second=0; //定義并初始化時(shí)鐘變量</p><p>  int minute=0;</p><p>  int hour=12; </p><p>  uchar tt;//定時(shí)時(shí)間中間變量</p><p&

18、gt;  int temp1; //溫度顯示變量</p><p>  uchar set;//按鍵</p><p>  int K=12; //初始報(bào)警溫度</p><p>  bit ON_OFF=0;//報(bào)警啟動(dòng)</p><p>  bit ReadTempFlag

19、; //定義讀溫度標(biāo)志</p><p>  void keyscan(void);//鍵盤掃描</p><p>  void inc_key(void);//按鍵加法函數(shù)</p><p>  void dec_key(void);//按鍵減法函數(shù)</p><p>  /*************

20、****顯示函數(shù)********************/</p><p>  void display()</p><p><b>  {</b></p><p>  if(set!=0)</p><p>  LCD_Write_Com(0x0f);</p><p>  if(ON_

21、OFF==1)</p><p>  sprintf(displaytemp,"Time %02d:%02d:%02d ON",hour,minute,second); //顯示時(shí)間</p><p><b>  else</b></p><p>  sprintf(displaytemp,"Time %02d:%

22、02d:%02d OF",hour,minute,second); //顯示時(shí)間</p><p>  LCD_Write_String(0,0,displaytemp);//顯示第一行 </p><p>  switch(set) //LCD根據(jù)工作模式

23、顯示</p><p><b>  {</b></p><p>  case 0:LCD_Write_Com(0x0c); break; //調(diào)整模式顯示</p><p>  case 1:LCD_Write_Char(7,0,' '); break; //增加模式顯示</p>&l

24、t;p>  case 2: LCD_Write_Char(10,0,' '); break; //漸少模式顯示</p><p>  case 3:LCD_Write_Char(7,1,' '); break; //報(bào)警開啟/關(guān)閉</p><p>  default:break;</p><p><

25、;b>  }</b></p><p>  if(set!=0)</p><p>  LCD_Write_Com(0x10);</p><p><b>  }</b></p><p>  /**************鍵盤掃描子函數(shù)******************/</p><p&

26、gt;  void keyscan(void)</p><p><b>  {</b></p><p>  uchar xx; //局部變量</p><p><b>  P1=0xff;</b></p><p>  

27、if(P1!=0xff)</p><p><b>  {</b></p><p>  DelayMs(50);</p><p>  if(P1!=0xff)</p><p><b>  {</b></p><p><b>  xx=P1;</b><

28、;/p><p>  while(P1!=0xff);</p><p>  switch(xx) // 根據(jù)按鍵狀態(tài),調(diào)用不同的子函數(shù)</p><p><b>  {</b></p><p>  case 0xfe:set++;if(set>=4)set=0; break;

29、 </p><p>  case 0xfd:inc_key(); break; </p><p>  case 0xfb:dec_key(); break; </p><p>  case 0xf7:ON_OFF=!ON_OFF;

30、 break;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b&g

31、t;</p><p>  /****************按鍵加法子函數(shù)******************/</p><p>  void inc_key(void)</p><p><b>  {</b></p><p>  DelayMs(30);</p><p>  switch(s

32、et)</p><p><b>  {</b></p><p>  case 0:if(P1==0xf7)ON_OFF=!ON_OFF; break;</p><p>  case 1:hour++; if(hour>=24)hour=0; break;</p><p>  case 2:m

33、inute++; if(minute>=60)minute=0; break;</p><p>  case 3:K++;if(K>=100)K=0; break; </p><p>  default:break;</p><p><b>  }</b></p><p><b>  }

34、</b></p><p>  /****************按鍵減法子函數(shù)*****************/</p><p>  void dec_key(void)</p><p><b>  {</b></p><p>  DelayMs(30);</p><p>  sw

35、itch(set)</p><p><b>  {</b></p><p>  case 0:if(P1==0xf7)ON_OFF=!ON_OFF; break;</p><p>  case 1:hour--; if(hour<0)hour=23; break;</p><p>  ca

36、se 2:minute--;if(minute<0)minute=59; break;</p><p>  case 3:K--;if(K<=1)K=1; break; </p><p>  default:break;</p><p><b>  }</b></p><p><

37、b>  }</b></p><p>  /***************定時(shí)器t0初始化*******************/</p><p>  void Init_Timer0(void)</p><p><b>  {</b></p><p>  TMOD=0x01;

38、 //time0為定時(shí)器,方式1</p><p>  TH0=0x3c; //預(yù)置計(jì)數(shù)初值15536計(jì)時(shí) 50ms</p><p><b>  TL0=0xb0;</b></p><p>  EA=1; </p&g

39、t;<p>  ET0=1; </p><p>  TR0=1; </p><p><b>  }</b></p><p>  /***********定時(shí)器t0中斷子函數(shù)**************/</p><p>  void timer0

40、(void) interrupt 1 using 0 //定時(shí)器0方式1,50ms中斷一次</p><p><b>  {</b></p><p><b>  tt++;</b></p><p><b>  TH0=0x3c;</b></p><p><

41、b>  TL0=0xb0;</b></p><p>  if(tt==20)</p><p><b>  {</b></p><p><b>  tt=0;</b></p><p>  ReadTempFlag=1;</p><p>  second++;

42、</p><p>  if(second>=60) {minute++;second=0;}</p><p>  if(minute>=60) {hour++;minute=0;}</p><p>  if(hour>=24) hour=0; </p><p><b>  } </b>&

43、lt;/p><p>  keyscan(); //按鍵掃描</p><p><b>  }</b></p><p>  /***********the main funtion*************/ </p><p>  void main(void)&

44、lt;/p><p><b>  { </b></p><p>  int J;//溫度局部變量</p><p>  uchar x=0;</p><p>  P1=0xff; //初始化p1口</p><p><b>

45、  HIGH=1;</b></p><p>  LOW=1; </p><p>  LCD_Init(); //初始化液晶</p><p>  DelayMs(20); </p><p>  LCD_Clear(); //清屏</p><p

46、>  Init_Timer0(); //時(shí)鐘定時(shí)器0初始化 </p><p><b>  while (1)</b></p><p>  { </p><p>  if( ReadTempFlag==1)</p><p><

47、;b>  {</b></p><p>  ReadTempFlag=0; //溫度標(biāo)志位</p><p>  temp=ReadTemperature();</p><p>  temperature=(float)temp*0.0625;

48、 //溫度采集</p><p>  temp1=(int)temperature; </p><p><b>  J=temp1;</b></p><p>  sprintf(displaytemp,"Temp %02dC%7.2fC",K,temperature);

49、//顯示溫度值</p><p>  LCD_Write_String(0,1,displaytemp); </p><p><b>  }</b></p><p>  temp1=(int)temperature; </p><p>  display(); <

50、;/p><p>  keyscan(); </p><p>  if(ON_OFF==1) //若溫控標(biāo)志位1, 控制LAMP動(dòng)作</p><p><b>  {</b></p><p>  if(J>K) {HIGH=0;LOW=1;}</p>

51、<p>  else if(J<K-1) {LOW=0;HIGH=1;}</p><p>  else {HIGH=1;LOW=1;}</p><p><b>  }</b></p><p>  else{HIGH=1;LOW=1;}</p><p><b>  

52、}</b></p><p><b>  }</b></p><p><b>  1602.H:</b></p><p>  #include<reg52.h> </p><p>  #include<intrins.h></p><p>

53、  #ifndef __1602_H__</p><p>  #define __1602_H__</p><p>  bit LCD_Check_Busy(void);</p><p>  void LCD_Write_Com(unsigned char com);</p><p>  void LCD_Write_Data(unsigne

54、d char Data);</p><p>  void LCD_Clear(void);</p><p>  void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);</p><p>  void LCD_Write_Char(unsigned char x,unsigned

55、char y,unsigned char Data);</p><p>  void LCD_Init(void);</p><p>  void Lcd_User_Chr(void); </p><p><b>  #endif</b></p><p><b>  1602.C</b><

56、/p><p>  #include "1602.h"</p><p>  #include "delay.h"</p><p>  #define CHECK_BUSY</p><p>  sbit RS = P2^7; //定義端口 </p><p>  sbit RW = P

57、2^6;</p><p>  sbit EN = P2^5;</p><p>  #define RS_CLR RS=0 </p><p>  #define RS_SET RS=1</p><p>  #define RW_CLR RW=0 </p><p>  #define RW_SET RW=1 </p&

58、gt;<p>  #define EN_CLR EN=0</p><p>  #define EN_SET EN=1</p><p>  #define DataPort P0</p><p>  /*------------------------------------------------</p><p><b&g

59、t;  判忙函數(shù)</b></p><p>  ------------------------------------------------*/</p><p>  bit LCD_Check_Busy(void) </p><p><b>  { </b></p><p>  #ifdef CHECK_B

60、USY</p><p>  DataPort= 0xFF; </p><p><b>  RS_CLR; </b></p><p><b>  RW_SET; </b></p><p><b>  EN_CLR; </b></p><p><b&g

61、t;  _nop_(); </b></p><p><b>  EN_SET;</b></p><p>  return (bit)(DataPort & 0x80);</p><p><b>  #else</b></p><p><b>  return 0;<

62、;/b></p><p><b>  #endif</b></p><p><b>  }</b></p><p>  /*------------------------------------------------</p><p><b>  寫入命令函數(shù)</b>&

63、lt;/p><p>  ----------------- ----------------------------*/</p><p>  void LCD_Write_Com(unsigned char com) </p><p><b>  { </b></p><p>  while(LCD_Check_Bus

64、y()); //忙則等待</p><p><b>  RS_CLR; </b></p><p><b>  RW_CLR; </b></p><p><b>  EN_SET; </b></p><p>  DataPort= com; </p><p>

65、;<b>  _nop_(); </b></p><p><b>  EN_CLR;</b></p><p><b>  }</b></p><p>  /*------------------------------------------------</p><p><

66、;b>  寫入數(shù)據(jù)函數(shù)</b></p><p>  ------------------------------------------------*/</p><p>  void LCD_Write_Data(unsigned char Data) </p><p><b>  { </b></p><

67、p>  while(LCD_Check_Busy()); //忙則等待</p><p><b>  RS_SET; </b></p><p><b>  RW_CLR; </b></p><p><b>  EN_SET; </b></p><p>  DataPort=

68、 Data; </p><p><b>  _nop_();</b></p><p><b>  EN_CLR;</b></p><p><b>  }</b></p><p>  /*----------------------------------------------

69、--</p><p><b>  清屏函數(shù)</b></p><p>  ------------------------------------------------*/</p><p>  void LCD_Clear(void) </p><p><b>  { </b></p>

70、<p>  LCD_Write_Com(0x01); </p><p>  DelayMs(5);</p><p><b>  }</b></p><p>  /*------------------------------------------------</p><p><b>  寫入字符串

71、函數(shù)</b></p><p>  ------------------------------------------------*/</p><p>  void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) </p><p><b>  { &l

72、t;/b></p><p>  if (y == 0) </p><p><b>  { </b></p><p>  LCD_Write_Com(0x80 + x); //表示第一行</p><p><b>  }</b></p><p><b&

73、gt;  else </b></p><p><b>  { </b></p><p>  LCD_Write_Com(0xC0 + x); //表示第二行</p><p><b>  } </b></p><p>  while (*s) </p

74、><p><b>  { </b></p><p>  LCD_Write_Data( *s); </p><p>  s ++; </p><p><b>  }</b></p><p><b>  }</b></p>

75、<p>  /*------------------------------------------------</p><p><b>  寫入字符函數(shù)</b></p><p>  ------------------------------------------------*/</p><p>  void LCD_Write

76、_Char(unsigned char x,unsigned char y,unsigned char Data) </p><p><b>  { </b></p><p>  if (y == 0) </p><p><b>  { </b></p><p>  LCD_Writ

77、e_Com(0x80 + x); </p><p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  LCD_Write_Com(0xC0 + x); </

78、p><p><b>  } </b></p><p>  LCD_Write_Data( Data); </p><p><b>  }</b></p><p>  /*------------------------------------------------</p>

79、<p><b>  初始化函數(shù)</b></p><p>  ------------------------------------------------*/</p><p>  void LCD_Init(void) </p><p><b>  {</b></p><p>  LC

80、D_Write_Com(0x38); /*顯示模式設(shè)置*/ </p><p>  DelayMs(5); </p><p>  LCD_Write_Com(0x38); </p><p>  DelayMs(5); </p><p>  LCD_Write_Com(0x38); </p><p>  DelayM

81、s(5); </p><p>  LCD_Write_Com(0x38); </p><p>  LCD_Write_Com(0x08); /*顯示關(guān)閉*/ </p><p>  LCD_Write_Com(0x01); /*顯示清屏*/ </p><p>  LCD_Write_Com(0x06); /*顯示光標(biāo)移動(dòng)設(shè)置

82、*/ </p><p>  DelayMs(5); </p><p>  LCD_Write_Com(0x0C); /*顯示開及光標(biāo)設(shè)置*/</p><p><b>  }</b></p><p><b>  delay.H:</b></p><p>  #ifndef

83、 __DELAY_H__</p><p>  #define __DELAY_H__</p><p>  /*------------------------------------------------</p><p>  uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值</p><p>  unsigned char

84、 是定義無符號(hào)字符變量,其值的范圍是</p><p>  0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)</p><p>  長度如下 T=tx2+5 uS </p><p>  ------------------------------------------------*/</p><p>  void DelayUs2x

85、(unsigned char t);</p><p>  /*------------------------------------------------</p><p>  mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值</p><p>  unsigned char 是定義無符號(hào)字符變量,其值的范圍是</p><p&

86、gt;  0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編</p><p>  ------------------------------------------------*/</p><p>  void DelayMs(unsigned char t);</p><p><b>  #endif</b></p><

87、p><b>  delay.C:</b></p><p>  #include "delay.h"</p><p>  /*------------------------------------------------</p><p><b>  大致延時(shí)</b></p><

88、p>  T=tx2+5 uS </p><p>  ------------------------------------------------*/</p><p>  void DelayUs2x(unsigned char t)</p><p><b>  { </b></p><p>  while(

89、--t);</p><p><b>  }</b></p><p>  /*------------------------------------------------</p><p>  mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值</p><p>  -------------------

90、-----------------------------*/</p><p>  void DelayMs(unsigned char t)</p><p><b>  { </b></p><p>  while(t--)</p><p><b>  {</b></p>&l

91、t;p><b>  //大致延時(shí)1mS</b></p><p>  DelayUs2x(245);</p><p>  DelayUs2x(245);</p><p><b>  }</b></p><p><b>  }</b></p><p>

92、<b>  18b20.H:</b></p><p>  #ifndef __DS18B20_H__</p><p>  #define __DS18B20_H__</p><p>  #include<reg52.h> </p><p>  #include<intrins.h></

93、p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int;</p><p>  /*------------------------------------------------</p><p><b>  端口定義</b></

94、p><p>  ------------------------------------------------*/</p><p>  sbit DQ=P2^0;//ds18b20 端口</p><p>  /*------------------------------------------------</p><p><b> 

95、 函數(shù)聲明</b></p><p>  ------------------------------------------------*/</p><p>  unsigned int ReadTemperature(void);</p><p>  bit Init_DS18B20(void);</p><p>  unsig

96、ned char ReadOneChar(void);</p><p>  void WriteOneChar(unsigned char dat);</p><p><b>  #endif</b></p><p><b>  18b20.C:</b></p><p>  /*----------

97、-------------------------------------</p><p>  名稱:18B20溫度傳感器</p><p>  ------------------------------------------------*/</p><p>  #include"delay.h"</p><p>  #

98、include"18b20.h"</p><p>  /*------------------------------------------------</p><p><b>  18b20初始化</b></p><p>  ------------------------------------------------

99、*/</p><p>  bit Init_DS18B20(void)</p><p><b>  {</b></p><p>  bit dat=0;</p><p>  DQ = 1; //DQ復(fù)位</p><p>  DelayUs2x(5); //稍做延時(shí)</p>

100、<p>  DQ = 0; //單片機(jī)將DQ拉低</p><p>  DelayUs2x(200); //精確延時(shí) 大于 480us 小于960us</p><p>  DelayUs2x(200);</p><p>  DQ = 1; //拉高總線</p><p>  DelayUs2x(50); /

101、/15~60us 后 接收60-240us的存在脈沖</p><p>  dat=DQ; //如果x=0則初始化成功, x=1則初始化失敗</p><p>  DelayUs2x(25); //稍作延時(shí)返回</p><p>  return dat;</p><p><b>  }</b></p>

102、;<p>  /*------------------------------------------------</p><p><b>  讀取一個(gè)字節(jié)</b></p><p>  ------------------------------------------------*/</p><p>  unsigned cha

103、r ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8;i>0;i--)</p><p><b>

104、;  {</b></p><p>  DQ = 0; // 給脈沖信號(hào)</p><p><b>  dat>>=1;</b></p><p>  DQ = 1; // 給脈沖信號(hào)</p><p><b>  if(DQ)</b></p><p>  d

105、at|=0x80;</p><p>  DelayUs2x(25);</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  /*----------------------------

106、--------------------</p><p><b>  寫入一個(gè)字節(jié)</b></p><p>  ------------------------------------------------*/</p><p>  void WriteOneChar(unsigned char dat)</p><p>

107、;<b>  {</b></p><p>  unsigned char i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p&g

108、t;  DQ = dat&0x01;</p><p>  DelayUs2x(25);</p><p><b>  DQ = 1;</b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p>&

109、lt;p>  DelayUs2x(25);</p><p><b>  }</b></p><p>  /*------------------------------------------------</p><p><b>  讀取溫度</b></p><p>  -----------

110、-------------------------------------*/</p><p>  unsigned int ReadTemperature(void)</p><p><b>  {</b></p><p>  unsigned char a=0;</p><p>  unsigned int b=0;

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

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

113、t;<p>  b=ReadOneChar(); //高位</p><p><b>  b<<=8;</b></p><p><b>  t=a+b;</b></p><p>  return(t);</p><p><b>  }</b><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論