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

下載本文檔

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

文檔簡介

1、<p>  //編譯器:AVRStudio</p><p><b>  頭文件部分:</b></p><p>  #include <avr/io.h></p><p>  #define uchar unsigned char</p><p>  #define uchar unsigned ch

2、ar</p><p>  #define uint unsigned int</p><p>  void convert(float data); </p><p>  void init_1820(void); </p><p>  void write_1820(uchar x); </p><p>  uc

3、har read_1820(void);</p><p>  float read_temperature(void);</p><p>  char key_scan();</p><p>  int lcd_bz();</p><p>  void lcd_wcmd(uchar cmd);</p><p>  v

4、oid lcd_pos(uchar pos);</p><p>  void lcd_wdat(uchar dat); </p><p>  void lcd_wstr(unsigned char pos,unsigned char *q);</p><p>  void lcd_init();</p><p>  void avr_init

5、();</p><p>  void delay(int us);</p><p>  void delayl(int ms);</p><p>  void delay1(int ms);</p><p><b>  按鍵程序</b></p><p>  #include<avr/io.h

6、></p><p>  #include"headfile.h"</p><p>  //............................按鍵.................................</p><p>  char key_scan()</p><p><b>  {<

7、/b></p><p>  int temp=0,temp1,temp2;</p><p><b>  char key;</b></p><p>  DDRA=0xf0;</p><p>  PORTA&=0x0f;</p><p>  delay1(3);</p>

8、<p>  temp1=PINA&0x0f;</p><p>  if(temp1!=0x0f)</p><p><b>  { </b></p><p>  delay1(80);</p><p>  temp1=PINA&0x0f; </p><p> 

9、 if(temp1!=0x0f)</p><p><b>  { </b></p><p>  DDRA=0x0f;</p><p>  PORTA&=0xf0;</p><p>  delay1(5);</p><p>  temp2=PINA&0xf0;</p>

10、<p>  if(temp2!=0xf0)</p><p><b>  { </b></p><p>  temp=temp1+temp2;</p><p><b>  }</b></p><p><b>  }</b></p><p><

11、;b>  }</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xee:key='/';break;//7</p><p>  case 0xde:key='*';break;//8</p&

12、gt;<p>  case 0xbe:key='-';break;//9</p><p>  case 0x7e:key='+';break;//+</p><p>  case 0xed:key='.';break;//4</p><p>  case 0xdd:key='9';brea

13、k;//5</p><p>  case 0xbd:key='6';break;//6</p><p>  case 0x7d:key='3';break;//-</p><p>  case 0xeb:key='=';break;//1</p><p>  case 0xdb:key='

14、;8';break;//2</p><p>  case 0xbb:key='5';break;//3</p><p>  case 0x7b:key='2';break;//*</p><p>  case 0xe7:key='0';break;//0</p><p>  case 0

15、xd7:key='7';break;//.</p><p>  case 0xb7:key='4';break;//=</p><p>  case 0x77:key='1';break;///</p><p>  default :key=0;break;</p><p><b> 

16、 }</b></p><p>  return key;</p><p><b>  }</b></p><p><b>  1602顯示程序</b></p><p>  #include <avr/io.h></p><p>  //#include

17、<intrinsics.h></p><p>  #define ep_1 (PORTB|=0x04)</p><p>  #define ep_0 (PORTB&=~0x04)</p><p>  #define rs_1 (PORTB|=0x01)</p><p>  #define rs_0 (PORTB&=

18、~0x01)</p><p>  #define rw_1 (PORTB|=0x02)</p><p>  #define rw_0 (PORTB&=~0x02)</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p>

19、<p>  //.....................LCD............................</p><p>  //.............................. 測試LCD忙碌狀態(tài)..........................................................................................

