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

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計</p><p><b>  單片機(jī)系統(tǒng)設(shè)計</b></p><p>  班 級 </p><p>  姓 名 </p><p>  學(xué) 號 </p><p

2、>  指導(dǎo)教師 </p><p>  二○ 一四 年 十一 月 日</p><p>  課題名稱_______溫度測試系統(tǒng)設(shè)計_______</p><p>  題目的目的和要求: </p><p>  利用溫度傳感器和MSP430單片機(jī)設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進(jìn)制)在LED上顯示出來,

3、并定義一個保持按鍵,當(dāng)按下該鍵時,將當(dāng)前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。</p><p><b>  設(shè)計進(jìn)度及完成情況</b></p><p><b>  主要參考文獻(xiàn)及資料</b></p><p>  MSP430系列16位低功耗單片機(jī)原理及應(yīng)用</p><

4、p>  DS18B20溫度傳感器的使用</p><p><b>  智能儀器原理及應(yīng)用</b></p><p><b>  目錄</b></p><p>  I、題目的目的和要求:2</p><p>  II、設(shè)計進(jìn)度及完成情況2</p><p>  III、

5、主要參考文獻(xiàn)及資料3</p><p>  Ⅵ、 成績評定:3</p><p><b>  目錄4</b></p><p>  本次課程設(shè)計的目的和意義5</p><p><b>  設(shè)計題目6</b></p><p>  系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)

6、7</p><p>  總體設(shè)計方案、工作和組成原理8</p><p><b>  系統(tǒng)設(shè)計11</b></p><p><b>  設(shè)計總結(jié)26</b></p><p>  作品的使用或操作說明27</p><p>  設(shè)計圖紙或圖表28</p>&

7、lt;p>  本次課程設(shè)計的目的和意義</p><p>  課程設(shè)計是讓我熟練掌握了課本上的一些理論知識,課程設(shè)計也是一個學(xué)習(xí)新知識、鞏固加深所學(xué)課本理論知識的過程,它培養(yǎng)了我們綜合運(yùn)用知識的能力,獨(dú)立思考和解決問題的能力。</p><p>  加深我們對單片機(jī)原理與應(yīng)用課程的理解設(shè)計題目</p><p><b>  溫度測試系統(tǒng)設(shè)計:</b&

8、gt;</p><p>  利用溫度傳感器DS18B20和MSP430單片機(jī)設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進(jìn)制)在LED上顯示出來,并定義一個保持按鍵,當(dāng)按下該鍵時,將當(dāng)前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。</p><p>  系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)</p><p>  系統(tǒng)的主要功能是單片機(jī)實(shí)時從溫度

9、傳感器讀取溫度數(shù)據(jù)信息,并在數(shù)碼管顯示,同時掃描是否有保持按鍵按下,如果按下則不再繼續(xù)從溫度傳感器讀取溫度數(shù)據(jù)信息,保持溫度值不變。</p><p>  作用是可以實(shí)時讀取環(huán)境中的溫度信息,供用戶查看,同時當(dāng)用戶需要觀察某溫度時,可以按下按鍵保持溫度不變。</p><p><b>  主要技術(shù)指標(biāo):</b></p><p>  1. 基本范圍0

10、℃-99℃</p><p>  2. 精度誤差小于0.5℃</p><p>  3. LED數(shù)碼直讀顯示</p><p>  4. 掃描按鍵保持?jǐn)?shù)值</p><p>  總體設(shè)計方案、工作和組成原理</p><p>  數(shù)字溫度計設(shè)計方案論證方案一 由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫

11、效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二 進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計要求。從以上兩種方案,很容易看出,采用方案

12、二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。</p><p><b>  主控制器</b></p><p>  單片機(jī)采用MSP430單片機(jī),處理能力強(qiáng),功耗低,實(shí)現(xiàn)該功能僅需一個按鍵,8位數(shù)碼管顯示,以及DS18B20溫度傳感器。</p><p>  顯示電路: 顯示電路采用8位共陰LED數(shù)碼管,從P4口輸出段碼。</

13、p><p><b>  圖一總體設(shè)計框圖</b></p><p>  溫度傳感器: DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下: ●獨(dú)特的單線接口僅需要一個端口引腳進(jìn)

