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

下載本文檔

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

文檔簡介

1、<p>  2014電阻爐爐溫控制系統(tǒng)設(shè)計</p><p><b>  課程設(shè)計要求</b></p><p><b>  課題內(nèi)容</b></p><p>  應(yīng)用計算機的實時監(jiān)控和溫度測量技術(shù),采用單片機、溫度檢測電路、溫度控制電路等,采用比例環(huán)反饋、數(shù)字PID閉環(huán)調(diào)節(jié)兩種方式實現(xiàn)電阻爐爐溫的實時監(jiān)控。<

2、/p><p><b>  要求及技術(shù)指標</b></p><p>  用單片機及相應(yīng)的組成部件組成電阻爐溫的自動控制系統(tǒng),要求測溫范圍0~100℃,使其控制系統(tǒng)控制的溫度保溫值的變化范圍為30~60℃。</p><p><b>  要求:</b></p><p> ?。?)完成電阻爐溫度控制系統(tǒng)設(shè)計,包

3、括硬件電路設(shè)計和軟件程序設(shè)計;</p><p>  (2)采用LED實時顯示控溫時的實際爐溫和設(shè)定爐溫,如將爐溫加熱并控制在60℃;當爐溫工作至設(shè)定溫度時,蜂鳴器每2秒報警一次,綠色LED燈常亮。當爐溫超過設(shè)定溫度5℃,過溫保護電路動作,蜂鳴器常鳴,紅色LED常亮。</p><p>  (3)對其主電路和控制電路設(shè)計相應(yīng)的保護電路,使其安全可靠地工作。</p><p&g

4、t;  (4)具有防干燒功能。</p><p> ?。?)具有定時功能,設(shè)定一段時間自動加溫,如1分鐘。</p><p><b>  元器件清單</b></p><p>  另有剪刀、鑷子等工具</p><p>  表1.1 元器件清單</p><p><b>  電路設(shè)計</b&

5、gt;</p><p><b>  總體設(shè)計方案</b></p><p>  基本方案:利用溫度變送器及溫度檢測電路將電阻爐實際溫度轉(zhuǎn)換成對應(yīng)的數(shù)字信號,送入單片機,進行數(shù)據(jù)處理后,通過顯示器顯示溫度,并判斷是否報警,同時將實際爐溫與設(shè)定溫度比較,根據(jù)相應(yīng)的算法(如PID)計算出控制量,通過控制相應(yīng)的加熱電路實現(xiàn)對爐溫的控制。</p><p>

6、  本系統(tǒng)采用STC89C52作為系統(tǒng)的主控芯片,負責加熱爐的溫度檢測與控制。其主要任務(wù)是:</p><p>  1、讀取DS18B20的溫度數(shù)據(jù);</p><p>  2、控制繼電器通斷,保證溫度達到設(shè)定值并保溫;</p><p>  3、讀取鍵盤設(shè)置的溫度值;</p><p>  4、在LED上顯示設(shè)置的溫度、當前溫度以及恒溫時間;<

7、;/p><p>  5、當溫度到達警戒值的時候控制蜂鳴器報警。</p><p>  圖2.1 總體結(jié)構(gòu)圖</p><p>  由于加熱爐僅能通過通斷電路控制,不具備良好的可控性,且加熱所需的速度和精度要求并不高,這里無需使用PID算法這樣的高速跟蹤算法,只要使用二次線性化的方法控制,就可以很好地實現(xiàn)爐子的加熱和恒溫控制了。</p><p><

8、;b>  硬件電路設(shè)計</b></p><p>  SL-I型51單片機綜合實驗箱</p><p><b>  單片機最小系統(tǒng)</b></p><p>  STC89C52系列單片機是宏晶科技生產(chǎn)的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12

9、倍。內(nèi)部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對電機控制,強干擾場合。</p><p>  最小系統(tǒng)如圖4.1所示:</p><p>  圖3.1 單片機最小系統(tǒng)</p><p><b>  數(shù)碼管顯示模塊</b></p><p>  數(shù)碼管的顯示原理不論是共陰還是共陽,其