20、...............</p><p>  int lcd_bz()</p><p><b>  {</b></p><p>  DDRC&=~0x80; </p><p>  int result=0;</p><p><b>  rs_0;</b&

21、gt;</p><p><b>  rw_1;</b></p><p><b>  ep_1;</b></p><p>  result =(result||(PINC & 0x80));</p><p><b>  ep_0;</b></p><p

22、>  DDRC=0xff;</p><p>  return result; </p><p><b>  }</b></p><p>  //................................. 寫入指令數(shù)據(jù)到LCD......................................................

23、........................................................................</p><p>  void lcd_wcmd(uchar cmd)</p><p><b>  { </b></p><p>  while(lcd_bz());</p>

24、<p><b>  rs_0;</b></p><p><b>  rw_0;</b></p><p><b>  ep_0;</b></p><p>  PORTC= cmd;</p><p><b>  ep_1;</b></p>

25、<p><b>  ep_0; </b></p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  //..........................設(shè)定顯示位置...............................

26、.........................................</p><p>  void lcd_pos(uchar pos)</p><p><b>  { </b></p><p>  lcd_wcmd(pos | 0x80);</p><p><b>  delay(5

27、);</b></p><p><b>  }</b></p><p>  //...........................寫入字符顯示數(shù)據(jù)到LCD.........................................................</p><p>  void lcd_wdat(uchar d

28、at) </p><p><b>  { </b></p><p>  while(lcd_bz());</p><p><b>  rs_1;</b></p><p><b>  rw_0;</b></p><p><b>  e

29、p_0;</b></p><p>  PORTC=dat;</p><p><b>  ep_1;</b></p><p><b>  ep_0; </b></p><p><b>  }</b></p><p>  //..........

30、...............寫入字符顯示數(shù)組到LCD.....................................</p><p>  void lcd_wstr(unsigned char pos,unsigned char *q)</p><p><b>  {</b></p><p>  //lcd_wcmd(0x01);

31、//清屏</p><p>  //delay(10);</p><p>  unsigned char i=0x00;</p><p>  lcd_pos(pos);</p><p>  while(*q!='\0')</p><p><b>  {</b></p>

32、<p>  lcd_wdat(*q);</p><p><b>  q++;</b></p><p><b>  i++;</b></p><p>  if(i==(0x0F-pos+1))</p><p>  lcd_pos(0x40);</p><p>  de

33、lay(10);</p><p><b>  }</b></p><p><b>  }/**/</b></p><p>  //........................LCD初始化設(shè)定.............................................</p><p>

34、;  void lcd_init()</p><p><b>  { </b></p><p>  lcd_wcmd(0x38); //function set</p><p>  delay(10);</p><p>  lcd_wcmd(0x38);

35、 //function set</p><p>  delay(10);</p><p>  lcd_wcmd(0x0c); //display on/off</p><p>  delay(10);</p><p>  lcd_wcmd(0x06);

36、 //entry mode set</p><p>  delay(10);</p><p>  lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容</p><p>  delay(10);</p><p><b>  }</b>&l

37、t;/p><p>  //........................avr初始化.................//</p><p>  void avr_init()</p><p><b>  {</b></p><p>  DDRC=0xFF;</p><p>  DDRB=0x07;&

38、lt;/p><p><b>  }</b></p><p><b>  18b20程序</b></p><p>  #include <avr/io.h></p><p>  #define uchar unsigned char</p><p>  #define

39、uchar unsigned char</p><p>  #define uint unsigned int</p><p>  //------------------------//</p><p>  //.................convert:data display.............</p><p>  voi

40、d convert(float data) //實數(shù)在液晶上顯示</p><p><b>  { </b></p><p><b>  int i=0;</b></p><p>  int data1=(int)data;</p><p>  uchar a

41、rray1[5]={0},array2[5]={0};</p><p>  lcd_wcmd(0x01); </p><p>  // lcd_wcmd(0x00);</p><p>  lcd_pos(0x0B);</p><p>  // </p>&l

