51+HD7279+ADS1110+PT100的测温系统程序.docx

上传人:b****5 文档编号:7471135 上传时间:2023-01-24 格式:DOCX 页数:35 大小:23.86KB
下载 相关 举报
51+HD7279+ADS1110+PT100的测温系统程序.docx_第1页
第1页 / 共35页
51+HD7279+ADS1110+PT100的测温系统程序.docx_第2页
第2页 / 共35页
51+HD7279+ADS1110+PT100的测温系统程序.docx_第3页
第3页 / 共35页
51+HD7279+ADS1110+PT100的测温系统程序.docx_第4页
第4页 / 共35页
51+HD7279+ADS1110+PT100的测温系统程序.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

51+HD7279+ADS1110+PT100的测温系统程序.docx

《51+HD7279+ADS1110+PT100的测温系统程序.docx》由会员分享,可在线阅读,更多相关《51+HD7279+ADS1110+PT100的测温系统程序.docx(35页珍藏版)》请在冰豆网上搜索。

51+HD7279+ADS1110+PT100的测温系统程序.docx

51+HD7279+ADS1110+PT100的测温系统程序

#include

#include

typedefunsignedintuint;

typedefunsignedcharuchar;

typedefunsignedshortWORD;

floatcodeRTD_TAB_PT100[151]=//表格是以1度为一步,即-20,-19,-18.....

{

88.22,88.62,88.62,89.40,89.80,90.19,90.59,90.98,91.37,91.77,//-30~-21

92.16,92.55,92.95,93.34,93.73,94.12,94.52,94.91,95.30,95.69,//-20~-11

96.09,96.48,96.87,97.26,97.65,98.04,98.44,98.83,99.22,99.61,//-10~-1

100.00,100.39,100.78,101.17,101.56,101.95,102.34,102.73,103.13,103.51,//0~9

103.90,104.29,104.68,105.07,105.46,105.85,106.24,106.63,107.02,107.49,//10~19

107.79,108.18,108.57,108.96,109.35,109.73,110.12,110.51,110.90,111.28,//20~29

111.67,112.06,112.45,112.83,113.22,113.61,113.99,114.38,114.77,115.15,//30~39

115.54,115.93,116.31,116.70,117.08,117.47,117.86,118.24,118.62,119.01,//40~49

119.40,119.78,120.16,120.55,120.93,121.32,121.70,122.09,122.47,122.86,//50~59

123.24,123.62,124.01,124.39,124.77,125.16,125.54,125.92,126.31,126.69,//60~69

127.07,127.45,127.84,128.22,128.60,128.98,129.37,129.75,130.13,130.51,//70~79

130.89,131.27,131.66,132.04,132.42,132.80,133.18,133.56,133.94,134.32,//80~89

134.70,135.08,135.46,135.84,136.22,136.60,136.98,137.36,137.74,138.12,//90~99

138.50,138.88,139.26,139.64,140.02,140.39,140.77,141.15,141.53,141.91,//100~109

142.29,142.66,143.04,143.42,143.80,144.17,144.55,144.93,145.31,145.68,//110~119

146.06//120

};

//floatcodeRTD_TAB_PT100[41]=//表格是以5度为一步,即-50,-45,-40.....

//{

//80.31,82.29,84.27,86.25,88.22,90.19,92.16,94.12,96.09,98.04,//-50~-5

//100.00,101.95,103.90,105.85,107.79,109.73,111.67,113.61,115.54,117.47,//0~45

//119.40,121.32,123.24,125.16,127.08,128.99,130.90,132.80,134.71,136.61,//50~95

//138.51,140.40,142.29,144.18,146.07,147.95,149.83,151.71,153.58,155.46,//100~145

//157.33//50

//};

sbitbeep=P3^5;

//----------------ADS1110地址、配置字-----------------//

#defineADS1110_WR_ADDRESS0x92//10010010写

#defineADS1110_RD_ADDRESS0x93//10010011读

#defineADS1110_CONFIG_REG0x8C//连续转换模式,16bit精度,PGA=1

sbitADS1110_SDA=P1^5;//模拟I2C数据传输位

sbitADS1110_CLK=P1^6;//模拟I2C时钟控制位

//ucharTMR_H,TMR_L;//AD转换高8位,和低8位

uintAD_Result[25];

unsignedlongnTmp;

//***HD7279函数定义***

voidlong_delay(void);//长延时

voidshort_delay(void);//短暂延时

voiddelay10ms(unsignedchar);//延时10MS

voidwrite7279(uchar,uchar);//写入到HD7279

