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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p>  課題名稱(chēng):數(shù)字溫度控制系統(tǒng)</p><p>  專(zhuān) 業(yè): 電子信息工程</p><p>  班 級(jí): 08級(jí)本科1班</p><p>  2011年04月07日</p><p><b>  1.

2、引言</b></p><p>  隨著人們生活水平的不斷提供,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,他給人們帶來(lái)的方便也是不可否認(rèn)的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)字單片機(jī)技術(shù)入手,一切向著數(shù)字化控制、智能化控制方向發(fā)展。</p><p>  本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的的溫度計(jì)相比,具

3、有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫精確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)STC89C52RC,測(cè)溫傳感器使用DS18B20,用1602LCD液晶以并口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示及其控制,同時(shí)用按鍵可設(shè)置上限和下限溫度值。</p><p><b>  2.總體設(shè)計(jì)方案</b></p><p>  2.1數(shù)字溫度計(jì)設(shè)計(jì)方

4、案論證</p><p><b>  2.1.1方案一</b></p><p>  由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類(lèi)的器件利用其感溫效應(yīng),再將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以利用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到A/D轉(zhuǎn)化電路,感溫電路比較麻煩。</p><p>&

5、lt;b>  2.1.2 方案二</b></p><p>  進(jìn)而考慮到用數(shù)字溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只數(shù)字溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿(mǎn)足設(shè)計(jì)要求。</p><p>  從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了

6、方案二。</p><p>  2.2方案二的總體設(shè)計(jì)框圖</p><p>  溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖1所示,控制器使用單片機(jī)STC89C52RC,測(cè)溫傳感器使用DS18B20,用1602LCD液晶以并口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,同時(shí)用按鍵可設(shè)置上限和下限溫度值,并儲(chǔ)存到24C02存儲(chǔ)器內(nèi),方便查詢(xún),如超出設(shè)定范圍,蜂鳴器報(bào)警。</p><p>  圖1 總體

7、設(shè)計(jì)方框圖</p><p><b>  3.主控制器</b></p><p>  3.1. STC89C52RC單片機(jī)管腳圖</p><p>  3.2.STC89C52RC單片機(jī)特點(diǎn)</p><p>  STC89C52RC單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾、高速、低功耗的單片機(jī),指令代碼完全兼容傳統(tǒng)8051 單片

8、機(jī),12 時(shí)鐘/ 機(jī)器周期和6 時(shí)鐘/ 機(jī)器周期可任意選擇,最新的D 版本內(nèi)部集成MAX810 專(zhuān)用復(fù)位電路。(1). 增強(qiáng)型6 時(shí)鐘/ 機(jī)器周期,12 時(shí)鐘/ 機(jī)器周期 8051 CPU(2). 工作電壓:5.5V - 3.4V(5V 單片機(jī)) / 3.8V - 2.0V(3V 單片機(jī))(3). 工作頻率范圍:0 - 40 MHz,相當(dāng)于普通8051 的 0~80MHz.實(shí)際工作 </p><p>  頻

9、率可達(dá)48MHz.(4). 用戶(hù)應(yīng)用程序空間 4K / 8K / 13K / 16K / 20K / 32K / 64K 字節(jié)(5). 片上集成 1280 字節(jié) / 512 字節(jié) RAM(6). 通用I/O 口(32/36 個(gè)),復(fù)位后為: P1/P2/P3/P4 是準(zhǔn)雙向口/ 弱</p><p>  上拉(普通8051 傳統(tǒng)I/O 口),P0 口是開(kāi)漏輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O 口

10、用時(shí),需加上拉電阻。</p><p> ?。?) . I S P (在系統(tǒng)可編程)/ I A P (在應(yīng)用可編程),無(wú)需專(zhuān)用編程器/ 仿真器,可通過(guò)串口(P3.0/P3.1)直接下載用戶(hù)程序,8K 程序3 秒即可完成一片</p><p> ?。?). EEPROM 功能</p><p><b> ?。?). 看門(mén)狗</b></p>

11、<p>  (10).內(nèi)部集成MAX810 專(zhuān)用復(fù)位電路(D 版本才有),外部晶體20M 以下時(shí),可省外部復(fù)位電路</p><p>  3.3. 典型應(yīng)用電路</p><p>  4.燒錄芯片MAX232</p><p>  4.1.MAX232管腳圖</p><p>  4.2.典型應(yīng)用電路</p><p&g