42、t;p>  if(data1==0)</p><p><b>  {</b></p><p>  array1[0]=0;</p><p>  lcd_wdat(48);</p><p>  // delay1(5);</p><p><b>  }</b></p

43、><p><b>  else</b></p><p>  while(data1!=0)</p><p><b>  {</b></p><p>  array1[i]=data1%10;</p><p>  data1=data1/10;</p><p&g

44、t;<b>  i++;</b></p><p><b>  } </b></p><p>  for(--i;i>=0;i--)</p><p><b>  {</b></p><p>  lcd_wdat(array1[i]+48);</p><

45、p>  // delay1(5);</p><p>  } //顯示小數(shù)點前面</p><p>  lcd_wdat(0x2E); //顯示小數(shù)點</p><p>  for(i=0;i<2;i++) //顯示小數(shù)部分前兩

46、位</p><p><b>  { </b></p><p>  data=data*10;</p><p>  array2[i]=((int)data)%10;</p><p>  lcd_wdat(array2[i]+48); </p><p>  //delay1(5);<

47、/p><p><b>  }</b></p><p><b>  }</b></p><p>  //...................18B20......................</p><p>  void init_1820(void) </p><p>&l

48、t;b>  { </b></p><p>  int Flag_1820Error;</p><p><b>  uchar i;</b></p><p><b>  uint j=0;</b></p><p>  PORTD|=(1<<7);//PORTC|=(1&l

49、t;<7); //"1"</p><p>  PORTD&=~(1<<7);//PORTC&=~(1<<7); //"0"</p><p>  for(i=0;i<8;i++)delay(180);//delay_60us();//480us以上 </p><p>  PO

50、RTD|=(1<<7);//PORTC|=(1<<7); //"1"</p><p>  DDRD&=~(1<<7);//DDRC&=~(1<<7); //"PINC7 is INPUT"</p><p>  delay(40);//delay_15us(); //15~60

51、us</p><p>  delay(40);//delay_15us(); </p><p>  Flag_1820Error=0; </p><p>  while(PIND&(1<<7))//while(PINC&(1<<7)) </p><p>  { delay(180);//delay_6

52、0us();</p><p><b>  j++;</b></p><p>  if(j>=18000){Flag_1820Error=1;break;}</p><p><b>  } </b></p><p>  DDRD|=(1<<7);//DDRC|=(1<<

53、;7); //PORTC7 is OUTPUT</p><p>  PORTD|=(1<<7);//PORTC|=(1<<7); //"1"</p><p>  for(i=0;i<4;i++)delay(180);//delay_60us(); //240us </p><p><b>  } &l