ucharread7279(uchar);//从HD7279读出

voidsend_byte(uchar);//发送一个字节

ucharreceive_byte(void);//接收一个字节

sbitcs=P0^7;//csatP1.4

sbitclk=P0^6;//clk连接于P1.5

sbitdat=P0^5;//dat连接于P1.2

sbitkey=P0^4;//key连接于P1.3

sbitHight_LED=P4^6;

sbitLow_LED=P4^1;

//******HD7279A指令******

#defineCMD_RESET0xa4

#defineCMD_TEST0xbf

#defineDECODE00x80

#defineDECODE10xc8

#defineCMD_READ0x15

#defineUNDECODE0x90

#defineRTL_CYCLE0xa3

#defineRTR_CYCLE0xa2

#defineRTL_UNCYL0xa1

#defineRTR_UNCYL0xa0

#defineACTCTL0x98

#defineSEGON0xe0

#defineSEGOFF0xc0

#defineBLINKCTL0x88

//--------AT24C04变量声明---------

sbit_24C02_SCL=P2^6;//AT24C04的时钟

sbit_24C02_SDA=P2^5;//AT24C04的数据

ucharBUF[16];//数据缓存区

uintcodenDefaultDATA[]=

{//nLowTMPnHightTMPnTMPAdj

480,650,0//默认设置

};

uintnSettingDATA[3]={0,0,0};//当前设置

voidDelay5us();

voidAT24C04_Start();

voidAT24C04_Stop();

voidAT24C04_SendACK(bitack);

bitAT24C04_RecvACK();

voidAT24C04_SendByte(uchardat);

ucharAT24C04_RecvByte();

voidAT24C04_ReadPage();

voidAT24C04_WritePage();

//******红外接收******

sbitIRIN=P3^3;//红外接收器数据线

ucharIRCOM[7];

ucharnFlag=0;

ucharnMode=1;//nMode0123

//meanNULLnLowTMPnHightTMPnTMPAdj

uintnLowTMP=480;//最低温度设定

uintnHightTMP=650;//最高温度设定

charnTMPAdj=0;//温度修正

voidsend_ad_result(uchartemp);

/***********************************************************************************

************************************************************************************

////////////////////////////////HD7279函数////////////////////////////////////////

************************************************************************************

************************************************************************************/

voidwrite7279(ucharcmd,uchardta)

{

cs=0;

send_byte(cmd);

send_byte(dta);

cs=1;

}

ucharread7279(ucharcommand)

{

cs=0;

send_byte(command);

return(receive_byte());

cs=1;

}

voidsend_byte(ucharout_byte)

{

uchari;

cs=0;

long_delay();

for(i=0;i<8;i++)

{

if(out_byte&0x80)

{

dat=1;

}

else

{

dat=0;

}

clk=1;

short_delay();

clk=0;

short_delay();

out_byte=out_byte*2;

}

dat=0;

}

ucharreceive_byte(void)

{

uchari,in_byte;

dat=1;//settoinputmode

long_delay();

for(i=0;i<8;i++)

{

clk=1;

short_delay();

in_byte=in_byte*2;

if(dat)

{

in_byte=in_byte|0x01;

}

clk=0;

short_delay();

}

dat=0;

return(in_byte);

}

voiddelay10ms(uinttime)//误差-0.000000000001us

