资源描述:
《基于51单片机的pt100的温度计程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、#include#include#defineucharunsignedchar#defineuintunsignedint#defineADC0801XBYTE[0x7fff]#definedisp_datP1#defineLED_nP2sbitINTR=P3^2;constuchartab[]={0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~70x80,0x90,0xff,0x86//8、9、mie};constuchartab_dot[]
2、={0x40,0x79,0x24,0x30,//0.~3.0x19,0x12,0x02,0x78,//4.~7.0x00,0x10,0xff,0x86//8.、9.、mie、E};ucharT[4]={1,0,4,5};uchartem[11]={10,10,20,13,11,11,15,21,18,29,11};ucharT_num=20,sam_n=0;/************************函数声明***********************/voiddelay(intn);//延时函数voidinit_T0(vo
3、id);//定时器T0初始化voiddisp_seg(ucharn,uchard_dat);//显示函数ucharAD_dat(void);//AD转换函数ucharmedian(uchar*dat,ucharnum_d);//中值滤波函数floataccount_res(void);//电阻值计算函数floattemperature(void);//计算温度函数voidadj_t(void);//调整显示数据函数voiddisp(void);//温度显示程序voidrenovate(void);//更新显示数据/*********
4、************主程序*********************/main(){init_T0();//初始化T0while(1){disp();//调用显示函数renovate();//更新显示数据};}/*****************温度显示函数*****************/voiddisp(void){uchari;for(i=0;i<4;i++){disp_seg(i,T[i]);}}/***************更新显示数据函数***************/voidrenovate(void){if(
5、sam_n==11)//去完11个采样值{sam_n=0;//清零采样计数器adj_t();//调用数据调整程序}}/******************延时函数********************/voiddelay(intn){inti,j;for(i=0;i6、1;//允许定时器T0中断EA=1;//开总中断TR0=1;//启动定时器T0}/*******************显示函数*******************/voiddisp_seg(ucharn,uchard_dat){LED_n=0xff;//清位控制状态disp_dat=0xff;//清显示数据LED_n=~(0x01<7、/********************AD转换函数*********************/ucharAD_dat(void){uchartemp;ADC0801=0;//启动AD转换while(INTR);//等待转换结束temp=ADC0801;//读取转换值return(temp);}/*******************中值滤波函数*********************/ucharmedian(uchar*dat,ucharnum_d)//需要排序的数组{uchari,j,temp;for(i=0;i8、;i++)//采用冒泡法对采样温度进行排序for(j=0;jdat[i+1]){temp=dat[i];dat[i]=dat[i+1];dat[i+1]=temp;}}return(da