10、基本原理是一樣的,都是靠點亮內(nèi)部的LED來發(fā)光。一位數(shù)碼管的引腳是十個,顯示一個8字需要7個小段,另外還有一個小數(shù)點。</p><p>  圖4.2 數(shù)碼管內(nèi)部原理圖</p><p>  實驗時為了保證編程的方便,通常將數(shù)碼管的數(shù)字所對應(yīng)的八位數(shù)字記錄在數(shù)組中,程序中直接使用查表的方法,可以提高程序的效率,也使程序的編寫更加簡單方便。</p><p>  我們實驗箱

11、中的LED數(shù)碼管是四位數(shù)碼管,因此為了控制方便,四個數(shù)碼管的“段選端”是連在一起的,他們的GND或VCC端作為“位選端”來輸入控制信號,這樣單片機就可以通過程序來控制顯示的字符。</p><p>  下圖是實驗箱開發(fā)板中的數(shù)碼管電路圖:</p><p>  STC89C52的Px1口作為段選(任意口)</p><p>  Px2口作為位選(任意口)</p>

12、;<p>  圖4.3 實驗箱數(shù)碼管電路</p><p><b>  按鍵模塊</b></p><p>  彈性按鍵被按下時閉合,松手后自動斷開。單片機檢測按鍵的原理是:單片機的I/O口既可以作為輸出也可作為輸入使用,當檢測按鍵時使用的是它的輸入功能,把按鍵的一端接地,另一端與單片機的某一個I/O口相連,開始時先給I/O口賦一高電平,然后讓單片機不斷地檢

13、測該I/O口是否變成低電平,當按鍵閉合時,即相當于該I/O口通過按鍵與地相連,變成低電平,程序一旦檢測到I/O口變?yōu)榈碗娖絼t說明按鍵被按下,然后執(zhí)行相應(yīng)的指令。</p><p>  圖4.5 按鍵檢測流程圖</p><p>  無論獨立鍵盤還是矩陣鍵盤,單片機檢測其是否被按下的依據(jù)都是一樣的,也就是檢測該鍵對應(yīng)的I/O口是否為低電平。獨立鍵盤有一端固定為低電平,單片機寫程序檢測時比較方便。

14、而矩陣鍵盤兩端都與單片機I/O口連接,因此在檢測時需人為通過單片機I/O口送出低電平。檢測時,先送一列為低電平,其余幾列為高電平,然后立即輪流檢測一次各行是否有低電平,若檢測到某一行為低電平,就可以確定當前被按下的按鍵是哪一行哪一列的,用同樣的方法輪流各列送一次低電平,再輪流檢測一次各行是否變?yōu)榈碗娖?,這樣即可檢測完所有的按鍵。</p><p>  圖4.6 矩陣鍵盤按鍵電路圖</p><

15、p><b>  4.1.4報警模塊</b></p><p>  報警模塊的結(jié)構(gòu)比較簡單,只是一個蜂鳴器模塊,當溫度高于設(shè)定值較大時,單片機在I/O口上輸入一個低電平,就可以使蜂鳴器報警。</p><p><b>  圖4.7報警電路</b></p><p><b>  4.2溫度采集電路</b>

16、</p><p>  DS18B20溫度傳感器是將半導體溫敏器件、A/D轉(zhuǎn)換器、存儲器等做在一個很小的集成電路芯片上。測溫范圍為-55℃~+125℃ ,測溫精度為士0.5℃;溫度轉(zhuǎn)換精度9~12位可變,能夠直接將溫度轉(zhuǎn)換值以16位二進制數(shù)碼的方式串行輸出;12位精度轉(zhuǎn)換的最大時間為750ms;可以通過數(shù)據(jù)線供電,具有超低功耗工作方式。</p><p><b>  圖4.8<

17、/b></p><p>  DS18B20溫度傳感器只有三根外引線:單線數(shù)據(jù)傳輸總線端口DQ ,外供電源線VDD,共用地線GND。DS18B20有兩種供電方式:一種為數(shù)據(jù)線供電方式,此時VDD接地,它是通過內(nèi)部電容在空閑時從數(shù)據(jù)線獲取能量,來完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時間較長。這種情況下,用單片機的一個I/O口來完成對DS18B20總線的上拉。另一種是外部供電方式(VDD接+5V),相應(yīng)的完成溫度測

