




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、溫度控制器程序/PT100自身溫度范圍#defineM_temper_MIN-200#defineM_temper_MAX500最低溫度最高溫度/CPU引腳定義#defineP_LEDP0sbitLED_S1=P2八0;sbitLED_S2=P2八1;sbitLED_S3=P2八2;/LED1位選/LED2位選/LED3位選/LED4位選sbitLED_S4=P2八3;sbit KEY_S1 = P1 八 0;上下限溫度設(shè)置sbitKEY_S2=P1八1;溫度加sbitKEY_S3=P1八2;溫度減全局變量寄存器ucharM_LED1,M_LED2,M_LED3,M_LED4;/4位LED顯示
2、寄存器ucharLED_DISP_TAB口=/LED編碼表0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,/0-90X40,0X23,0X1c,0X58字符:-nuc;uchar Set_count;uchar T0_count;uint T1_count;char M_temper_up;char M_temper_down;char M_temper_AI;char M_temper_conver;bit B_set,B_set_AI;溫度設(shè)置按鈕計(jì)數(shù)/T0定時(shí)中斷計(jì)數(shù)/T1定時(shí)中斷計(jì)數(shù)溫度上限溫度下限設(shè)置中溫度當(dāng)前溫度溫度設(shè)置標(biāo)志bit
3、B_set_T0,B_set_T1;定時(shí)器中斷標(biāo)志函數(shù)聲明voidT1int_init();/*定時(shí)器T1初始化:設(shè)置工作方式賦初值開啟中斷*/voidT0int_init();/*定時(shí)器T0初始化:設(shè)置工作方式賦初值開啟中斷*/voidSet_temper();/*設(shè)置上下限溫度:按鍵次數(shù)=1:顯示上限溫度并處于操作狀態(tài)按鍵次數(shù)=2:顯示下限溫度并處于操作狀態(tài)按鍵次數(shù)=3:保存設(shè)置值并退出*/voidInc_temper();/*提高設(shè)置的溫度*/voidDec_temper();/*降低設(shè)置的溫度*/voidLED_data_BCD(charDisp_dat);/*數(shù)碼管顯示溫度*/voi
4、dPT100_delay(uintcount);/*PT100延時(shí)程序*/voidPT100_reset(void);/*PT100復(fù)位初始程序:根據(jù)PT100要求對(duì)其進(jìn)行復(fù)位初始控制*/bitPT100_readbit(void);/*PT100位讀子程序:從PT100取出一位數(shù)據(jù)*/ucharPT100_readbyte(void);/*PT100字節(jié)讀子程序:返回?cái)?shù)據(jù)值*/讀出的一字節(jié)數(shù)據(jù)并voidPT100_writebyte(uchardat);/*PT100字節(jié)寫子程序:將輸入?yún)?shù)值寫入PT100*/voidPT100_change(void);/啟動(dòng)PT100溫度轉(zhuǎn)換ucharP
5、T100_Gettemper(void);/*讀取PT100溫度數(shù)據(jù):?jiǎn)尉€方式讀取PT100轉(zhuǎn)換的溫度數(shù)據(jù),并返回處理后的溫度值*/延時(shí)子voidDelay_ms(uintcount);程序:延時(shí)count(ms)voidmain()ucharM_temper_curr;SP=0x50;堆棧起始地址M_temper_up=100;初始溫度上下限M_temper_down=0;Delay_ms(500);T0int_init();/T0T1初始化T1int_init();while(1)if(B_set_T0)/T0定時(shí)讀取溫度標(biāo)志EA=0;關(guān)總中斷B_set_T0=0;if(!B_set)上下
6、限設(shè)置狀態(tài)時(shí),取消溫度讀取PT100_change();讀取溫度M_temper_curr=PT100_Gettemper();M_temper_conver=(M_temper_curr>126?(127-M_temper_curr):M_temper_curr);轉(zhuǎn)換正負(fù)溫度LED_data_BCD(M_temper_conver);轉(zhuǎn)換LED顯示EA=1;if(B_set_T1)T1定時(shí)LED顯示掃描標(biāo)志TR1=0;B_set_T1=0;+T1_count;switch(T1_count)依次顯示4位LEDcase1:LED_S4=1;P_LED=LED_DISP_TABM_LED
7、1;LED_S1=0;break;case 2:LED_S1=1;P_LED=LED_DISP_TABM_LED2;LED_S2=0;break;case 3:LED_S2=1;P_LED=LED_DISP_TABM_LED3;LED_S3=0;break;case 4:LED_S3=1;P_LED=LED_DISP_TABM_LED4;LED_S4=0;T1_count=0;break;TR1=1;開T1定時(shí)器if(M_temper_conver>M_temper_down)&&(M_temper_conver<M_temper_up)/溫度在上下限范圍內(nèi)BUZZ
8、=B_BUZZ_OFF;RED_ALARM=B_RED_OFF;GREEN_ALARM=B_GREEN_OFF;elseBUZZ=B_BUZZ_ON;if(M_temper_conver<M_temper_down)RED_ALARM=B_RED_ON;低于下限溫度elseGREEN_ALARM=B_GREEN_ON;高于上限溫度if(!KEY_S1)按鍵檢測(cè)Set_temper();/設(shè)置溫度Delay_ms(200);if(B_set)if(!KEY_S2)Inc_temper();溫度加Delay_ms(200);if(!KEY_S3)Dec_temper();溫度減Delay_m
9、s(200);voidSet_temper()設(shè)置溫度+Set_count;B_set=1;設(shè)置標(biāo)志if(Set_count=1)設(shè)置上限B_set_AI=0;LED_data_BCD(M_temper_up);M_temper_AI=M_temper_up;將原上限溫度取出設(shè)置下elseif(Set_count=2)限B_set_AI=1;M_temper_up=M_temper_AI;存入新的上限溫度LED_data_BCD(M_temper_down);M_temper_AI將原下限溫度取出=M_temper_down;/else確認(rèn)退出B_set=0;Set_count=0;LED_d
10、ata_BCD(M_temper_conver);M_temper_down存入新的下限溫度M_temper_AI;void Inc_temper()溫度加if (B_set_AI)限(0)還是下限(1)判斷當(dāng)前是設(shè)置上if(M_temper_AI<M_temper_MAX)&&(M_temper_AI<M_temper_up)M_temper_AI+;不能加到上線溫度和溫度范圍elseif(M_temper_AI<M_temper_MAX)M_temper_AI+;LED_data_BCD(M_temper_AI);溫度減判斷當(dāng)前是設(shè)置voidDec_tem
11、per()if(B_set_AI)上限(0)還是下限(1)if(M_temper_AI>M_temper_MIN)M_temper_AI-;elseif(M_temper_AI>M_temper_MIN)&&(M_temper_AI>M_temper_down)M_temper_AI-;PT100特LED_data_BCD(M_temper_AI);voidPT100_delay(uintcount)定延時(shí)uinti;while(count)i=200;while(i>0)count-;voidPT100_reset(void)/PT100復(fù)位初始uin
12、ti;DQ=0;i=103;while(i>0)i-;DQ=1;i=4;while(i>0)i-;bitPT100_readbit(void)/PT100位讀子程序uinti;bitdat;DQ=1;_nop_();DQ=0;i+;DQ=1;i+;i+;dat=DQ;i=8;while(i>0)i-;return(dat);ucharPT100_readbyte(void)/PT100字節(jié)讀子程序uchari,j,dat;dat=0;for(i=1;i<=8;i+)j=PT100_readbit();dat=(j<<7)|(dat>>1);把讀取
13、的數(shù)據(jù)一位一位放進(jìn)去return(dat);voidPT100_writebyte(uchardat)/PT100字節(jié)寫子程序uinti;ucharj;bittestb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb)/write1(DQ=0;i+;i+;DQ=1;i=8;while(i>0)i-;)elseDQ=0;(/write0i=8;while(i>0)i-;DQ=1;i+;i+;voidPT100_change(void)啟動(dòng)PT100溫度轉(zhuǎn)換PT100_reset();PT100_delay
14、(1);PT100_writebyte(0xcc);PT100_wMtebyte(0x44);讀取ucharPT100_Gettemper()PT100溫度數(shù)據(jù)uinttemp;ucharM_temper_L=0,M_temper_H=0;PT100_reset();PT100_delay(1);PT100_writebyte(0xcc);PT100_writebyte(0xbe);M_temper_L=PT100_readbyte();M_temper_H=PT100_readbyte();temp=M_temper_H;溫度數(shù)據(jù)處理temp<<=8;temp=temp|M_te
15、mper_L;if(M_temper_H>0xf0)/正(0)負(fù)(1)溫度值temp=(0x1000-(temp&0x0fff)/16)+127;計(jì)算溫度elsetemp=temp/16;M_temper_H=temp;returnM_temper_H;voidLED_data_BCD(charDisp_dat)顯示數(shù)據(jù)LED編碼處理if(Disp_dat<0)負(fù)溫度M_LED1=0X0a;/調(diào)用第10個(gè)M_LED2=(0-Disp_dat)/10;M_LED3=(0-Disp_dat)%10;elseM_LED1=Disp_dat/100;正溫度M_LED2=(Disp_
16、dat%100)/10;M_LED3=(Disp_dat%100)%10;if(B_set)/設(shè)置狀態(tài)時(shí)顯示字符if(B_set_AI)M_LED4=0x0c;elseM_LED4=0x0b;elseM_LED4=0x0d;voidT0int_init()定時(shí)器T0初始化TMOD=0X11;TH0=(65536-XTAL/12q0_TIMER)/256;TL0=(65536-XTAL/12叮0_TIMER)%256;EA=1;ET0=1;TR0=1;voidT1int_init()定時(shí)器T1初始化TMOD=0X11;TH1=(65536-XTAL/12q1_TIMER)/256;TL1=(65536-XTAL/12叮1_TIMER)%256;EA=1;ET1=1;TR1=1;延時(shí)countvoidDelay_ms(uintcount)(ms)uinti;while(-count>0)for(i=0;i<125;i+);voidTimer0()inter
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45210-2025增材制造標(biāo)準(zhǔn)測(cè)試件增材制造系統(tǒng)幾何成形能力評(píng)估
- 離婚協(xié)議與財(cái)產(chǎn)分割合同范本
- 地鐵建設(shè)項(xiàng)目施工及設(shè)備安裝合同
- 新車購(gòu)銷合同書
- 施工合同安全責(zé)任書:版
- 客戶預(yù)收款退款合同擔(dān)保
- 4感官幫助我 教學(xué)設(shè)計(jì)-2024-2025學(xué)年科學(xué)一年級(jí)上冊(cè)冀人版
- 人力資源服務(wù)合同(二)
- 7 不甘屈辱奮勇抗?fàn)?第一課時(shí) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版
- 度員工派遣合同范本
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算帶括號(hào))計(jì)算題專項(xiàng)練習(xí)與答案
- 2024年中考語(yǔ)文(云南卷)真題詳細(xì)解讀及評(píng)析
- 電梯消防安全與維護(hù)
- 夜景照明吊繩施工方案
- 2025借款合同范本個(gè)人向公司借款
- 文化差異下的家庭教育與親子關(guān)系探討
- 2025年中國(guó)棕櫚粕行業(yè)市場(chǎng)現(xiàn)狀、前景分析研究報(bào)告(智研咨詢發(fā)布)
- 【大學(xué)課件】工程倫理與社會(huì)
- 2025屆江蘇省南京市、鹽城市高三語(yǔ)文一模調(diào)研作文題目解析及范文:直路、陡坡、彎道
- 幼兒教育專業(yè)國(guó)家技能人才培養(yǎng)工學(xué)一體化課程設(shè)置方案
- 貨物學(xué) 課件全套 孔月紅 項(xiàng)目1-8:貨物與貨物學(xué)概述-集裝箱貨物
評(píng)論
0/150
提交評(píng)論