freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的pwm控制方法的精密溫度控制_畢業(yè)設(shè)計(論文)-資料下載頁

2025-08-19 18:00本頁面

【導讀】本文設(shè)計了一種以單片機STC89C52為核心的精密溫度控制系統(tǒng)。字溫度傳感器DS18B20采集溫度,并通過四位數(shù)碼管顯示實時溫度。通過設(shè)置按鍵,設(shè)。定恒溫運行時的溫度值,并顯示在數(shù)碼管上。單片機采用PID控制算法對測量值和設(shè)定

  

【正文】 制系統(tǒng)的設(shè)計研究 [J].IT 技術(shù) ,2020,(3):2934. [11]李善壽 .基于 單片機 的恒溫 控制器 的設(shè)計 和實現(xiàn) [J].計算 機技術(shù) 與發(fā) 展 ,2020,(12):197199. [12]Dallas Programmable Resolution Onewire Digital Thermometer [Z].2020 27 附錄 附 1 整體電路圖 附 2 硬件成品展示圖 28 29 附 3 系統(tǒng)源程序 /********// //主程序 include include include include sbit P10=P1^0。 sbit led0=P1^4。 sbit beep=P1^5。 unsigned char flag=0。 unsigned int set_temper。 unsigned int temper。 uint e,e1,e2,Ep,Ed,rout=0。 uchar kp,ki,kd。 uchar high_time,low_time=50。 uchar count=0。 void pare_temper(void)。 uint pid_(void)。 void main(void) { TMOD=0x01。 TH0=(6553620200)/256。 TL0=(6553620200)%256。 EA=1。 EX0=1。 ET0=1。 IT0=0。 TR0=1。 kp=10。 ki=8。 kd=6。 while(1) { 30 if(flag) { key_jian()。 set_temper=(b[0]*100+b[1]*10+b[2])*10+b[3]。 } else { tp=UpDataDS18B20()。 display()。 temper=tp*10+tp2。 } } } uint pid_(void) { uint n。 e=(set_tempertemper)*100。 Ep=kp*(ee1)。 Ed=kd*(e2*e1+e2)。 n=Ep+ki*e+Ed。 e2=e1。 e1=e。 return n。 } //PWM 調(diào)節(jié)脈沖 void pare_temper(void) { if(set_tempertemper) {beep=1。 // if(set_tempertemper20) { high_time=100。 low_time=0。 } else { 31 rout=pid_()。 high_time=(uchar)(rout/80)。 if(high_time=100) { high_time=100。 } low_time=100high_time。 } } else if(set_temper=temper) { if(temperset_temper0) { high_time=0。 low_time=100。 beep=0。 // } else { rout=pid_()。 high_time=(uchar)(rout/100)。 if(high_time=100) { high_time=0。 } low_time=100high_time。 } } } void int0 () interrupt 0 { flag=~flag。 } //定時器 T0 中斷子程序 void timer_t0 () interrupt 1 { TH0=(6553630000)/256。 TL0=(6553630000)%256。 count++。 32 led0=1。 if(count100) { count=0。 } if(counthigh_time) { P10=0。 } else { P10=1。 } if(count==0) { led0=0。 pare_temper()。 } } /*****************// //DS18B20 子程序 ,DS18B20 頭文件 include include include define DQ_HIGH() DQ = 1 define DQ_LOW() DQ = 0 sbit DQ = P1^1。 bit DS18B20Init(void) { bit flag。 DQ_LOW()。 delay(80)。 DQ_HIGH()。 delay(7)。 if(DQ == 0) 33 { flag = 1。 } else { flag = 0。 } delay(20)。 return flag。 } void WriteDS18B20(uchar ch) { uchar i。 for(i=0。i8。i++) { if(champ。0x01) { DQ_LOW()。 delay(1)。 DQ_HIGH()。 delay(5)。 } else { DQ_LOW()。 delay(7)。 DQ_HIGH()。 } ch = 1。 } } uchar ReadDS18B20(void) { uchar i,ReValue。 for(i=0。i8。i++) { DQ_LOW()。 delay(0)。 DQ_HIGH()。 ReValue = 1。 if(DQ == 1) 34 { ReValue |= 0x80。 } else { ReValueamp。=0x7f。 } delay(2)。 } return ReValue。 } uchar UpDataDS18B20(void) { uchar Temp_H,Temp_L。 DS18B20Init()。 WriteDS18B20(0xcc)。 WriteDS18B20(0x44)。 delay(800)。 DS18B20Init()。 WriteDS18B20(0xcc)。 WriteDS18B20(0xbe)。 Temp_L = ReadDS18B20()。 Temp_H = ReadDS18B20()。 tp2=Temp_Lamp。0x0f。 tp2=tp2*。 Temp_L = 4。 Temp_H = 4。 Temp_L |= Temp_H。 return Temp_L。 } /************/// //按鍵子程序和顯示子程序,按鍵頭文件 include include include include unsigned char tp2。 35 unsigned int tp。 sbit k1=P3^0。 //加一鍵 sbit k2=P3^1。 //轉(zhuǎn)換鍵 sbit k3=P3^2。 //進入或退出鍵 unsigned char num1,num2,n=0。 unsigned char b[4]={0,5,0,0}。 unsigned char code smg_du1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。 unsigned char code smg_du2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}。 unsigned char code smg_we[]={0x01,0x02,0x04,0x08}。 void key_jian() { uchar i。 if((k1==1)amp。amp。(k2==1)) { for(i=0。i4。i++) { P2=smg_we[i]。 n=b[i]。 if(i==2) { P0=smg_du2[n]。 } else { P0=smg_du1[n]。 } delay_50us(15)。 } } if(k1==0) { delay_50us(200)。 if(k1==0) { num1++。 if(num1==10) num1=0。 while(!k1)。 } delay_50us(200)。 while(!k1)。 36 } else { P0=smg_du1[num1]。 switch(num2) { case 0:b[0]=num1。break。 case 1:b[1]=num1。break。 case 2:b[2]=num1。break。 case 3:b[3]=num1。break。 } } if(k2==0) { delay_50us(200)。 if(k2==0) { num2++。 num1=0。 if(num2==4) num2=0。 while(!k2)。 } delay_50us(200)。 while(!k2)。 } else { P2=smg_we[num2]。 } } void display(void) { if((tp/100)==0) { P2=0x00。 } else { P2=smg_we[0]。 P0=smg_du1[tp/100]。 } 37 delay_50us(20)。 if((((tp%100)/10)==0)amp。amp。((tp/100)==0)) { P2=0x00。 } else { P2=smg_we[1]。 P0=smg_du1[(tp%100)/10]。 } delay_50us(20)。 P2=smg_we[2]。 P0=smg_du2[tp%100%10]。 delay_50us(20)。 P2=smg_we[3]。 P0=smg_du1[tp2]。 delay_50us(20)。 } /***********/// //延時子程序,延時頭文 件 include void delay_50us(uint t) { uchar j。 for(。t0。t) for(j=19。j0。j)。 } void delay(uint us) { while(us)。 }
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1