18、量的時間較短。</p><p>  在本設(shè)計中采用外部供電方式實現(xiàn)DS18B20傳感器與單片機的連接,其接口電路如圖4所示。</p><p>  4.3繼電器電路設(shè)計</p><p>  本系統(tǒng)采用單相固態(tài)繼電器SSR/1P-10A,當單片機給繼電器供5V電壓時,繼電器導通??梢酝ㄟ^這個原理將加熱爐的電源線火線分別接入繼電器兩端,所以單片機的I/O口供給低電平,繼電

19、器就可以導通,這樣就可以控制加熱爐的加熱了。</p><p><b>  如圖所示:</b></p><p>  圖4.14 繼電器結(jié)構(gòu)</p><p>  由于考慮到單片機引腳的驅(qū)動能力可能不足,因此制作了驅(qū)動電路,放大驅(qū)動電流,并在繼電器兩端加上續(xù)流二極管保證加熱時間夠長。</p><p><b>  

20、電路如下:</b></p><p>  圖4.15 驅(qū)動電路</p><p><b>  軟件程序設(shè)計</b></p><p><b>  /*</b></p><p>  2014年1月6日 </p><p>  課程設(shè)計 </p&g

21、t;<p>  內(nèi)容:溫度控制系統(tǒng)</p><p>  硬件:5110 + DS18B20 + 鍵盤*/</p><p>  #include <reg52.h></p><p>  #include <stdio.h></p><p>  #define uchar unsigned char<

22、;/p><p>  #define uint unsigned int</p><p>  sbit ds = P2^5; /*溫度傳感器信號線*/</p><p>  sbit beep = P2^7; /*蜂鳴器*/</p><p>  sbit jdq = P2^6;/*繼電器*/</p><

23、p>  sbit led_green = P2^4;/*綠燈*/</p><p>  sbit led_red = P2^2; /*紅燈*/</p><p>  uint temp;/*讀取的溫度值*/</p><p>  float f_temp;</p><p>  uint warn_l = 300;/*

24、低溫30*/</p><p>  uint warn_h1 = 600;/*高溫60*/</p><p>  uint warn_h2 = 650;/*高溫65*/</p><p>  uchar warn_flag = 0;/*超過60報警標志*/</p><p>  uchar time = 0;/*time計數(shù)器*/

25、</p><p>  uchar time_1 = 0;/*time計數(shù)器1*/</p><p>  uint time_2 = 0;/*time計數(shù)器2*/</p><p>  uint time_3 = 0;/*time計數(shù)器3*/</p><p>  uchar dis_page = 0;/*數(shù)碼管頁面*/</

26、p><p>  uchar key_num = 0;/*鍵盤值*/</p><p>  uint working_time = 0;/*預(yù)設(shè)加熱時間*/</p><p>  uchar heating_flag = 0;/*開始加熱標志*/</p><p>  uchar key_input_temp;/*鍵盤輸入TEMP值*/<

