版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于atmega16的溫度測試系統(tǒng)
- 基于ATmega16的脈象儀設(shè)計.pdf
- 基于atmega16的遙控車設(shè)計
- 基于atmega16單片機鬧鐘設(shè)計
- 基于atmega16單片機鬧鐘設(shè)計
- 基于atmega16的檢測避障智能車
- 基于ATmega16的無線錄音系統(tǒng)設(shè)計與實現(xiàn).pdf
- 基于atmega16的mp3設(shè)計與實現(xiàn)
- 基于atmega16的比賽專用秒表設(shè)計報告1
- 基于atmega16的比賽專用秒表設(shè)計報告1
- atmega16畢業(yè)論文外文翻譯
- 基于atmega16的mp3的設(shè)計與實現(xiàn)
- 基于ATmega16的MP3的設(shè)計與實現(xiàn).doc
- avr atmega16 步進(jìn)電機驅(qū)動程序
- 基于μC-OS-Ⅱ和ATmega16的嵌入式系統(tǒng)的研究.pdf
- ATMEGA16單片機班培訓(xùn)實例.doc
- 0560、atmega16單片機班培訓(xùn)實例
- ATMEGA16單片機班培訓(xùn)實例.doc
- 0560、atmega16單片機班培訓(xùn)實例
- 基于ATmega16單片機的足浴城服務(wù)管理系統(tǒng)下位機的設(shè)計.pdf
評論
0/150
提交評論