14、行通信; ●多個DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能; ●無須外部器件; ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V; ●零待機(jī)功耗; ●溫度以9或12位數(shù)字; ●用戶可定義報警設(shè)置; ●報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件; ●負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20內(nèi)部結(jié)

15、構(gòu)框圖如圖2所示。64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個DS18B20可以采用一線進(jìn)行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B2</p><p>  溫度傳感器連接如下圖所示,DQ引腳與單片機(jī)的P5.3相連:</p><p><b>  系統(tǒng)設(shè)計<

16、/b></p><p>  接口電路設(shè)計,程序設(shè)計(程序框圖和程序清單及注釋)其他有關(guān)的理論分析和計算</p><p><b>  接口電路設(shè)計:</b></p><p>  主控制器MSP430</p><p><b>  溫度傳感器</b></p><p><

17、b>  保持按鍵</b></p><p><b>  數(shù)碼管電路</b></p><p><b>  程序框圖:</b></p><p><b>  總體設(shè)計流程圖</b></p><p>  讀取溫度傳感器數(shù)據(jù)流程圖</p><p>

18、<b>  數(shù)碼管溫度顯示</b></p><p><b>  程序設(shè)計:</b></p><p>  //*************************定義引腳**********************************</p><p>  #define LED8PORT P2OUT

19、 //P2接8個LED燈</p><p>  #define LED8SEL P2SEL //P2接8個LED燈</p><p>  #define LED8DIR P2DIR //P2接8個LED燈</p><p>  #define

20、DATAPORTP4OUT //數(shù)據(jù)口所在端口P4</p><p>  #define DATASEL P4SEL //數(shù)據(jù)口功能寄存器,控制功能模式</p><p>  #define DATADIR P4DIR //數(shù)據(jù)口方向寄存器</p&

21、gt;<p>  #define CTRPORT P6OUT //控制線所在的端口P6</p><p>  #define CTRSEL P6SEL //控制口功能寄存器,控制功能模式</p><p>  #define CTRDIR P6DIR

22、 //控制口方向寄存器</p><p>  #define DCTR0 P6OUT &= ~BIT4 //數(shù)碼管段控制位信號置低</p><p>  #define DCTR1 P6OUT |= BIT4 //數(shù)碼管段控制位信號置高</p><p>  #d

23、efine WCTR0 P6OUT &= ~BIT3 //數(shù)碼管位控制位信號置低</p><p>  #define WCTR1 P6OUT |= BIT3 //數(shù)碼管位控制位信號置高</p><p>  #define KEYPORT P1OUT //按鍵

24、所在的端口P1</p><p>  #define KEYSEL P1SEL //控制口功能寄存器,控制功能模式</p><p>  #define KEYDIR P1DIR //控制口方向寄存器</p><p>  #define KEYIN

25、 P1IN //鍵盤掃描判斷需要讀取IO口狀態(tài)值</p><p>  uchar key=0xFF; //鍵值變量</p><p>  uint temp_value;</p><p>  float truetemp;</p><

26、p>  uint temp,A1,A2,A3; //定義的變量,顯示數(shù)據(jù)處理</p><p>  //*******************共陰數(shù)碼管顯示的斷碼表************************</p><p>  uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,<

27、;/p><p>  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};</p><p>  // *******************系統(tǒng)時鐘初始化***************************</p><p>  void Clock_Init()</p><p><b>  {</b&

28、gt;</p><p><b>  uchar i;</b></p><p>  BCSCTL1&=~XT2OFF; //打開XT2振蕩器</p><p>  BCSCTL2|=SELM1+SELS; //MCLK為8MHZ,SMCLK為8MHZ</p><p

29、><b>  do{</b></p><p>  IFG1&=~OFIFG; //清楚振蕩器錯誤標(biāo)志</p><p>  for(i=0;i<100;i++)</p><p><b>  _NOP();</b></p><p><b>

30、;  }</b></p><p>  while((IFG1&OFIFG)!=0); //如果標(biāo)志位1,則繼續(xù)循環(huán)等待</p><p>  IFG1&=~OFIFG; </p><p><b>  }</b></p><p>  //*******************M

31、SP430內(nèi)部看門狗初始化***********************</p><p>  void WDT_Init()</p><p><b>  {</b></p><p>  WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗</p><p><b>  }</b&g

32、t;</p><p>  //*******************MSP430IO口初始化*****************************</p><p>  void Port_Init()</p><p><b>  {</b></p><p>  LED8SEL = 0x00;