12、t;<b>  5溫度傳感器</b></p><p>  5.1.DS18B20管腳圖</p><p>  5.2.DS18B20的主要特點(diǎn)</p><p>  (1)全數(shù)字溫度轉(zhuǎn)換及輸出。</p><p>  (2)先進(jìn)的單總線數(shù)據(jù)通信。</p><p> ?。?)最高12位分辨率,精度可達(dá)&#

13、177;0.5攝氏度。</p><p> ?。?)12位分辨率時(shí)的最大工作周期為750毫秒。</p><p> ?。?)可選擇寄生工作方式。</p><p>  (6)檢測(cè)溫度范圍為-55℃~+125℃</p><p> ?。?)內(nèi)置EEPROM,限溫報(bào)警功能。</p><p> ?。?)64位光刻ROM,內(nèi)置產(chǎn)品序列

14、號(hào),方便多機(jī)掛接。</p><p>  (9)多樣封裝形式,適應(yīng)不同硬件系統(tǒng)。</p><p>  5.3.典型應(yīng)用電路</p><p>  5.4.常用軟件設(shè)計(jì)</p><p>  /*****************復(fù)位ds18b20*****************/</p><p>  bit ds18b20_

15、reset()</p><p><b>  {</b></p><p>  bit checkbit=1;</p><p><b>  DQ=0;</b></p><p>  delay1(75); //延時(shí)500us</p><p>  DQ=1;

16、 //釋放總線,ds18b20檢測(cè)到上升沿后返回存在脈沖。</p><p>  delay1(8); //60us左右的等待時(shí)間,保證接收到的是存在脈沖。</p><p>  checkbit=DQ;</p><p>  delay1(40);</p><p><b>  DQ=1;</b></p>

17、;<p>  return(~checkbit);</p><p><b>  }</b></p><p>  /***************向ds18b20寫(xiě)入一位****************/</p><p>  void ds18b20_write_bit(bit wrbit)</p><p>