{

uchara,b,c;

uinti;

for(i=0;i

{

for(c=7;c>0;c--)

for(b=168;b>0;b--)

for(a=24;a>0;a--);

}

}

voidlong_delay(void)

{

unsignedchari;

for(i=0;i<0x30;i++);

}

voidshort_delay(void)

{

unsignedchari;

for(i=0;i<8;i++);

}

/***********************************************************************************

************************************************************************************

////////////////////////////////HD7279函数END////////////////////////////////////////

************************************************************************************

************************************************************************************/

//---------------------模块延时程序_1ms-------------------------

voiddelay1ms(uintdelay1ms)//STC11F60XE,延时1ms

{

uchara,b;

//12M

//for(;delay1ms>0;delay1ms--)

//for(b=222;b>0;b--)

//for(a=12;a>0;a--);

//11.0592M

for(;delay1ms>0;delay1ms--)

for(b=21;b>0;b--)

for(a=130;a>0;a--);

}

voidDelay5us()//晶振11.0592M误差-0.026765046296us

{

uchara;

for(a=12;a>0;a--);

_nop_();

}

voiddelay(uintdelay)//STC11F60XE,12M,延时170us

{

uchara,b;

//12M

//for(;delay>0;delay--)

//for(b=78;b>0;b--)

//for(a=5;a>0;a--);

//11.0592M

for(;delay>0;delay--)

for(b=2;b>0;b--)

for(a=232;a>0;a--);

}

//---------------------数码管显示函数-------------------------

voidDisplay_TMP(uintnTmp1)

{

//send_byte(CMD_RESET);

write7279(DECODE0,nTmp1/100%100);

delay1ms

(2);

write7279(DECODE0+1,nTmp1/10%10);

delay1ms

(2);

write7279(SEGON,15);

delay1ms

(2);

write7279(DECODE0+2,nTmp1%10);

delay1ms

(2);

write7279(SEGON,63);

delay1ms

(2);

write7279(SEGON,62);

delay1ms

(2);

write7279(SEGON,61);

delay1ms

(2);

write7279(SEGON,60);

delay1ms

(2);

write7279(SEGON,59);

delay1ms

(2);

//write7279(DECODE0+4,nTmp2/100%100);

//delay1ms

(2);

//write7279(DECODE0+5,nTmp2/10%10);

//delay1ms

(2);

//write7279(SEGON,47);

//delay1ms

(2);

//write7279(DECODE0+6,nTmp2%10);

//delay1ms

(2);

//write7279(SEGON,31);

//delay1ms

(2);

//write7279(SEGON,30);

//delay1ms

(2);

//write7279(SEGON,29);

//delay1ms

(2);

//write7279(SEGON,28);

//delay1ms

(2);

//write7279(SEGON,27);

//delay1ms

(2);

//delay10ms(1000);

//send_byte(CMD_RESET);

}

voidDisplay_SETTMP(uintnTmp2)

{

//send_byte(CMD_RESET);

write7279(DECODE0+4,nTmp2/100%100);

delay1ms

(2);

write7279(DECODE0+5,nTmp2/10%10);

delay1ms

(2);

write7279(SEGON,47);

delay1ms

(2);

write7279(DECODE0+6,nTmp2%10);

delay1ms

(2);

write7279(SEGON,31);

delay1ms

(2);

write7279(SEGON,30);

delay1ms

(2);

write7279(SEGON,29);

delay1ms

(2);

write7279(SEGON,28);

delay1ms

(2);

write7279(SEGON,27);

delay1ms

(2);

//delay10ms(1000);

//send_byte(CMD_RESET);

}

voidDisplay_SET()

{

send_byte(CMD_RESET);

if(nMode==1)//setnLowTMP

{

write7279(SEGON,1);

delay1ms

(2);

write7279(SEGON,2);

delay1ms

(2);

write7279(SEGON,3);

delay1ms

(2);

write7279(DECODE0+4,nLowTMP/100%100);

delay1ms

(2);

write7279(DECODE0+5,nLowTMP/10%10);

delay1ms

(2);

write7279(SEGON,47);

delay1ms

(2);

write7279(DECODE0+6,nLowTMP%10);

}

if(nMode==2)//setnHightTMP

{

write7279(SEGON,0);

delay1ms

(2);

write7279(SEGON,1);

delay1ms

(2);

write7279(SEGON,2);

delay1ms

(2);

write7279(SEGON,4);

delay1ms

(2);

write7279(SEGON,5);

delay1ms

(2);

write7279(DECODE0+4,nHightTMP/100%100);

delay1ms

(2);

write7279(DECODE0+5,nHightTMP/10%10);

delay1ms

(2);

write7279(SEGON,47);

delay1ms

(2);

write7279(DECODE0+6,nHightTMP%10);

}

if(nMode==2)//setnTMPAdj

{

write7279(SEGON,0);

delay1ms

(2);

write7279(SEGON,1);

delay1ms

(2);

write7279(SEGON,2);

delay1ms

(2);

write7279(SEGON,4);

delay1ms

(2);

write7279(SEGON,5);

delay1ms

(2);

write7279(SEGON,6);

delay1ms

(2);

if(nTMPAdj<0)

{

write7279(SEGON,32);

delay1ms

(2);

write7279(DECODE0+5,(0-nTMPAdj)/10%10);

delay1ms

(2);

write7279(DECODE0+6,(0-nTMPAdj)%10);

}

if(nTMPAdj>0)

{

write7279(DECODE0+5,nTMPAdj/10%10);

delay1ms

(2);

write7279(DECODE0+6,nTMPAdj%10);

}

}

}

/***********************************************************************************

************************************************************************************

////////////////////////////////红外解码函数-BEGIN/////////////////////////////////

************************************************************************************

************************************************************************************/

voidIR_IN()interrupt2us

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1