33、 //設(shè)置IO口為普通I/O模式,此句可省</p><p>  LED8DIR = 0xFF; //設(shè)置IO口方向?yàn)檩敵?lt;/p><p>  LED8PORT = 0xFF; //P2口初始設(shè)置為FF</p><p>  DATASEL = 0x00;

34、 //設(shè)置IO口為普通I/O模式,此句可省</p><p>  DATADIR = 0xFF; //設(shè)置IO口方向?yàn)檩敵?lt;/p><p>  DATAPORT = 0xFF; //P4口初始設(shè)置為FF</p><p>  CTRSEL = 0x0

35、0; //設(shè)置IO口為普通I/O模式,此句可省</p><p>  CTRDIR |= BIT3 + BIT4 +BIT2; //設(shè)置IO口方向?yàn)檩敵?控制口在P63,P64</p><p>  CTRPORT = 0xFF; //P6口初始設(shè)置為FF </p>

36、<p>  KEYSEL = 0x00; //設(shè)置IO口為普通I/O模式,此句可省 </p><p>  KEYDIR = 0x0F; //高四位輸入模式,低四位輸出模式,外部上拉電阻</p><p>  KEYPORT= 0xF0;

37、 //初始值0xF0</p><p><b>  }</b></p><p>  //*************74HC573控制數(shù)碼管動態(tài)掃描鍵值顯示函數(shù)******************</p><p>  void Display_Key(uchar num)</p><p><b>  {</

38、b></p><p>  uchar i,j;</p><p>  j=0x01; //此數(shù)據(jù)用來控制位選</p><p>  for(i=0;i<8;i++) //8個數(shù)碼管依次顯示</p><p><b>  {</b

39、></p><p>  DCTR1; //控制數(shù)碼管段數(shù)據(jù)的74HC573的LE管腳置高</p><p>  WCTR1; //控制數(shù)碼管位的74HC573的LE管腳置高</p><p>  DATAPORT=~j;

40、 //設(shè)置要顯示的位,也就是哪一個數(shù)碼管亮</p><p>  WCTR0; //鎖存位數(shù)據(jù),下面送上段數(shù)據(jù)以后,就顯示出來了 </p><p>  DATAPORT=table[num]; //送要顯示的數(shù)據(jù),這里是鍵值</p><p&

41、gt;  DCTR0; //鎖存段數(shù)據(jù),數(shù)碼管亮一個時間片刻</p><p>  j=j<<1; //移位,準(zhǔn)備進(jìn)行下一位的顯示</p><p>  delay_us(500); //顯示一個時間片刻,會影響亮度和閃爍性</p&g

42、t;<p><b>  }</b></p><p>  Close_LED(); //顯示完8個數(shù)碼管后關(guān)閉數(shù)碼管顯示,否則可能導(dǎo)致各個數(shù)碼管亮度不一致</p><p><b>  }</b></p><p>  //*****************鍵盤掃描子程