54、t;/b></p><p>  /********************************/</p><p>  /********************************/</p><p>  void write_1820(uchar x) </p><p><b>  { </b><

55、;/p><p><b>  uchar m; </b></p><p>  for(m=0;m<8;m++) </p><p><b>  { </b></p><p>  if(x&(1<<m)) //寫數(shù)據(jù),從低位開始 </p><p><

56、;b>  {</b></p><p>  PORTD&=~(1<<7);//PORTC&=~(1<<7);delay_5us(); //"0",5us</p><p>  PORTD|=(1<<7);//PORTC|=(1<<7); //write"1"</p&g

57、t;<p>  delay(40);//delay_15us(); //15~45us</p><p>  delay(40);//delay_15us();</p><p>  delay(40);//delay_15us();</p><p><b>  }</b></p><p><b> 

58、 else </b></p><p><b>  {</b></p><p>  PORTD&=~(1<<7);//PORTC&=~(1<<7);delay_15us();//"0",15us </p><p>  delay(40);//delay_15us(); //w

59、rite"0"</p><p>  delay(40); //delay_15us(); //15~45us</p><p>  delay(40);//delay_15us();</p><p>  PORTD|=(1<<7);//PORTC|=(1<<7); //"1"</p>&l

60、t;p><b>  }</b></p><p><b>  } </b></p><p>  PORTD|=(1<<7);// PORTC|=(1<<7); //"1"</p><p><b>  } </b></p><p>

61、  /*******************************/</p><p>  uchar read_1820(void) </p><p><b>  { </b></p><p>  uchar temp,k,n; </p><p><b>  temp=0; </b><

62、;/p><p>  for(n=0;n<8;n++) </p><p><b>  { </b></p><p>  PORTD&=~(1<<7);//PORTC&=~(1<<7); //"0"</p><p>  delay(13);//delay_5us

63、(); </p><p>  PORTD|=(1<<7);//PORTC|=(1<<7); //"1"</p><p>  delay(13);//delay_5us();</p><p>  DDRD&=~(1<<7);//DDRC&=~(1<<7); //&qu

64、ot;PINC7 is INPUT"</p><p>  k=(PIND&(1<<7));//k=(PINC&(1<<7)); //讀數(shù)據(jù),從低位開始 </p><p><b>  if(k) </b></p><p>  temp|=(1<<n); //read"1&

65、quot;</p><p><b>  else </b></p><p>  temp&=~(1<<n); //read"0"</p><p>  delay(40);//delay_15us(); //45us</p><p>  delay(40);//delay

66、_15us();</p><p>  delay(40);//delay_15us(); </p><p>  DDRD|=(1<<7);//DDRC|=(1<<7); //PORTC7 is OUTPUT</p><p><b>  } </b></p><p>  return

67、(temp); </p><p><b>  } </b></p><p>  /*************************************/</p><p>  float read_temperature(void)</p><p><b>  { </b></p&

68、gt;<p>  float temp;////////////</p><p>  uchar teml=0,temh=0;</p><p>  unsigned long t=0;</p><p>  init_1820(); //復(fù)位18b20 </p><p>  write_1820(0xcc); /

69、/ 發(fā)出轉(zhuǎn)換命令 </p><p>  write_1820(0x44); </p><p>  //Delay_nms(100);</p><p>  init_1820(); </p><p>  write_1820(0xcc); //發(fā)出讀命令 </p><p>  write_1820(0xbe); <

70、;/p><p>  teml=read_1820(); //讀數(shù)據(jù)byte1 </p><p>  temh=read_1820(); //byte2</p><p><b>  t=temh;</b></p><p><b>  t=t<<8;</b></p><p

71、><b>  t=t|teml;</b></p><p>  temp=t*0.0625*260/286;</p><p>  return(temp);</p><p>  /*if(temh&0xf8)sign=0;</p><p>  else sign=1;</p><p>

72、  if(sign==0){temh=255-temh;teml=255-teml;}</p><p>  temh=temh<<4;</p><p>  temh|=(teml&0xf0)>>4;</p><p>  teml=teml&0x0f;</p><p>  teml=(teml*10)/1

73、6;</p><p>  tempval=temh;e[0]=tempval/100;</p><p>  tempval=temh;e[1]=(tempval/10)%10;</p><p>  tempval=temh;e[2]=tempval%10;</p><p>  tempval=teml;e[3]=tempval;*/</

74、p><p><b>  } </b></p><p><b>  Main程序 </b></p><p>  #include<avr/io.h></p><p>  #include"headfile.h"</p><p>  #include&

75、lt;ctype.h></p><p>  #include<stdio.h></p><p>  #include<math.h></p><p>  #include<string.h></p><p>  #include<avr/interrupt.h></p>&l

76、t;p>  unsigned char key[5]; //按鍵數(shù)組</p><p>  float keyvalue; //按鍵值</p><p>  float actual; //溫度值</p><p>  unsigned int flag=0;//判斷按鍵標(biāo)志</p><p>  unsigned char d

77、is1[]={"SET"};</p><p>  unsigned char dis2[]={"NOW"};</p><p>  unsigned char dis3[]={"00:00"};</p><p>  unsigned int h=0; //定時1S計時10000次</p>&

78、lt;p>  unsigned count=0; //計算動態(tài)時間</p><p>  float PWM=0;</p><p>  float PWM1=0;</p><p>  float Error1; //誤差</p><p>  unsigned int maxminflag=0;//判斷達(dá)到動態(tài)平衡標(biāo)志</p&

79、gt;<p>  unsigned char time[7];//存儲動態(tài)時間</p><p>  struct PID</p><p><b>  {</b></p><p>  float SetPoint; // 設(shè)定目標(biāo) Desired Value</p><p>  float Proportio

80、n; // 比例常數(shù) Proportional Const</p><p>  float Integral; // 積分常數(shù) Integral Const</p><p>  float Derivative; // 微分常數(shù) Derivative Const</p><p>  float LastError; // Error1[‐1]</p>

81、<p>  float PrevError; // Error1[‐2]</p><p><b>  };</b></p><p>  struct PID spid; // PID Control Structure</p><p>  struct PID *pp;</p><p>  /*********

82、******PID 結(jié)構(gòu)體初始化*****/</p><p>  void PIDInit (struct PID *pp)</p><p><b>  {</b></p><p>  memset(pp,0,sizeof(struct PID));</p><p><b>  }</b></

83、p><p>  /*****************PID 參數(shù)設(shè)置******************/</p><p>  void setPID(float a,float b,float c)</p><p><b>  {</b></p><p>  pp->Proportion=a;</p>

84、<p>  pp->Integral=b;</p><p>  pp->Derivative=c;</p><p><b>  }</b></p><p>  /***********PID 計算部分***************************//////////////</p><p>

85、  float PIDCalc( struct PID *pp, float NextPoint )</p><p><b>  {</b></p><p>  float dError;</p><p>  unsigned int a;</p><p>  Error1 = pp->SetPoint-NextP

86、oint; // 當(dāng)前偏差</p><p>  if(fabs(Error1)<10) a=1;</p><p><b>  else a=0;</b></p><p>  dError =pp->Proportion*(Error1-pp->LastError) </p><p>  +a*pp-

87、>Integral*pp->LastError</p><p>  +a*pp->Derivative*(Error1-2*pp->LastError+pp->PrevError);</p><p>  /*dError=pp->Proportion*Error1</p><p>  -pp->Integral*pp->

88、;LastError</p><p>  +pp->Derivative*pp->PrevError;</p><p>  if(fabs(Error1)<=14)</p><p><b>  a=1;</b></p><p><b>  else</b></p>&

89、lt;p><b>  a=0;</b></p><p>  dError =pp->Proportion*(Error1-pp->LastError)+a*pp->Integral*pp->LastError+</p><p>  pp->Derivative*(Error1-2*pp->LastError+pp->Pr

90、evError);*/</p><p>  pp->PrevError = pp->LastError;</p><p>  pp->LastError = Error1;</p><p>  return (dError); // 微分項</p><p><b>  }</b></p>

91、<p>  /*********************PWM 占空比設(shè)置/**********************/////////</p><p>  void setPWM(float dError)</p><p><b>  {</b></p><p>  if(fabs(Error1)<10)PWM+=4*dEr

92、ror;</p><p>  else PWM+=6*dError;</p><p>  //PWM+=6*dError;</p><p>  PWM1=1023-PWM;</p><p>  if(PWM1<10)PWM1=10;</p><p>  else if(PWM1>1020)PWM1=1020

93、;</p><p>  OCR1BH=(int)(PWM1/256);</p><p>  OCR1BL=(int)PWM1%256;</p><p><b>  }</b></p><p>  void factor(void) //確認(rèn)按鍵值</p><p><b&g

94、t;  { </b></p><p>  unsigned char tmp;</p><p><b>  int i=0;</b></p><p>  int temp1,temp2;</p><p><b>  flag=0;</b></p><p>  f

95、loat key1=0,key2=0;</p><p>  while(!flag)</p><p><b>  {</b></p><p>  while(!(tmp=key_scan()));</p><p>  if(tmp=='*') flag=1;</p><p>  e

96、lse if(tmp=='=')flag=2;</p><p><b>  else</b></p><p><b>  {</b></p><p>  key[i]=tmp;</p><p>  lcd_pos(0x03+i);</p><p>  lcd_

97、wdat(key[i]);</p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  key[i]='\0';</p><p>  keyvalue=

98、(key[0]-48)*10+(key[1]-48)+(key[3]-48)*0.1+(key[4]-48)*0.01+0.5;//0.5是矯正</p><p>  /* for(i=0;i<5;i++)</p><p><b>  {</b></p><p>  if(key[i]=='.')temp1=i;if(key

99、[i]=='\0')temp2=i;</p><p><b>  }</b></p><p>  //if(temp1>=0&&temp1<=4)</p><p>  for(i=temp</p><p>  else 1-1;i>=0;i--)</p>&

100、lt;p>  key1=key1+(key[i]-48)*pow(10,temp1-1-i);//10^(temp1-1-i)</p><p>  for(i=temp1+1;i<temp2;i++)</p><p>  key2=key2+(key[i]-48)*pow(10,temp1-i);//10^(temp1-i)</p><p>  keyv

101、alue=key1+key2;*/</p><p>  pp->SetPoint=keyvalue;</p><p><b>  }</b></p><p>  /************從DS18B20 獲得實際溫度值并設(shè)置顯示位置************************/</p><p>  void

102、get_actual_temperature()</p><p><b>  {</b></p><p>  lcd_pos(0x0c);</p><p>  actual=read_temperature() ;//獲取實測溫度值</p><p><b>  int i=8;</b></p&

103、gt;<p>  for(;i<16;i++)</p><p>  lcd_wdat(0x20);</p><p>  convert(actual);</p><p><b>  }</b></p><p>  void pwm_init() //pwm</p><p>

104、<b>  {</b></p><p>  DDRD|=0x10; //D4輸出PWM</p><p>  TCCR1A=0x23;</p><p>  TCCR1B=0x03;</p><p><b>  OCR1BH=3;</b></p><p>  OCR1B

105、L=0xFF;</p><p><b>  }</b></p><p>  void T0_init() //T0定時</p><p><b>  {</b></p><p>  //TCCR0|=0x00;</p><p>  TCNT0=105;</p>

106、<p>  TIMSK|=(1<<TOIE0);</p><p><b>  sei();</b></p><p>  TCCR0|=(1<<CS01); </p><p><b>  }</b></p><p>  void Time()

107、//動態(tài)顯示時間值</p><p><b>  {</b></p><p>  unsigned int minute,second;</p><p>  minute=(count-25)/60;</p><p>  second=(count-25)%60;</p><p>  time[

108、0]=minute/10+48;</p><p>  time[1]=minute%10+48;</p><p>  time[2]='m';</p><p>  time[3]=second/10+48;</p><p>  time[4]=second%10+48;</p><p>  time[5

109、]='s';</p><p>  time[6]='\0';</p><p>  lcd_wstr(0x40,time);</p><p><b>  }</b></p><p>  void maxmin() //誤差達(dá)到設(shè)定允許范圍之內(nèi)</p><p&g

