基于51單片機(jī)的Pt100的溫度計(jì)程序_第1頁(yè)
基于51單片機(jī)的Pt100的溫度計(jì)程序_第2頁(yè)
基于51單片機(jī)的Pt100的溫度計(jì)程序_第3頁(yè)
基于51單片機(jī)的Pt100的溫度計(jì)程序_第4頁(yè)
基于51單片機(jī)的Pt100的溫度計(jì)程序_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、#include #include #define uchar unsigned char#define uint unsigned int#define ADC0801 XBYTE0x7fff#define disp_dat P1#define LED_n P2sbit INTR=P32;const uchar tab= 0xc0,0xf9,0xa4,0xb0,/03 0x99,0x92,0x82,0xf8,/47 0x80,0x90,0xff,0x86/8、9、mie;const uchar tab_dot= 0x40,0x79,0x24,0x30,/0.3. 0x19,0x12,0x02

2、,0x78,/4.7. 0x00,0x10, 0xff,0x86/8.、9.、mie、E;uchar T4=1,0,4,5;uchar tem11=10,10,20,13,11,11,15,21,18,29,11;uchar T_num=20,sam_n=0;/*函數(shù)聲明*/void delay(int n);/延時(shí)函數(shù)void init_T0(void);/定時(shí)器T0初始化void disp_seg(uchar n,uchar d_dat);/顯示函數(shù)uchar AD_dat(void);/AD轉(zhuǎn)換函數(shù)uchar median(uchar *dat,uchar num_d);/中值濾波函數(shù)f

3、loat account_res(void);/電阻值計(jì)算函數(shù)float temperature(void);/計(jì)算溫度函數(shù)void adj_t(void);/調(diào)整顯示數(shù)據(jù)函數(shù)void disp(void);/溫度顯示程序void renovate(void);/更新顯示數(shù)據(jù)/*主程序*/main()init_T0();/初始化T0while(1)disp();/調(diào)用顯示函數(shù)renovate();/更新顯示數(shù)據(jù);/*溫度顯示函數(shù)*/void disp(void)uchar i;for(i=0;i4;i+)disp_seg(i,Ti);/*更新顯示數(shù)據(jù)函數(shù)*/void renovate(void

4、)if(sam_n=11)/去完11個(gè)采樣值sam_n=0;/清零采樣計(jì)數(shù)器adj_t();/調(diào)用數(shù)據(jù)調(diào)整程序/*延時(shí)函數(shù)*/void delay(int n) int i,j; for (i=0;in;i+) for (j=0;j1000;j+);/*定時(shí)器T0初始化*/void init_T0(void) TMOD=0x01;/工作方式1 TH0=0x4c;/定時(shí)50ms TL0=0x00; ET0=1;/允許定時(shí)器T0中斷 EA=1;/開(kāi)總中斷 TR0=1;/啟動(dòng)定時(shí)器T0/*顯示函數(shù)*/void disp_seg(uchar n,uchar d_dat) LED_n=0xff;/清位控

5、制狀態(tài) disp_dat=0xff;/清顯示數(shù)據(jù) LED_n=(0x01n);/送數(shù)據(jù)顯示位if(n=2)disp_dat=tab_dotd_dat;/送帶小數(shù)點(diǎn)顯示數(shù)據(jù)elsedisp_dat=tabd_dat;/送無(wú)小數(shù)點(diǎn)顯示數(shù)據(jù) delay(1);/*AD轉(zhuǎn)換函數(shù)*/uchar AD_dat(void) uchar temp; ADC0801=0;/啟動(dòng)AD轉(zhuǎn)換 while (INTR);/等待轉(zhuǎn)換結(jié)束 temp=ADC0801;/讀取轉(zhuǎn)換值 return(temp);/*中值濾波函數(shù)*/uchar median(uchar *dat,uchar num_d)/需要排序的數(shù)組 uchar

6、 i,j,temp; for (i=0;inum_d;i+)/采用冒泡法對(duì)采樣溫度進(jìn)行排序 for (j=0;jdati+1) temp=dati; dati=dati+1; dati+1=temp; return(dat(num_d-1)/2); /取中值并返回/*電阻值計(jì)算函數(shù)*/float account_res(void)uchar temp;float temp_r;temp=median(tem,11);/利用中值法求取中間值temp_r=(float)temp)*150/255+100;return(temp_r);/*計(jì)算溫度函數(shù)*/float temperature(void

7、)float temp1,T_out;uchar temp2;temp1=account_res();/計(jì)算Pt100阻值temp2=(uchar)temp1;/取Pt100阻值高位if(temp2100)T_out=777;/若阻值在小于0之間else if(temp2139)T_out=2.558*temp1-256.02;/若阻值在0100之間else if(temp2177)T_out=2.637*temp1-267.01;/若阻值在100200之間else if(temp2214)T_out=2.721*temp1-281.9;/若阻值在200300之間else if(temp225

8、0)T_out=777;/若阻值在大于400之間return(T_out);/*調(diào)整顯示數(shù)據(jù)函數(shù)*/void adj_t(void) float temp_v;uint value; temp_v=10*temperature();/利用計(jì)算溫度值value=(uint)temp_v;if(value=7770)/超出測(cè)量范圍T0=11;/顯示ET1=11;/顯示ET2=11;/顯示ET3=11;/顯示EelseT0=value/1000;/待顯示百位T1=(value%1000)/100;/待顯示十位T2=(value%1000)%100;/待顯示個(gè)位T3=(value%1000)%100%10;/待顯示小數(shù)if(T0=0x00)T0=10;if(T1=0)T1=10;/*定時(shí)T0中斷程序*/vo

溫馨提示

  • 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)論