基于51单片机的Pt100的温度计程序.doc_第1页
基于51单片机的Pt100的温度计程序.doc_第2页
基于51单片机的Pt100的温度计程序.doc_第3页
基于51单片机的Pt100的温度计程序.doc_第4页
免费预览已结束,剩余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,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;/*函数声明*/void delay(int n);/延时函数void init_T0(void);/定时器T0初始化void disp_seg(uchar n,uchar d_dat);/显示函数uchar AD_dat(void);/AD转换函数uchar median(uchar *dat,uchar num_d);/中值滤波函数float account_res(void);/电阻值计算函数float temperature(void);/计算温度函数void adj_t(void);/调整显示数据函数void disp(void);/温度显示程序void renovate(void);/更新显示数据/*主程序*/main()init_T0();/初始化T0while(1)disp();/调用显示函数renovate();/更新显示数据;/*温度显示函数*/void disp(void)uchar i;for(i=0;i4;i+)disp_seg(i,Ti);/*更新显示数据函数*/void renovate(void)if(sam_n=11)/去完11个采样值sam_n=0;/清零采样计数器adj_t();/调用数据调整程序/*延时函数*/void delay(int n) int i,j; for (i=0;in;i+) for (j=0;j1000;j+);/*定时器T0初始化*/void init_T0(void) TMOD=0x01;/工作方式1 TH0=0x4c;/定时50ms TL0=0x00; ET0=1;/允许定时器T0中断 EA=1;/开总中断 TR0=1;/启动定时器T0/*显示函数*/void disp_seg(uchar n,uchar d_dat) LED_n=0xff;/清位控制状态 disp_dat=0xff;/清显示数据 LED_n=(0x01n);/送数据显示位if(n=2)disp_dat=tab_dotd_dat;/送带小数点显示数据elsedisp_dat=tabd_dat;/送无小数点显示数据 delay(1);/*AD转换函数*/uchar AD_dat(void) uchar temp; ADC0801=0;/启动AD转换 while (INTR);/等待转换结束 temp=ADC0801;/读取转换值 return(temp);/*中值滤波函数*/uchar median(uchar *dat,uchar num_d)/需要排序的数组 uchar i,j,temp; for (i=0;inum_d;i+)/采用冒泡法对采样温度进行排序 for (j=0;jdati+1) temp=dati; dati=dati+1; dati+1=temp; return(dat(num_d-1)/2); /取中值并返回/*电阻值计算函数*/float account_res(void)uchar temp;float temp_r;temp=median(tem,11);/利用中值法求取中间值temp_r=(float)temp)*150/255+100;return(temp_r);/*计算温度函数*/float temperature(void)float temp1,T_out;uchar temp2;temp1=account_res();/计算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(temp2250)T_out=777;/若阻值在大于400之间return(T_out);/*调整显示数据函数*/void adj_t(void) float temp_v;uint value; temp_v=10*temperature();/利用计算温度值value=(uint)temp_v;if(value=7770)/超出测量范围T0=11;/显示ET1=11;/显示ET2=11;/显示ET3=11;/显示EelseT0=value/1000;/待显示百位T1=(value%1000)/100;/待显示十位T2=(value%1000)%100;/待显示个位T3=(value%1000)%100%10;/待显示小数if(T0=0x00)T0=10;if(T1=0)T1=10;/*定时T0中断程序*/void sen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论