110、t;<b>  {</b></p><p>  if(fabs(actual-keyvalue)<0.8) maxminflag++;</p><p>  else maxminflag=0;</p><p><b>  }</b></p><p>  void main()</p>

111、;<p><b>  { </b></p><p>  unsigned char TEMP;</p><p>  avr_init(); //液晶數(shù)據(jù)端口初始化</p><p>  lcd_init();//lcd_init()</p><p>  T0_init();//定時器0初始化</p&

112、gt;<p>  pwm_init();//PWM D4out</p><p><b>  pp=&spid;</b></p><p>  PIDInit(pp);//初始化PID 結(jié)構(gòu)體</p><p>  lcd_wcmd(0x06);</p><p>  lcd_pos(0x00);<

113、;/p><p>  lcd_wstr(0x00,dis1);</p><p>  lcd_wstr(0x08,dis2);</p><p>  lcd_wstr(0x03,dis3);</p><p>  lcd_wstr(0x0B,dis3); //</p><p>  factor(); //等

114、待按鍵按下,知道輸入完畢</p><p>  setPID(18,0.25,0); //設(shè)置PID 結(jié)構(gòu)體參數(shù)/////////////////16,0.28,0.3</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  TEMP

115、=key_scan();</p><p>  if(TEMP=='=')</p><p><b>  { </b></p><p>  //lcd_wcmd(0x01);</p><p>  //lcd_wstr(0x00,dis1);</p><p>  //lcd_wstr(

116、0x08,dis2);</p><p>  lcd_wstr(0x03,dis3);</p><p>  //lcd_wstr(0x0B,dis3); </p><p><b>  factor();</b></p><p><b>  }</b></p><p>  lcd

117、_wstr(0x00,dis1);</p><p>  lcd_wstr(0x03,key);</p><p>  lcd_wstr(0x08,dis2);</p><p>  if(h>=10000)</p><p><b>  {</b></p><p><b>  h=0;&

118、lt;/b></p><p><b>  count++;</b></p><p>  get_actual_temperature();</p><p>  setPWM(PIDCalc(pp,actual));</p><p><b>  }</b></p><p>

119、;  maxmin(); </p><p>  if(maxminflag>=25) Time();</p><p><b>  }</b></p><p><b>  }</b></p><p>  SIGNAL(SIG_OVERFLOW0) //T0中斷1S</p>