43、序,采用逐鍵掃描的方式******************</p><p>  uchar Key_Scan(void) </p><p><b>  {</b></p><p>  uchar key_check;</p><p>  uchar key_checkin;</p><p>  k

44、ey_checkin=KEYIN; //讀取IO口狀態(tài),判斷是否有鍵按下</p><p>  key_checkin&= 0xF0; //屏蔽掉低四位的不確定值</p><p>  if(key_checkin!=0xF0) //IO口值發(fā)生變化則表示有鍵按下</p><p>

45、<b>  {</b></p><p>  delay_ms(20); //鍵盤消抖,延時20MS</p><p>  key_checkin=KEYIN; //再次讀取IO口狀態(tài)</p><p>  if(key_checkin!=0xF0) //確定是

46、否真正的有鍵按下</p><p><b>  { </b></p><p>  key_check=KEYIN; //有鍵按下,讀取端口值</p><p>  switch (key_check & 0xF0) //判斷是哪個鍵按下</p><p><b>  {&l

47、t;/b></p><p>  case 0xE0:key=1;break;</p><p>  case 0xD0:key=2;break;</p><p>  case 0xB0:key=3;break;</p><p>  case 0x70:key=4;break;</p><p><b>  

48、}</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  key=0xFF;

49、 //無鍵按下,返回FF</p><p><b>  }</b></p><p>  return key;</p><p><b>  }</b></p><p>  //******74HC573控制數(shù)碼管動態(tài)掃描顯示函數(shù),顯示采集到的溫度*****

50、*********</p><p>  void Display_DS18B20(uint data_b,uint data_s,uint data_g)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  j=0x01;

51、//此數(shù)據(jù)用來控制位選</p><p>  for(i=0;i<3;i++) //用后3位數(shù)碼管來顯示</p><p><b>  {</b></p><p>  DCTR1; </p><p>  WCTR1;

52、 </p><p>  DATAPORT=~j; </p><p>  WCTR0; </p><p><b>  j=(j<<1);</b></p><p>  DATAPORT=0x00; //前5位

53、都不顯示,送數(shù)據(jù)00即可</p><p>  DCTR0; </p><p>  delay_ms(2); </p><p><b>  }</b></p><p>  DCTR1; //開始顯示第6

54、位,即十位</p><p>  WCTR1; </p><p>  DATAPORT=~j; </p><p>  WCTR0; </p><p><b>  j=(j<<1);</b></p>

55、<p>  //DATAPORT=table[A1];</p><p>  DATAPORT=table[data_b];</p><p>  DCTR0; </p><p>  delay_ms(1); </p><p>  DCTR1;

56、 //開始顯示個位</p><p>  WCTR1; </p><p>  DATAPORT=~j; </p><p>  WCTR0; </p><p><b>  j=(j<<1)

57、;</b></p><p>  //DATAPORT=table[A2]|0x80; //顯示小數(shù)點(diǎn) </p><p>  DATAPORT=table[data_s]|0x80; //顯示小數(shù)點(diǎn) </p><p>  DCTR0; </p><p>  d

58、elay_ms(1); </p><p>  DCTR1; //開始顯示小數(shù)點(diǎn)后面的數(shù)據(jù)</p><p>  WCTR1; </p><p>  DATAPORT=~j; </p><p> 

59、 WCTR0; </p><p><b>  j=(j<<1);</b></p><p>  //DATAPORT=table[A3];</p><p>  DATAPORT=table[data_g];</p><p>  DCTR0;

60、 </p><p>  delay_ms(1); </p><p>  DCTR1; //開始顯示溫度單位</p><p>  WCTR1; </p><p>  DATAPORT=~j;

61、 </p><p>  WCTR0; </p><p><b>  j=(j<<1);</b></p><p>  //DATAPORT=table[A3];</p><p>  DATAPORT=0x63;</p><p>  DCT

62、R0; </p><p>  delay_ms(1);</p><p>  DCTR1; //開始顯示溫度單位</p><p>  WCTR1; </p><p>  DATAPORT=~j;

63、 </p><p>  WCTR0; </p><p><b>  j=(j<<1);</b></p><p>  //DATAPORT=table[A3];</p><p>  DATAPORT=0x39;</p><p>  D

64、CTR0; </p><p>  delay_ms(1);</p><p>  DCTR1; </p><p>  WCTR1; </p><p>  DATAPORT=0xff; </

65、p><p>  WCTR0; </p><p><b>  }</b></p><p>  //************************DS18B20初始化*******************************</p><p>  unsigned char DS18

66、B20_Reset(void) //初始化和復(fù)位</p><p><b>  {</b></p><p>  unsigned char i;</p><p><b>  DQ_OUT;</b></p><p><b>  DQ_CLR;</b>&

67、lt;/p><p>  delay_us(500);//延時500uS(480-960)</p><p><b>  DQ_SET;</b></p><p><b>  DQ_IN;</b></p><p>  delay_us(80); //延時80uS</p>

68、;<p><b>  i = DQ_R;</b></p><p>  delay_us(500);//延時500uS(保持>480uS)</p><p><b>  if (i) </b></p><p><b>  {</b></p><p>  

69、return 0x00;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  return 0x01;</p><p><b>  }</b&

70、gt;</p><p><b>  }</b></p><p>  //**********************DS18B20讀一個字節(jié)函數(shù)**************************** </p><p>  unsigned char ds1820_read_byte(void) </p><p>&l

