DIY恒溫烙鐵-主程序_第1頁(yè)
DIY恒溫烙鐵-主程序_第2頁(yè)
DIY恒溫烙鐵-主程序_第3頁(yè)
DIY恒溫烙鐵-主程序_第4頁(yè)
DIY恒溫烙鐵-主程序_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

#include<stc12c2052ad.h>#include<delay.h>#include"intrins.h"#include"10ad.h"#include"1628.h"#include"eeprom.h"voidwork();voidledc();voidleddp();voidleddpsan();voidadjust();sbitled1=P1^0;//100度sbitled2=P1^1;sbitled3=P1^2;sbitled4=P1^3;//400度sbitk32=P3^2;//ON/OFFsbitk33=P3^3;//DEBUGsbitk1=P3^4;//溫度+sbitk2=P3^5;//溫度-sbitout=P3^7;uintDP,dy,c,cont1,cont2,cont3,cont4,cont5;ucharflag,flagon,flag1,flag1s,flag2s,flag2ms,flag500ms,pwm;voidtimeinit(void)//定時(shí)器T0,T1工作在8位自動(dòng)重裝方式初始化{ TMOD=0x22;//定時(shí)器1和定時(shí)器2都工作在方式2 TH0=0x83;//(256-131)*(12/11.0592)=135.633675us;1S=1000000/135.633675=7372.800302次中斷 TL0=0x83; TH1=0xe3; TL1=0xe3;//e3=227,256-227=29,29*(12/11.0592)=31.5US,中斷一次,60000*31.5=1890000/1000000=1.89S EA=1;//開(kāi)總中斷 ET0=1;TR0=1; ET1=1;TR1=1;}//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//主函數(shù)//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&voidmain() { out=0; P1M0=0x10;P1M1=0x0f;P3M0=0x00;P3M1=0x80;//P3.7設(shè)為推挽 led1=1;led2=1;led3=1;led4=1;//offled flag=0;flagon=0; DP=2412;//軟件版本顯示 display0(); timeinit(); delay(200); cont4=2000; while(cont4--)//上電顯示預(yù)設(shè)溫度值 { c=(IapReadByte(0x300)*100+IapReadByte(0x301)); if(c>600) { c=360; IapEraseSector(0x300); IapProgramByte(0x300,c/100);IapProgramByte(0x301,c%100); } ledc();display2(c); } while(1) { if(k33==0&&k2==0) { delay(5); if(k33==0&&k2==0) { while(k33==0&&k2==0);flag=~flag; } } if(flag)//進(jìn)入P14_AD電壓顯示 { dy=NVBO(4);DP=5.05/1024*dy*100;//分壓電阻為6.667K和39K,乘100是為了左移兩位顯示display0();; display0();//P14_AD電壓顯示 } else//進(jìn)入正常工作模式 { if(k32==0)//開(kāi)輸出與關(guān)輸出 { delay(5); if(k32==0) { out=0; while(k32==0); flagon=~flagon; } } if(flagon!=0)//點(diǎn)K32時(shí)開(kāi)輸出。 work();//工作輸出判定 else//默認(rèn)關(guān)輸出 { out=0; if(k1==0||k2==0)adjust();//設(shè)定溫度 else { if(P33==0){ledc();display2(c);} else { DP=NVBO(4)*0.676+5;//分壓電阻為6.667K和39K,乘100是為了左移兩位顯示display0();; leddpsan();//關(guān)掉輸出時(shí)LED快閃并LED1在任何溫度不能滅。 display1(DP); } if(DP<=0||DP>500) { while(DP>500)//NTC開(kāi)路報(bào)警 { DP=8888; display1(DP);DP=NVBO(4)*0.676+5; if(cont2>=3886) {led1=1;led2=1;led3=1;led4=1;} else{led1=0;led2=0;led3=0;led4=0;} } } } } } } }//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&// ////e3=227,256-227=29,29*(12/11.0592)=31.5US,中斷一次//========================================================================================================== voidt1(void)interrupt3//T1工作方式2中斷{ pwm++;}//==========================================================================================================//time0 //(256-131)*(12/11.0592)=135.633675us;//========================================================================================================== voidt0()interrupt1//定時(shí)器0中斷{ cont1++;cont2++;cont3++;cont5++; if(cont1>=15)//2ms { cont1=0; flag2ms=1; } if(cont5>=1943)//500ms { cont5=0; flag500ms=1; } if(cont2>=7372)//1s { cont2=0; flag1s=1; } if(cont3>14744)//2s { cont3=0; flag2s=1; }}//==========================================================================================================// //工作時(shí)LED狀態(tài)顯示實(shí)時(shí)溫度值//========================================================================================================== voidleddp()//四個(gè)LED顯示實(shí)時(shí)溫度{ if(DP<=50) { if(cont2<1843) { led1=0; } else{led1=1;} led2=1;led3=1;led4=1; }//ledalloffled1=1; if(DP<=100&&DP>50) { if((cont2<1843)|(3686<cont2&&cont2<5529))led1=0;//led1flicker elseled1=1; led2=1;led3=1;led4=1; } if(DP>100&&DP<=150){led1=0;led2=1;led3=1;led4=1;} if(DP<=200&&DP>150) { if((cont2<1843)|(3686<cont2&&cont2<5529))led2=0;//led1flicker elseled2=1; led1=0;led3=1;led4=1; } if(DP>200&&DP<=250){led1=0;led2=0;led3=1;led4=1;} if(DP>250&&DP<=300) { led1=0;led2=0;led4=1; if((cont2<1843)|(3686<cont2&&cont2<5529))led3=0;//led3flicker elseled3=1; } if(DP>300&&DP<=350){led1=0;led2=0;led3=0;led4=1;} if(DP>350&&DP<=400) { led1=0;led2=0;led3=0; if((cont2<1843)|(3686<cont2&&cont2<5529))//led4flicker led4=0; elseled4=1; } if(DP>400){led1=0;led2=0;led3=0;led4=0;}//ledallon}//==========================================================================================================//關(guān)掉輸出時(shí)LED快閃并LED1在任何溫度不能滅。////==========================================================================================================voidleddpsan(){ if(cont5>971) { leddp();led1=0; } else{led1=1;led2=1;led3=1;led4=1;}}//==========================================================================================================//設(shè)定溫度時(shí)LED狀態(tài)顯示溫度////==========================================================================================================voidledc()//四個(gè)LED顯示設(shè)置溫度值。{ if(c<=50){led1=1;led2=1;led3=1;led4=1;} if(c<=100&&c>50){led1=1;led2=1;led3=1;led4=1;} if(c>100&&c<=200){led1=0;led2=1;led3=1;led4=1;} if(c>200&&c<=250){led1=0;led2=0;led3=1;led4=1;} if(c>250&&c<=300) { led1=0;led2=0;led4=1; if((cont2<1843)|(3686<cont2&&cont2<5529))led3=0;//led3flicker elseled3=1; } if(c>300&&c<=350){led1=0;led2=0;led3=0;led4=1;} if(c>350&&c<=400) { led1=0;led2=0;led3=0; if((cont2<1843)|(3686<cont2&&cont2<5529))//led4flicker led4=0; elseled4=1; } if(c>400){led1=0;led2=0;led3=0;led4=0;}}//==========================================================================================================//設(shè)定溫度////==========================================================================================================voidadjust(){ if(k1==0)//溫度+ { delay(5);c=(IapReadByte(0x300)*100+IapReadByte(0x301)); if(k1==0) { while(k1==0) { c++; if(c>=500)c=0; IapEraseSector(0x300); IapProgramByte(0x300,c/100);IapProgramByte(0x301,c%100); ledc();display2(c); delay(10); } } cont4=2000; while(cont4--)//delay { ledc();display2(c); } } elseif(k2==0)//溫度- { delay(5);c=(IapReadByte(0x300)*100+IapReadByte(0x301)); if(k2==0) { while(k2==0) { c--; if(c==0)c=500; IapEraseSector(0x300); IapProgramByte(0x300,c/100);IapProgramByte(0x301,c%100); ledc();display2(c);delay(10); if((c-DP)<=0) out=0; } } cont4=2000; while(cont4--)//delay { ledc();display2(c); } }}//==========================================================================================================//設(shè)定溫度>當(dāng)前溫度時(shí)開(kāi)輸出 //設(shè)定溫度-當(dāng)前溫度<50時(shí)PWM調(diào)節(jié)功率,設(shè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論