




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
#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)//定時器T0,T1工作在8位自動重裝方式初始化{ TMOD=0x22;//定時器1和定時器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;//開總中斷 ET0=1;TR0=1; ET1=1;TR1=1;}//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//主函數(shù)//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&voidmain() { out=0; P1M0=0x10;P1M1=0x0f;P3M0=0x00;P3M1=0x80;//P3.7設為推挽 led1=1;led2=1;led3=1;led4=1;//offled flag=0;flagon=0; DP=2412;//軟件版本顯示 display0(); timeinit(); delay(200); cont4=2000; while(cont4--)//上電顯示預設溫度值 { 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)//進入P14_AD電壓顯示 { dy=NVBO(4);DP=5.05/1024*dy*100;//分壓電阻為6.667K和39K,乘100是為了左移兩位顯示display0();; display0();//P14_AD電壓顯示 } else//進入正常工作模式 { if(k32==0)//開輸出與關輸出 { delay(5); if(k32==0) { out=0; while(k32==0); flagon=~flagon; } } if(flagon!=0)//點K32時開輸出。 work();//工作輸出判定 else//默認關輸出 { out=0; if(k1==0||k2==0)adjust();//設定溫度 else { if(P33==0){ledc();display2(c);} else { DP=NVBO(4)*0.676+5;//分壓電阻為6.667K和39K,乘100是為了左移兩位顯示display0();; leddpsan();//關掉輸出時LED快閃并LED1在任何溫度不能滅。 display1(DP); } if(DP<=0||DP>500) { while(DP>500)//NTC開路報警 { 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//定時器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; }}//==========================================================================================================// //工作時LED狀態(tài)顯示實時溫度值//========================================================================================================== voidleddp()//四個LED顯示實時溫度{ 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}//==========================================================================================================//關掉輸出時LED快閃并LED1在任何溫度不能滅。////==========================================================================================================voidleddpsan(){ if(cont5>971) { leddp();led1=0; } else{led1=1;led2=1;led3=1;led4=1;}}//==========================================================================================================//設定溫度時LED狀態(tài)顯示溫度////==========================================================================================================voidledc()//四個LED顯示設置溫度值。{ 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;}}//==========================================================================================================//設定溫度////==========================================================================================================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); } }}//==========================================================================================================//設定溫度>當前溫度時開輸出 //設定溫度-當前溫度<50時PWM調節(jié)功率,設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年藥品知識競賽試題及參考答案
- 2023年資產評估師《資產評估相關知識》核心考點題庫200題(含詳解)
- 2025年財富管理市場深度研究報告:解碼客戶需求與服務創(chuàng)新升級
- 2025年特色農產品電商直播基地行業(yè)發(fā)展趨勢與未來展望評估報告
- 2025年電商平臺內容營銷效果評估與種草經濟價值研究報告
- 2023年真題中學生生物學聯(lián)賽試題及答案解析
- 2023年計算機四級數(shù)據(jù)庫工程師歷年真題及答案
- 2023福建省安全生產月知識考試試題附答案
- 2025年春學期高二年級期末考試數(shù)學試題
- 二零二五年度輪胎行業(yè)技術交流與合作協(xié)議
- (完整word版)IT系統(tǒng)升級預算使用計劃表
- 沖壓作業(yè)指導書
- 內賬財務管理制度
- 文化中心物業(yè)管理服務投標方案(技術標)
- 道路交通管制申請書
- 農村網格化矛盾糾紛課件
- 深圳市華強北跨境電商物流模式研究
- 明代尚書劉凝之府君墓志銘
- 2023年機械制造行業(yè)技能考試-制動鉗工(客車)考試歷年高頻考點試題含答案
- 人教版高中物理必修二全冊同步課時練習
- 大學英語六級詞匯(亂序版)CET
評論
0/150
提交評論