71、t;b>  {</b></p><p>  unsigned char i;</p><p>  unsigned char value = 0;</p><p>  for (i = 8; i != 0; i--) </p><p><b>  {</b></p><p>  

72、value >>= 1;</p><p><b>  DQ_OUT;</b></p><p><b>  DQ_CLR;</b></p><p>  delay_us(4); //*延時4uS</p><p><b>  DQ_SET;</b>

73、</p><p><b>  DQ_IN;</b></p><p>  delay_us(10); //*延時10uS</p><p>  if (DQ_R) </p><p><b>  {</b></p><p>  value|=0x80;&l

74、t;/p><p><b>  }</b></p><p>  delay_us(60); //*延時60uS</p><p><b>  }</b></p><p>  return(value);</p><p><b>  }</b>

75、;</p><p>  //**********************向18B20寫一個字節(jié)函數(shù)************************</p><p>  /*DS18B20字節(jié)寫入函數(shù)*/</p><p>  void ds1820_write_byte(unsigned char value) </p><p><b&g

76、t;  {</b></p><p>  unsigned char i;</p><p>  for (i = 8; i != 0; i--) </p><p><b>  {</b></p><p><b>  DQ_OUT;</b></p><p><b

77、>  DQ_CLR;</b></p><p>  delay_us(4); //延時4uS</p><p>  if (value & 0x01) </p><p><b>  {</b></p><p><b>  DQ_SET;</b></p>

78、<p><b>  }</b></p><p>  delay_us(80); //延時80uS</p><p>  DQ_SET; //位結(jié)束</p><p>  value >>= 1;</p><p><b>  }</b></p

79、><p><b>  }</b></p><p>  //********************發(fā)送溫度轉(zhuǎn)換命令*********************************</p><p>  /*啟動ds1820轉(zhuǎn)換*/</p><p>  void ds1820_start(void) </p>&

80、lt;p><b>  {</b></p><p>  DS18B20_Reset();</p><p>  ds1820_write_byte(0xCC); //勿略地址</p><p>  ds1820_write_byte(0x44); //啟動轉(zhuǎn)換</p><p>&l

81、t;b>  }</b></p><p>  //***********************DS8B20讀取溫度信息************************</p><p>  unsigned int ds1820_read_temp(void) </p><p><b>  {</b></p>&l

82、t;p>  unsigned int i;</p><p>  unsigned char buf[9];</p><p>  DS18B20_Reset();</p><p>  ds1820_write_byte(0xCC); //勿略地址</p><p>  ds1820_write_byte(0xBE);

83、 //讀取溫度</p><p>  for (i = 0; i < 9; i++) </p><p><b>  {</b></p><p>  buf[i] = ds1820_read_byte();</p><p><b>  }</b></p><p

84、>  i = buf[1];</p><p><b>  i <<= 8;</b></p><p>  i |= buf[0];</p><p>  temp_value=i;</p><p>  temp_value=(uint)(temp_value*0.625); //不是乘以0.0625的

85、原因是為了把小數(shù)點(diǎn)后一位數(shù)據(jù)也轉(zhuǎn)化為可以顯示的數(shù)據(jù)</p><p>  //比如溫度本身為27.5度,為了在后續(xù)的數(shù)據(jù)處理程序中得到BCD碼,我們先放大到275</p><p>  //然后在顯示的時候確定小數(shù)點(diǎn)的位置即可,就能顯示出27.5度了</p><p><b>  return i;</b></p><p>&

86、lt;b>  }</b></p><p>  //*********************溫度數(shù)據(jù)處理函數(shù)****************************</p><p>  void data_do(uint temp_d)</p><p>  { </p><p>

87、;  A3=temp_d%10; //分出百,十,和個位</p><p>  temp_d/=10;</p><p>  A2=temp_d%10;</p><p>  A1=temp_d/10;</p><p><b>  }</b></p><p>  //*********

88、**************處理溫度數(shù)據(jù)*********************</p><p>  void handletemp()</p><p><b>  {</b></p><p>  ds1820_start(); //啟動一次轉(zhuǎn)換</p><p>  ds1820_read_tem

89、p(); //讀取溫度數(shù)值</p><p>  data_do(temp_value); //處理數(shù)據(jù),得到要顯示的值</p><p>  truetemp=0.1*temp_value;</p><p>  //judgeAlarm(); //判斷是否觸發(fā)警報//

90、已將其添加至按鍵程序</p><p><b>  }</b></p><p>  //***********************顯示溫度**********************</p><p>  void showtemp()</p><p><b>  {</b></p>