120、<p><b>  { </b></p><p>  TCNT0=105; // F=1/(12M/8); 從105開始計數(shù),記到255,共計150次</p><p><b>  h++;</b></p><p><b>  }</b></p><p&

121、gt;  /*void main()</p><p><b>  {</b></p><p>  avr_init();//inot();</p><p>  TCNT0=105;</p><p>  TIMSK|=(1<<TOIE0);</p><p>  TCCR0|=(1<

122、<CS01);//</p><p>  TIMSK|=(1<<TOIE2);</p><p>  TCCR0|=(1<<CS01);</p><p>  lcd_init();//lcd_init();</p><p>  lcd_wcmd(0x06);</p><p>  lcd_pos

123、(0x00);</p><p>  lcd_wstr(0x00,dis1);</p><p>  lcd_wstr(0x08,dis2);</p><p>  lcd_wstr(0x40,dis3);</p><p>  lcd_wstr(0x4b,dis3);</p><p><b>  pp=&s

124、pid;</b></p><p>  PIDInit(pp);//初始化PID 結(jié)構(gòu)體</p><p>  setPID(9.0,0.1,0 );//設(shè)置PID 結(jié)構(gòu)體參數(shù)</p><p>  sei();// _EINT();</p><p><b>  while(1)</b></p>&l

125、t;p><b>  {</b></p><p>  tmp=key_scan();</p><p><b>  if(tmp)</b></p><p><b>  {</b></p><p>  //cli();//_DINT();</p><p>

126、;  //reset();</p><p>  token[n]=tmp;</p><p>  lcd_pos(0x04); //清除原有顯示字符</p><p>  unsigned int j=4;</p><p>  for(;j<8;j++)</p><p>  lcd_wdat(0x20);</p

127、><p>  lcd_pos(0x04);</p><p>  lcd_wdat(tmp);</p><p>  lcd_wstr(0x40,dis3);</p><p>  //lcd_wstr(0x4b,dis3);</p><p><b>  factor();</b></p>&

128、lt;p><b>  }</b></p><p>  pwm_init();//PWM </p><p>  if(h==10000) //延時10000*100us=1s</p><p><b>  {</b></p><p><b>  h=0;</b><

129、;/p><p><b>  t=t+1;</b></p><p>  get_actual_temperature();</p><p>  setPWM(PIDCalc(pp, actual));</p><p>  compare();</p><p>  if(max!=0&&m

130、in!=0&&m==0)</p><p><b>  {</b></p><p>  display_time();</p><p><b>  m++;</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

提交評論