18、<b>  {</b></p><p><b>  uchar i;</b></p><p>  DQ=0; //拉低總線,產(chǎn)生寫(xiě)時(shí)序</p><p>  i++;i++; //微秒延時(shí)</p><p><b>  DQ=wrbit;</b></p>

19、<p>  delay1(8); //等待ds18b20取走數(shù)據(jù)</p><p>  DQ=1; //釋放總線</p><p><b>  }</b></p><p>  /**********向ds18b20寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)************/</p><p>  void ds18b20

20、_write_byte(uchar wrbyte)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  while(i++<8)</p><p><b>  {</b></p><p>  ds18b20_write_

21、bit(wrbyte&0x01);//從最低位開(kāi)始寫(xiě)數(shù)據(jù)</p><p>  wrbyte>>=1;//將數(shù)據(jù)右移一位</p><p><b>  }</b></p><p><b>  }</b></p><p>  /****************從ds18b20中讀出一位

22、數(shù)據(jù)****************/</p><p>  bit ds18b20_read_bit()</p><p><b>  {</b></p><p>  bit readbit;</p><p>  uchar i=0;</p><p>  DQ=0; //拉低總線

23、</p><p><b>  i++;i++;</b></p><p><b>  DQ=1;</b></p><p>  i++;i++;i++;i++;</p><p>  readbit=DQ;</p><p>  delay1(8);</p><p

24、><b>  DQ=1;</b></p><p>  return(readbit);</p><p><b>  }</b></p><p>  /********從ds18b20中讀出一個(gè)字節(jié)的數(shù)據(jù)********/</p><p>  uchar ds18b20_read_byte()&

25、lt;/p><p><b>  {</b></p><p>  uchar i=0,readbyte=0,bitresult=0;</p><p>  while(i++<8)</p><p><b>  {</b></p><p>  bitresult=ds18b20_

26、read_bit();</p><p>  readbyte=readbyte>>1 | bitresult<<7;</p><p><b>  }</b></p><p>  return(readbyte);</p><p><b>  }</b></p>

27、<p>  /***********啟動(dòng)溫度轉(zhuǎn)換函數(shù)**************/</p><p>  void ds18b20_start()</p><p><b>  {</b></p><p><b>  DQ=1;</b></p><p>  ds18b20_reset();&

28、lt;/p><p>  ds18b20_write_byte(0xCC); //跳過(guò)</p><p>  ds18b20_write_byte(0x44);//啟動(dòng)溫度轉(zhuǎn)換</p><p><b>  }</b></p><p>  /***************讀取溫度函數(shù)***************/</p&g

29、t;<p>  int ds18b20_read_tem()</p><p><b>  {</b></p><p>  int tem=0;</p><p>  ds18b20_reset();</p><p>  ds18b20_write_byte(0xCC);</p><p>

30、;  ds18b20_write_byte(0xBE); //發(fā)出讀取命令</p><p>  tem=ds18b20_read_byte(); //讀取溫度低八位</p><p>  tem|=(((int)ds18b20_read_byte())<<8);//讀溫度高八位</p><p>  tem=(f

31、loat)tem*0.625;</p><p>  return tem;</p><p><b>  }</b></p><p>  6.1602液晶顯示</p><p>  6.1.1602引腳圖</p><p>  6.2.典型應(yīng)用電路</p><p><b&g

32、t;  8.蜂鳴器電路設(shè)計(jì)</b></p><p>  9.獨(dú)立鍵盤(pán)電路設(shè)計(jì)</p><p><b>  10.附錄</b></p><p>  #include<reg52.h></p><p>  #include<intrins.h></p><p>  

33、#include<absacc.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned char </p><p>  typedef unsigned int UINT16;</p><p>  typedef unsigned char

34、UINT8;</p><p>  uchar sz[18]="A: B: ";</p><p>  uchar screen[18]={' ',' ','S','E','T',':',' ','0','0',

35、'0','.','0',0xdf,0x43,' ',' '};</p><p>  uchar max[]={'0','3','0','.','0'};</p><p>  sbit lcd_rs=P1^0;</p>

36、<p>  sbit lcd_en=P1^1;</p><p>  sbit DQ1=P1^2; //18b201數(shù)據(jù)</p><p>  sbit DQ2=P1^3; //18b202數(shù)據(jù)</p><p>  sbit b=P1^4; //蜂鳴器</p><p>  sbit M

37、OTOR1=P1^5; //風(fēng)機(jī)控制</p><p>  sbit MOTOR2=P1^6; //氣窗控制</p><p>  sbit MOTOR3=P1^7; //空調(diào)控制</p><p>  sbit key1=P2^0; //功能按鍵</p><p>  sbit key2=P2^1;

38、 //讀取按鍵</p><p>  sbit key3=P2^2; //設(shè)定增加</p><p>  sbit key4=P2^3; //設(shè)定減少</p><p>  /**************延時(shí)函數(shù)****************/</p><p>  void delay1(uchar n)

39、</p><p><b>  {</b></p><p>  while(n--)</p><p><b>  {</b></p><p><b>  }</b></p><p><b>  }</b></p><

40、;p>  void delay(uint z)</p><p><b>  {</b></p><p>  uchar x,y;</p><p>  for(x=0;x<z;z++)</p><p>  for(y=0;y<1;y++);</p><p><b>  }

41、</b></p><p>  void lcd_delay()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=1;i<140;i++);</p><p><b>  }

42、</b></p><p>  void key_delay(uchar time)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=0;i<time;i++)</p><p>  for(j=0;j<110;

43、j++);</p><p><b>  }</b></p><p>  //1602液晶函數(shù)開(kāi)始</p><p>  /*****************lcd寫(xiě)命令函數(shù)******************/</p><p>  void lcd_write_cmd(uchar cmder)</p><

44、;p><b>  {</b></p><p><b>  lcd_rs=0;</b></p><p><b>  P0=cmder;</b></p><p>  lcd_delay();</p><p><b>  lcd_en=1;</b><

45、/p><p>  lcd_delay();</p><p><b>  lcd_en=0;</b></p><p><b>  }</b></p><p>  /***************lcd寫(xiě)數(shù)據(jù)函數(shù)******************/</p><p>  void l

46、cd_write_data(uchar date)</p><p><b>  {</b></p><p>  lcd_rs=1; </p><p><b>  P0=date;</b></p><p>  lcd_delay();</p><p><b>  lc

47、d_en=1;</b></p><p>  lcd_delay();</p><p><b>  lcd_en=0;</b></p><p><b>  }</b></p><p>  /**************寫(xiě)字符串函數(shù)*******************/</p>

