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

2021-09-24 19:47

ADS1110_SDA = 1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

}

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

名称:uchar ads1110ReceiveByte(void)

功能:ADS1110 I2C 接收1个字节

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

uchar ads1110ReceiveByte(void)

{

uchar i,k;

ADS1110_CLK = 0;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_();

ADS1110_SDA = 1;

_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();

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

{

51+HD7279+ADS1110+PT100的测温系统,通过与标准温度计对比拟合,精度能达到0.5度

ADS1110_CLK = 1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

k= (k << 1)| ADS1110_SDA;

ADS1110_CLK = 0;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

}

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

return k;

}

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

名称:ads1110Config(void)

功能:对ADS1110进行配置

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

void ads1110Config(void)

{

ads1110Start();

ads1110SendByte(ADS1110_WR_ADDRESS);

waitAck();

ads1110SendByte(ADS1110_CONFIG_REG);

waitAck();

ads1110Stop();

}

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

名称:读取ADS1100数据子程序

功能:

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

uint RD_ADS()

{

uchar temp;

uint W_B1byte_high, W_B1byte_low, W_B1_word;

ads1110Start();

ads1110SendByte(ADS1110_RD_ADDRESS);

temp = waitAck();

if(!temp)

{

51+HD7279+ADS1110+PT100的测温系统,通过与标准温度计对比拟合,精度能达到0.5度

W_B1byte_high /*= TMR_H*/ = ads1110ReceiveByte();

sendAck();

W_B1byte_low /*= TMR_L*/ = ads1110ReceiveByte();

sendAck();

temp = ads1110ReceiveByte();

ads1110Stop();

W_B1_word = (W_B1byte_high << 8)+ W_B1byte_low;

if (W_B1_word > 0x7fff)

W_B1_word = 0;

return W_B1_word;

}

else

return 0x0000;

}

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

名称: 取AD结果函数

功能: 它是16位AD转换,连续去制25次,去掉3最大值和3个最小值,剩下19个取平均值

返回: 平均取值

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

uint get_ad_result()

{

uchar i,j;

uint temp;

nTmp = 0;

for(i = 0; i < 25; i++) // 连续取值25次

{

AD_Result[i] = RD_ADS();

delay1ms(10);

}

for(i = 1; i< 25; i++) // 插入法对取的25个值进行排序

{

temp = AD_Result[i]; //store the original sorted array in temp

for(j=i ; j>0 && temp < AD_Result[j-1] ; j--) //compare the new array with temp

{

AD_Result[j] = AD_Result[j-1]; //all larger elements are moved one pot to the right }

51+HD7279+ADS1110+PT100的测温系统,通过与标准温度计对比拟合,精度能达到0.5度

AD_Result[j] = temp;

}

// for(i = 3; i < 22; i++) // 去掉3最大值和3个最小值,余下19个值求和

// {

// nTmp = nTmp + AD_Result[i];

// }

return AD_Result[12]; //nTmp / 19; // 取剩下19个数平均值

//ad_average_result=ad_average_result*4*5000/1024;

}

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

名称: 串口发送函数

功能: 取AD结果函数发送到串口,方便调试

返回: 无

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

void send_ad_result(uchar temp)

{

SBUF = temp;

while(TI == 0) ;

TI = 0;

delay1ms(100);

//SBUF=R>>4;

}

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

名称: 初始化函数

功能: 设置串口相关寄存器值,波特率取9600, 12T模式

返回: 无

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

void _initiate() //初始化函数

{

EA = 1;

ES = 0;

TMOD = 0x20; // 定时计数器方式控制寄存器,"自动重装,16位计数器".

SCON = 0x50; // 串行控制寄存器,方便在串口助手那观察

// 12M

// TH1 = 0xF3; // 定时器初值高8位设置

// TL1 = 0xF3; // 定时器初值低8位设置

// 11.0592M 波特率 9600

TH1 = 0xFD; // 定时器初值高8位设置

51+HD7279+ADS1110+PT100的测温系统,通过与标准温度计对比拟合,精度能达到0.5度

TL1 = TH1; // 定时器初值低8位设置

51+HD7279+ADS1110+PT100的测温系统(程序)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年湖南金太阳项目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: