^_^,你的工资能分点给我们吗?程序写的可能不好,但是能用,你自己看吧//------------------------------------------------------------------------------
// Routine: change
// Inputs: high,low
// Outputs: none
// Purpose: 十六进制数转换成十进制,电压的量程是2.56V,满量程,最后的结果是浮点数
//------------------------------------------------------------------------------
float change(int high,int low) //把双字节的十六进制数转换成十进制的数
{
unsigned int a,b,c,d,e;
float f;
a=(int)(high/16); //AD高数据位的高位
b=high-a*16; //AD高数据位的低位
c=(int)(low/16); //AD中间数据位的高位
d=low-c*16; //AD中间数据位的低位
e=a*16*16*16+b*16*16+c*16+d;//转换成十进制
f=2.56*(e-32768)/32768; //求出电压值
return(f); //返回实际的电压值
}
//------------------------------------------------------------------------------
// Routine: minsam0
// Inputs: none
// Outputs: none
// Purpose: 分钟数据采样一次,通过串行口输出采样到的数据
//------------------------------------------------------------------------------
void minsam0( )
{
EA = 0; //关中断
RDY0 = 0; // 主AD无效
EADC = 1; // enable ADC interrupt
EA = 1; //开中断
ADCMODE = 0x23; // AD采样连续模式
result=1000*change(ADC0H,ADC0M); //把采集到的十六进制数据转换成十进制,然后把数据扩大1000倍
result=(int)result; //把值取整
sprintf(vol,"%d",result); //result中的湿度值,是两位数,把它送到VOL中
for(i=0;i <3;i++) //输出湿度值
{
SBUF=vol[i];
while(TI==0);
TI=0;
}
}