48、<p>  void lcd_write_string(uchar *lcddata)</p><p><b>  {</b></p><p>  uchar strlen=0;</p><p>  while(lcddata[strlen]!='\0')</p><p><b>

49、  {</b></p><p>  lcd_write_data(lcddata[strlen]);</p><p><b>  strlen++;</b></p><p><b>  }</b></p><p><b>  }</b></p><

50、;p>  /***************lcd選定為寫(xiě)字符****************/</p><p>  void lcd_write_style(uchar add,uchar dat)</p><p><b>  {</b></p><p>  lcd_write_cmd(add);</p><p>

51、  lcd_write_data(dat);</p><p><b>  }</b></p><p>  //1602液晶函數(shù)結(jié)束</p><p>  //ds18b20函數(shù)開(kāi)始</p><p>  /*******************復(fù)位ds18b201***********************/</p&

52、gt;<p>  bit ds18b201_reset()</p><p><b>  {</b></p><p>  bit checkbit=1;</p><p><b>  DQ1=0;</b></p><p>  delay1(75); //延時(shí)500us</p>

53、<p>  DQ1=1; //釋放總線,ds18b20檢測(cè)到上升沿后返回存在脈沖。</p><p>  delay1(8); //60us左右的等待時(shí)間,保證接收到的是存在脈沖。</p><p>  checkbit=DQ1;</p><p>  delay1(40);</p><p><b>  D

54、Q1=1;</b></p><p>  return(~checkbit);</p><p><b>  }</b></p><p>  /*******************復(fù)位ds18b202***********************/</p><p>  bit ds18b202_reset()&

55、lt;/p><p><b>  {</b></p><p>  bit checkbit=1;</p><p><b>  DQ2=0;</b></p><p>  delay1(75); //延時(shí)500us</p><p>  DQ2=1; //釋放總線,ds1

56、8b20檢測(cè)到上升沿后返回存在脈沖。</p><p>  delay1(8); //60us左右的等待時(shí)間,保證接收到的是存在脈沖。</p><p>  checkbit=DQ2;</p><p>  delay1(40);</p><p><b>  DQ2=1;</b></p><p> 

57、 return(~checkbit);</p><p><b>  }</b></p><p>  /***************向ds18b201寫(xiě)入一位********************/</p><p>  void ds18b201_write_bit(bit wrbit)</p><p><b&g

58、t;  {</b></p><p><b>  uchar i;</b></p><p>  DQ1=0; //拉低總線,產(chǎn)生寫(xiě)時(shí)序</p><p>  i++;i++; //微秒延時(shí)</p><p>  DQ1=wrbit;</p><p>  delay1(8); /

59、/等待ds18b20取走數(shù)據(jù)</p><p>  DQ1=1; //釋放總線</p><p><b>  }</b></p><p>  /***************向ds18b202寫(xiě)入一位********************/</p><p>  void ds18b202_write_bit(bi

60、t wrbit)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  DQ2=0; //拉低總線,產(chǎn)生寫(xiě)時(shí)序</p><p>  i++;i++; //微秒延時(shí)</p><p>  DQ2=wrbit

61、;</p><p>  delay1(8); //等待ds18b20取走數(shù)據(jù)</p><p>  DQ2=1; //釋放總線</p><p><b>  }</b></p><p>  /****************向ds18b201寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)***************/</p>