91、<p><b>  uchar j;</b></p><p>  for(j=0;j<100;j++)</p><p><b>  { </b></p><p>  Display_DS18B20(A1,A2,A3); //顯示溫度值</p><p><

92、;b>  }</b></p><p>  //delay_ms(100); //延時100ms</p><p><b>  }</b></p><p>  //***************************主程序************************</

93、p><p>  void main(void)</p><p><b>  {</b></p><p>  uchar flag1,flag2,flag3,flag4;</p><p>  //uint key_store=0x00; //沒有按鍵按下時,默認(rèn)顯示1 </p>

94、<p>  WDT_Init(); //看門狗初始化</p><p>  Clock_Init(); //時鐘初始化</p><p>  Port_Init(); //端口初始化,用于控制IO口輸入或輸出</p>&

95、lt;p>  //Close_LED();</p><p>  DS18B20_Reset(); //復(fù)位D18B20</p><p>  delay_ms(100); //延時100ms</p><p><b>  while(1)</b></p><p>&

96、lt;b>  { </b></p><p>  Key_Scan(); //鍵盤掃描,看是否有按鍵按下</p><p>  if(key!=0xff) //如果有按鍵按下,則顯示該按鍵鍵值1~4</p><p><b>  {</b></

97、p><p><b>  {</b></p><p>  switch(key)</p><p><b>  {</b></p><p>  case 1: LED8PORT=0xfc;flag1=1;flag2=0;flag3=0;flag4=0;break;//對溫度數(shù)據(jù)處理判斷警報,然后顯示,han

98、dletemp();showtemp();</p><p>  case 2: LED8PORT=0xf3;flag1=0;flag2=1;flag3=0;flag4=0;break;//溫度數(shù)據(jù)處理判斷警報,關(guān)閉顯示,節(jié)省電源,handletemp();Close_LED();</p><p>  case 3: LED8PORT=0xcf;flag1=0;flag2=0;flag3=1

99、;flag4=0;break;//關(guān)閉警報,SOUNDOFF;handletemp();</p><p>  case 4: LED8PORT=0x3f;flag1=0;flag2=0;flag3=0;flag4=1;break;//測試警報SOUNDON;</p><p><b>  }</b></p><p><b>  }<

100、;/b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  LED8PORT&=0xff; //</p><p>  if(fla

101、g1==1)</p><p><b>  {</b></p><p>  //handletemp();</p><p>  showtemp();</p><p><b>  }</b></p><p>  if(flag2==1)</p><p>

102、<b>  { </b></p><p>  handletemp();</p><p>  showtemp();</p><p><b>  }</b></p><p>  if(flag3==1)</p><p><b>  {</b>&

103、lt;/p><p><b>  SOUNDOFF;</b></p><p>  handletemp();</p><p><b>  }</b></p><p>  if(flag4==1)</p><p><b>  {</b></p>&

104、lt;p><b>  SOUNDON;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

105、<p><b>  設(shè)計總結(jié)</b></p><p>  對整個設(shè)計工作過程進(jìn)行歸納和綜合,對設(shè)計中所存在的問題和不足進(jìn)行分析和總結(jié),提出解決的方法、措施、建議和對這次設(shè)計實(shí)踐的認(rèn)識、收獲和提高。</p><p>  在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,也學(xué)到了許多東西。雖然我以前也做過類似的課程設(shè)計,但這次設(shè)計真的讓我長進(jìn)了很多。本次單片機(jī)課程設(shè)計的重

106、點(diǎn)就在于測溫及按鍵編程軟件算法的設(shè)計,其中有許多很巧妙的算法。我以前總是能看懂別人寫的程序,但自己單獨(dú)寫時就會出現(xiàn)很多問題,經(jīng)過這次鍛煉我基本掌握了C語言編程的方法并在以前的基礎(chǔ)上有所提高。 從這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。作品的使用或操作說明</p&g

107、t;<p>  作品上電后,按下復(fù)位按鍵,數(shù)碼管開始顯示當(dāng)前環(huán)境溫度,并實(shí)時刷新數(shù)據(jù),按下保持按鍵后,溫度會保持在當(dāng)前溫度不變,當(dāng)再次按下顯示按鍵后,溫度又會開始實(shí)時顯示。設(shè)計圖紙或圖表</p><p><b>  數(shù)碼管顯示</b></p><p><b>  按鍵</b></p><p><b>

溫馨提示

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

最新文檔

評論

0/150

提交評論