27、;/p><p>  uchar set_temp = 30;/*設(shè)置溫度 初始化為30度*/</p><p>  uchar keep_flag = 0;/*保持設(shè)置溫度標志位*/</p><p>  unsigned char code table[]=</p><p><b>  {</b></p>&

28、lt;p>  0x3f, 0x06, 0x5b, 0x4f, 0x66, /* 不帶點的編碼 */</p><p>  0x6d, 0x7d, 0x07, 0x7f, 0x6f,</p><p>  0xbf, 0x86, 0xdb, 0xcf, 0xe6, /* 帶小數(shù)點的編碼 */</p><p>  0xed, 0xfd, 0x87, 0xff, 0xe

29、f</p><p><b>  };</b></p><p>  /*****************DS18B20部分********************/</p><p>  void delay(uint z)/*延時函數(shù) */</p><p><b>  { </b></p&g

30、t;<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><p>  void dsreset(void) /

31、* 18B20復位,初始化函數(shù) */</p><p><b>  {</b></p><p><b>  uint i;</b></p><p><b>  ds = 0;</b></p><p><b>  i = 103;</b></p>

32、<p>  while(i > 0) i --;</p><p><b>  ds = 1;</b></p><p><b>  i = 4;</b></p><p>  while(i > 0) i --;</p><p><b>  }</b><

33、;/p><p>  bit tempreadbit(void) /* 讀1位函數(shù) */</p><p><b>  {</b></p><p><b>  uint i;</b></p><p><b>  bit dat;</b></p><p>&l

34、t;b>  ds = 0;</b></p><p>  i ++; /* i++ 起延時作用 */</p><p><b>  ds = 1;</b></p><p>  i ++;i ++;</p><p><b>  dat = ds;</b></

35、p><p><b>  i = 8;</b></p><p>  while(i > 0) i --;</p><p>  return (dat);</p><p><b>  }</b></p><p>  uchar tempread(void) /* 讀1個字

36、節(jié) */</p><p><b>  {</b></p><p>  uchar i,j,dat;</p><p><b>  dat=0;</b></p><p>  for(i = 1;i <= 8;i ++)</p><p><b>  {</b&

37、gt;</p><p>  j = tempreadbit();</p><p>  dat=(j << 7) | (dat >> 1); /*讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里*/</p><p><b>  }</b></p><p>  return(dat);<

38、/p><p><b>  }</b></p><p>  void tempwritebyte(uchar dat)/*向18B20寫一個字節(jié)數(shù)據(jù)*/</p><p><b>  {</b></p><p><b>  uint i;</b></p><p>

39、;<b>  uchar j;</b></p><p>  bit testb;</p><p>  for(j = 1;j <= 8;j ++)</p><p><b>  {</b></p><p>  testb = dat & 0x01;</p><p>

40、;  dat = dat >> 1;</p><p>  if(testb) //寫 1</p><p><b>  {</b></p><p><b>  ds = 0;</b></p><p>  i ++;i ++;</p><p><b&g

41、t;  ds = 1;</b></p><p><b>  i = 8;</b></p><p>  while(i > 0)i --;</p><p><b>  }</b></p><p><b>  else</b></p><p&

42、gt;<b>  {</b></p><p>  ds = 0; //寫 0</p><p><b>  i = 8; </b></p><p>  while(i > 0)i --;</p><p><b>  ds = 1;</b></p>

43、<p>  i ++;i ++;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void tempchange(void) /*DS18B20 開始獲取溫度并轉(zhuǎn)換*/

44、</p><p><b>  {</b></p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc); // 寫跳過讀ROM指令</p><p>  tempwritebyte

45、(0x44); // 寫溫度轉(zhuǎn)換指令</p><p><b>  }</b></p><p>  uint get_temp() /*讀取寄存器中存儲的溫度數(shù)據(jù)*/</p><p><b>  {</b></p><p>  uchar a,b;</p><p&

46、gt;  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc);</p><p>  tempwritebyte(0xbe);</p><p>  a = tempread(); //讀低8位</p><

47、;p>  b = tempread(); //讀高8位</p><p><b>  temp = b;</b></p><p>  temp <<= 8; //兩個字節(jié)組合為1個字</p><p>  temp = temp | a;</p><p>  f_tem

48、p = temp * 0.0625; //溫度在寄存器中為12位 分辨率位0.0625°</p><p>  temp = f_temp * 10 + 0.5; //乘以10表示小數(shù)點后面只取1位,加0.5是四舍五入</p><p>  f_temp = f_temp + 0.05; </p><p>  return temp;

49、 //temp是整型</p><p><b>  }</b></p><p>  /*******************顯示部分*****I****************/</p><p>  void display(uchar num, uchar dat) /*顯示字符*/</p><p><b&

50、gt;  {</b></p><p><b>  uchar i;</b></p><p>  P0 = ~table[dat]; //數(shù)碼管段選</p><p><b>  i = 0xff;</b></p><p>  i = i & ( ~(0x01 << n

51、um));</p><p>  P1 = i; //數(shù)碼管位選</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  void display_heating()/*顯示字符"H"*/</p&

52、gt;<p><b>  {</b></p><p><b>  uchar i;</b></p><p>  P0 = 0x89;</p><p><b>  i = 0xff;</b></p><p>  i = i & (~0x01);</p&

53、gt;<p><b>  P1 = i;</b></p><p>  delay(1);</p><p><b>  }</b></p><p>  void dis_temp(uint t)/*顯示實時溫度*/</p><p><b>  {</b>

54、</p><p><b>  uchar i;</b></p><p>  i = t / 100;</p><p>  display(1, i);</p><p>  i = t % 100 / 10;</p><p>  display(2, i + 10);</p><

55、p>  i = t % 100 % 10;</p><p>  display(3, i);</p><p><b>  }</b></p><p>  void dis_working(void)/*顯示定時加熱的時間*/</p><p><b>  {</b></p>

56、<p><b>  uchar i ;</b></p><p>  i = working_time / 100;</p><p>  display(1, i);</p><p>  i = working_time % 100 / 10;</p><p>  display(2, i);</p&g

57、t;<p>  i = working_time % 100 % 10;</p><p>  display(3, i);</p><p><b>  }</b></p><p>  void dis_set_temp(void)</p><p><b>  {</b></p&g

58、t;<p><b>  uchar i ;</b></p><p>  i = set_temp / 100;</p><p>  display(1, i);</p><p>  i = set_temp % 100 / 10;</p><p>  display(2, i);</p>&l

59、t;p>  i = set_temp % 100 % 10;</p><p>  display(3, i);</p><p><b>  }</b></p><p>  void deal(uint t)/*溫度處理函數(shù)*/</p><p><b>  {</b></p&g

60、t;<p>  warn_h1=set_temp*10;//將當前設(shè)定的溫度賦給報警溫度</p><p>  warn_h2=(set_temp+5)*10;</p><p>  if(( t > warn_h1) && ( t < warn_h2 )) /*大于設(shè)置溫度小于設(shè)置溫度+5度*/</p><p><b&g

61、t;  {</b></p><p>  led_green = 0;</p><p>  led_red = 1;</p><p>  warn_flag = 1;/*報警標志 */</p><p><b>  }</b></p><p>  else if(t >= w

62、arn_h2)/*大于設(shè)置溫度+5度 */</p><p><b>  {</b></p><p>  led_red = 0;</p><p>  led_green = 1;</p><p><b>  beep = 0;</b></p><p>  warn_f

63、lag = 0;/*消除報警標志*/</p><p><b>  }</b></p><p>  else/*小于設(shè)置溫度*/</p><p><b>  {</b></p><p>  led_green = 1;</p><p>  led_red

64、 = 1;</p><p><b>  beep = 1;</b></p><p>  warn_flag = 0;/*消除報警標志*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  void

65、 init_com(void)/*定時器初始化*/</p><p><b>  {</b></p><p>  TMOD = 0x01;</p><p>  TH0 = (65536 - 39000) / 256;</p><p>  TL1 = (65536 - 39000) % 256;</p>

66、<p><b>  EA = 1;</b></p><p><b>  ET0 = 1;</b></p><p><b>  TR0 = 1;</b></p><p><b>  }</b></p><p>  uchar test_key

67、input(void)/*檢測按鍵輸入*/</p><p><b>  {</b></p><p>  uchar key_temp;</p><p>  key_input_temp = ~P3 & 0xf0;</p><p>  if(key_input_temp != 0x00)</p>

68、<p><b>  {</b></p><p>  delay(30);</p><p>  if((key_input_temp) != 0x00)</p><p><b>  {</b></p><p>  switch(key_input_temp)</p><

69、p><b>  {</b></p><p>  case 0x10 :key_temp = 1; break;</p><p>  case 0x20 : key_temp = 2; break;</p><p>  case 0x40 :key_temp = 3; break;</p><p>  case

70、0x80 : key_temp = 4; break;</p><p>  default:break;</p><p><b>  }</b></p><p>  return key_temp;</p><p><b>  }</b></p><p><b>

71、  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void display_page(void)/*捕捉按鍵輸入 定義顯示的dis_page*/</p><p><b>  {</b

72、></p><p>  key_num = test_keyinput();/*掃描鍵盤 獨立鍵盤按下為低電平*/</p><p>  switch(key_num)</p><p><b>  {</b></p><p>  case 0:break;</p><p>  case

73、 1: dis_page ++; //進入設(shè)置界面</p><p>  if(dis_page > 2)</p><p>  dis_page = 0;/*預(yù)留三個頁面*/</p><p>  if(heating_flag == 1) /*加熱過程中按1號鍵停止加熱*/</p><p><b>  {&l

74、t;/b></p><p>  heating_flag =0;</p><p><b>  }</b></p><p>  keep_flag = 0;/*取消保持溫度標志位*/</p><p>  heating_flag = 0;/*取消加熱溫度標志位*/</p><p><

75、;b>  break;</b></p><p>  case 2: if(dis_page == 1)/*最大加熱時間600s /////////////// 設(shè)置加熱時間 可以不用設(shè)置*/</p><p><b>  {</b></p><p>  if(working_time < 600)worki

76、ng_time ++;</p><p>  elseworking_time = 600;</p><p><b>  }</b></p><p>  else if(dis_page == 2)///////////////////////////////////設(shè)置加熱溫度</p><p><b>

77、;  {</b></p><p>  if(set_temp < 60)set_temp ++;</p><p>  else set_temp = 60;</p><p><b>  }</b></p><p><b>  break;</b></p>

78、<p>  case 3: if(dis_page == 1)</p><p><b>  {</b></p><p>  if(working_time > 1)working_time --;</p><p>  elseworking_time = 1;</p><p><b>

79、;  }</b></p><p>  else if(dis_page == 2)</p><p><b>  {</b></p><p>  if(set_temp > 30)set_temp --;</p><p>  else set_temp = 30;</p>&l

80、t;p><b>  }</b></p><p><b>  break;</b></p><p>  case 4:if(dis_page == 1)/*按4號鍵開始加熱*/</p><p><b>  {</b></p><p>  heating_flag =

81、1;</p><p><b>  }</b></p><p>  else if(dis_page == 2)</p><p><b>  {</b></p><p>  keep_flag = 1;/*按4號鍵開始加熱 顯示當前溫度*/</p><p><b>

82、  }</b></p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void ma

83、in()</p><p><b>  {</b></p><p>  init_com();/*定時器初始化50ms中斷*/</p><p>  jdq = 1; /*關(guān)繼電器*/</p><p>  beep = 1; /*關(guān)蜂鳴器*/</p><p><b>  while(1)

84、</b></p><p><b>  {</b></p><p>  switch(dis_page)/*顯示的頁面*/</p><p><b>  {</b></p><p><b>  case 0:</b></p><p>

85、  tempchange();/*轉(zhuǎn)換溫度*/</p><p>  dis_temp(get_temp());/*顯示溫度*/</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  dis_working();

86、/*顯示設(shè)置時間*/</p><p><b>  break;</b></p><p><b>  case 2: </b></p><p>  tempchange();/*轉(zhuǎn)化溫度*/</p><p>  if( keep_flag )</p><p>  dis_

87、temp(get_temp());/*顯示溫度*/</p><p><b>  else </b></p><p>  dis_set_temp();/*顯示設(shè)置溫度*/</p><p>  display_heating();/*顯示“H”*/</p><p><b>  break;</b

88、></p><p>  default:break;</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  void Timer0_ISR(void) in

89、terrupt 1 /*50ms中斷服務(wù)程序*/</p><p><b>  {</b></p><p>  TH0 = (65536 - 39000) / 256;</p><p>  TL0 = (65536 - 39000) % 256;/*重裝初值*/</p><p><b>  tim

90、e ++;</b></p><p>  time_1 ++;</p><p>  if(time_1 > 5) /*250ms任務(wù)每秒鐘轉(zhuǎn)換4次*/</p><p><b>  {</b></p><p>  time_1 = 0;</p><p>  displa

91、y_page();</p><p>  deal(temp);</p><p>  time_2 ++;</p><p>  if(time_2 > 4) /*1S任務(wù)*/</p><p><b>  {</b></p><p>  deal(temp);</p>&

92、lt;p>  time_2 = 0;</p><p>  time_3 ++;</p><p>  if(heating_flag == 1 && working_time != 0)/*定時加熱狀態(tài)下 時間不為0繼續(xù)加熱*/</p><p><b>  {</b></p><p>  wo

93、rking_time --;</p><p>  jdq = 0;/*繼電器加熱*/</p><p>  if( working_time ==0)</p><p><b>  {</b></p><p>  jdq = 1;/*繼電器停止*/</p><p>  heating_f

94、lag = 0;/*繼電器標志位歸0*/</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(dis_page == 2) /*控溫狀態(tài)下*/</p>&

95、lt;p><b>  {</b></p><p>  if(get_temp() < (set_temp* 10)) </p><p><b>  jdq = 0;</b></p><p>  else /*超過set_temp斷電*/</p><p><b&

96、gt;  jdq =1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(warn_flag)/*報警2s*/</p><p><b>  {</b></p><p>  

97、if((time_3 % 3) == 1)</p><p>  beep = ~beep;</p><p><b>  else </b></p><p><b>  beep = 1;</b></p><p><b>  }</b></p><p>&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論