62、<p>  void ds18b201_write_byte(uchar wrbyte)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  while(i++<8)</p><p><b>  {</b></p>&

63、lt;p>  ds18b201_write_bit(wrbyte&0x01);//從最低位開(kāi)始寫(xiě)數(shù)據(jù)</p><p>  wrbyte>>=1; //將數(shù)據(jù)右移一位</p><p><b>  }</b></p><p><b>  }</b></p><p

64、>  /****************向ds18b202寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)***************/</p><p>  void ds18b202_write_byte(uchar wrbyte)</p><p><b>  {</b></p><p>  uchar i=0;</p><p>  whi

65、le(i++<8)</p><p><b>  {</b></p><p>  ds18b202_write_bit(wrbyte&0x01);//從最低位開(kāi)始寫(xiě)數(shù)據(jù)</p><p>  wrbyte>>=1; //將數(shù)據(jù)右移一位</p><p><b>  }&

66、lt;/b></p><p><b>  }</b></p><p>  /***************從ds18b201中讀出一位數(shù)據(jù)***************/</p><p>  bit ds18b201_read_bit()</p><p><b>  {</b></p&g

67、t;<p>  bit readbit;</p><p>  uchar i=0;</p><p>  DQ1=0; //拉低總線</p><p><b>  i++;i++;</b></p><p><b>  DQ1=1;</b></p

68、><p>  i++;i++;i++;i++;</p><p>  readbit=DQ1;</p><p>  delay1(8);</p><p><b>  DQ1=1;</b></p><p>  return(readbit);</p><p><b>  

69、}</b></p><p>  /***************從ds18b202中讀出一位數(shù)據(jù)***************/</p><p>  bit ds18b202_read_bit()</p><p><b>  {</b></p><p>  bit readbit;</p>&l

70、t;p>  uchar i=0;</p><p>  DQ2=0; //拉低總線</p><p><b>  i++;i++;</b></p><p><b>  DQ2=1;</b></p><p>  i++;i++;i++;i++;</p&g

71、t;<p>  readbit=DQ2;</p><p>  delay1(8);</p><p><b>  DQ2=1;</b></p><p>  return(readbit);</p><p><b>  }</b></p><p>  /******

72、*******從ds18b201中讀出一個(gè)字節(jié)的數(shù)據(jù)************/</p><p>  uchar ds18b201_read_byte()</p><p><b>  {</b></p><p>  uchar i=0,readbyte=0,bitresult=0;</p><p>  while(i++&

73、lt;8)</p><p><b>  {</b></p><p>  bitresult=ds18b201_read_bit();</p><p>  readbyte=readbyte>>1 | bitresult<<7;</p><p><b>  }</b></

74、p><p>  return(readbyte);</p><p><b>  }</b></p><p>  /*************從ds18b202中讀出一個(gè)字節(jié)的數(shù)據(jù)************/</p><p>  uchar ds18b202_read_byte()</p><p><

75、;b>  {</b></p><p>  uchar i=0,readbyte=0,bitresult=0;</p><p>  while(i++<8)</p><p><b>  {</b></p><p>  bitresult=ds18b202_read_bit();</p>

76、<p>  readbyte=readbyte>>1 | bitresult<<7;</p><p><b>  }</b></p><p>  return(readbyte);</p><p><b>  }</b></p><p>  /**********

77、*****函數(shù)為啟動(dòng)DS18B201溫度轉(zhuǎn)換*****************/</p><p>  void ds18b201_start()</p><p><b>  {</b></p><p><b>  DQ1=1;</b></p><p>  ds18b201_reset();<

78、/p><p>  ds18b201_write_byte(0xCC); //跳過(guò)</p><p>  ds18b201_write_byte(0x44); //啟動(dòng)溫度轉(zhuǎn)換</p><p><b>  }</b></p><p>  /***************函數(shù)為啟動(dòng)DS18B202溫度轉(zhuǎn)換***********

79、******/</p><p>  void ds18b202_start()</p><p><b>  {</b></p><p><b>  DQ2=1;</b></p><p>  ds18b202_reset();</p><p>  ds18b202_write

80、_byte(0xCC); //跳過(guò)</p><p>  ds18b202_write_byte(0x44); //啟動(dòng)溫度轉(zhuǎn)換</p><p><b>  }</b></p><p>  /***************函數(shù)為讀DS18B201取溫度*****************/</p><p>  int d

81、s18b201_read_tem()</p><p><b>  {</b></p><p>  int tem=0;</p><p>  ds18b201_reset();</p><p>  ds18b201_write_byte(0xCC);</p><p>  ds18b201_write

82、_byte(0xBE); //發(fā)出讀取命令</p><p>  tem=ds18b201_read_byte(); //讀取溫度低八位</p><p>  tem|=(((int)ds18b201_read_byte())<<8);//讀溫度高八位</p><p>  tem=(float)tem*0.625

83、;</p><p>  return tem;</p><p><b>  }</b></p><p>  /***************函數(shù)為讀DS18B202取溫度*****************/</p><p>  int ds18b202_read_tem()</p><p><

84、;b>  {</b></p><p>  int tem=0;</p><p>  ds18b202_reset();</p><p>  ds18b202_write_byte(0xCC);</p><p>  ds18b202_write_byte(0xBE); //發(fā)出讀取命令</p>

85、<p>  tem=ds18b202_read_byte(); //讀取溫度低八位</p><p>  tem|=(((int)ds18b202_read_byte())<<8);//讀溫度高八位</p><p>  tem=(float)tem*0.625;</p><p>  return tem;</p&

86、gt;<p><b>  }</b></p><p>  /*******************在液晶的指定位置顯示溫度數(shù)值*************/</p><p>  void displayTem1(int temp)</p><p><b>  {</b></p><p>

87、  sz[2]=temp/1000+0x30;</p><p>  temp=temp%1000;</p><p>  sz[3]=temp/100+0x30;</p><p>  temp=temp%100;</p><p>  sz[4]=temp/10+0x30;</p><p>  sz[5]='.&#

88、39;;</p><p>  sz[6]=temp%10+0x30;</p><p><b>  }</b></p><p>  /*******************在液晶的指定位置顯示溫度數(shù)值*************/</p><p>  void displayTem2(int temp)</p>

89、<p><b>  {</b></p><p>  sz[10]=temp/1000+0x30;</p><p>  temp=temp%1000;</p><p>  sz[11]=temp/100+0x30;</p><p>  temp=temp%100;</p><p>  s

90、z[12]=temp/10+0x30;</p><p>  sz[13]='.';</p><p>  sz[14]=temp%10+0x30;</p><p><b>  }</b></p><p>  void lcd_sfm(uchar add,uchar shu)</p><p

91、><b>  {</b></p><p>  uchar shi,ge;</p><p>  shi=shu/10;</p><p>  ge=shu%10;</p><p>  lcd_write_cmd(0xc0+add);</p><p>  lcd_write_data(0x30+s

92、hi);</p><p>  lcd_write_data(0x30+ge);</p><p><b>  }</b></p><p>  /*************LCD初始化函數(shù)***************/</p><p>  void init()</p><p><b> 

93、 {</b></p><p><b>  lcd_en=0;</b></p><p>  lcd_write_cmd(0x38); //設(shè)置16*2顯示,5*6點(diǎn)陣,8位數(shù)據(jù)接口</p><p>  lcd_write_cmd(0x0c); //開(kāi)顯示,不顯示光標(biāo),光標(biāo)不顯示</p><p>  lcd_wr

94、ite_cmd(0x06); //指針加一,光標(biāo)加一,寫(xiě)入屏幕不移動(dòng)</p><p>  lcd_write_cmd(0x80); //設(shè)置數(shù)據(jù)地址指針</p><p>  lcd_write_cmd(0x01); //數(shù)據(jù)指針清零,所有顯示清零</p><p><b>  }</b></p><p>  void di

95、di()</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  int j=10;</b></p><p>  while(j--)</p><p><b>  {</b&

96、gt;</p><p><b>  b=0;</b></p><p>  for(i=0;i<=10000;i++);</p><p><b>  b=1;</b></p><p>  for(i=0;i<=10000;i++);</p><p><b>

97、;  } </b></p><p><b>  }</b></p><p>  void key_jiajian(uint i)</p><p><b>  {</b></p><p>  if(key3==0)</p><p><b>  {&l

98、t;/b></p><p><b>  delay(5);</b></p><p>  while(key3==0);</p><p>  screen[i]++;</p><p>  if(screen[i]-48==10)</p><p>  screen[i]=48;</p>

99、;<p><b>  }</b></p><p>  if(key4==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  while(key4==0);</p><p>

100、;  screen[i]--;</p><p>  if(screen[i]-47==0)</p><p>  screen[i]=57;</p><p><b>  }</b></p><p>  lcd_write_data(screen[i]);</p><p><b>  }

101、</b></p><p>  void key()</p><p><b>  {</b></p><p>  uchar i=1;</p><p><b>  uint j=0;</b></p><p>  key1=key2=key3=key4=1;<

102、/p><p><b>  while(i)</b></p><p><b>  {</b></p><p>  if(key1==0)</p><p><b>  {</b></p><p>  lcd_write_cmd(0x0f);</p>

103、<p>  delay(100);</p><p><b>  j++;</b></p><p>  while(key1==0); </p><p><b>  }</b></p><p><b>  switch(j)</b></p>

104、<p><b>  {</b></p><p>  case 1: lcd_write_cmd(0x87);</p><p>  key_delay(10);</p><p>  key_jiajian(7);</p><p>  lcd_write_cmd(0x87);</p><p>

105、;<b>  break;</b></p><p><b>  case 2:</b></p><p>  lcd_write_cmd(0x88);</p><p>  key_delay(10);</p><p>  key_jiajian(8);</p><p>  lc

106、d_write_cmd(0x88);</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  lcd_write_cmd(0x89);</p><p>  key_delay(10);</p><p>  

107、key_jiajian(9);</p><p>  lcd_write_cmd(0x89);</p><p><b>  break;</b></p><p>  case 4:lcd_write_cmd(0x8b);</p><p>  key_delay(10);</p><p>  ke

108、y_jiajian(11);</p><p>  lcd_write_cmd(0x8b);</p><p><b>  break;</b></p><p><b>  case 5: </b></p><p>  j=1;break;</p><p><b> 

109、 }</b></p><p>  if(key2==0)</p><p><b>  {</b></p><p>  while(key2==0);</p><p><b>  i=0;</b></p><p><b>  }</b><

110、/p><p><b>  }</b></p><p>  lcd_write_cmd(0x0c);</p><p><b>  }</b></p><p>  void lcd_prin()</p><p><b>  {</b></p>&l

111、t;p><b>  int num;</b></p><p>  for(num=0;num<16;num++)</p><p><b>  {</b></p><p>  lcd_write_cmd(0x80+num);</p><p>  lcd_write_data(scre

112、en[num]);</p><p>  lcd_write_cmd(0xc0+num);</p><p>  lcd_write_data(sz[num]); </p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****

113、**********主函數(shù)開(kāi)始*****************/</p><p>  void main()</p><p><b>  {</b></p><p>  int tem1,tem2;</p><p>  UINT16 Tin,Tout,Tset,Toff,i=0;</p><p&g

114、t;  b=1; </p><p><b>  init();</b></p><p>  lcd_write_cmd(0x0C); </p><p><b>  while(1)</b></p><p><b>  {</b></p>&l

115、t;p><b>  b=1;</b></p><p>  ds18b201_start();</p><p>  ds18b202_start();</p><p>  tem1=ds18b201_read_tem();</p><p>  tem2=ds18b202_read_tem();</p>

116、<p>  if(key1==0) </p><p><b>  key();</b></p><p>  Toff=(max[0]-48)*1000+(max[1]-48)*100+(max[2]-48)*10; </p><p>  Tin=(sz[2]-48)*1000+(sz[3]-48

117、)*100+(sz[4]-48)*10;//+(sz[6]-48)*1/10 </p><p>  Tout=(sz[10]-48)*1000+(sz[11]-48)*100+(sz[12]-48)*10;//+(sz[14]-48)*1/10</p><p>  Tset=(screen[7]-48)*1000+(screen[8]-48)*100+(screen[9]-48)*10

118、;//+(screen[11]-48)*1/10</p><p>  lcd_prin();</p><p>  if(Tin<Toff)</p><p><b>  {</b></p><p>  if(Tset<Tin&&Tset>Tout)</p><p>

119、<b>  { </b></p><p>  MOTOR1=0; </p><p>  MOTOR2=0; </p><p>  MOTOR3=1; </p><p><b>  }</b></p><p><b>  else</b&g

120、t;</p><p><b>  { </b></p><p>  MOTOR1=1; </p><p>  MOTOR2=1; </p><p>  MOTOR3=1; </p><p><b>  }</b></p><p>

121、<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  didi(); </p><p>  MOTOR1=1; </p><p>  MOTOR2=1;

122、 </p><p>  MOTOR3=0; </p><p><b>  } </b></p><p>  displayTem1(tem1); </p><p>  displayTem2(tem2); </p><p><b>  }</b></p>

123、;<p><b>  }</b></p><p><b>  11.參考文獻(xiàn)</b></p><p>  零基礎(chǔ)學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì) 趙建領(lǐng)/薛圓圓等編著 </p><p><b>  機(jī)械工業(yè)出版社</b></p><p><b>

124、  12.結(jié)束語(yǔ)</b></p><p>  到此為止課題要求的基本功能都已經(jīng)能實(shí)現(xiàn)了,但還存在某些不足,我會(huì)在以后的時(shí)間里不斷改進(jìn)。這次課程設(shè)計(jì)很漫長(zhǎng),特別是編寫(xiě)程序的時(shí)候,但我從中學(xué)到了很多東西,個(gè)人的分析能力對(duì)問(wèn)題的處理能力有了不同程度的提高。對(duì)電路的判斷分析對(duì)程序的分析特別是對(duì)51單片機(jī)的進(jìn)一步學(xué)習(xí),使我收獲了很多。</p><p>  感謝我們的指導(dǎo)老師閔老師,幫助我

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論