u16 read1(void)//spi模式下,单片机与max6675之间的通信,读取max6675的转化值
{
unsigned char i=0;
unsigned long Temp_2=0;//定义转化后的温度值
__nop();
Cs_L;
__nop();
Clk_L;
__nop();
Cs_L;//选中max6675,开始进行温度转化
for(i=0;i<16;i++)//spi模式下数据帧的读取,一帧数据共有16位
{
Clk_H;
Temp_2<<=1;//向左移动一位
if(So_H==1){Temp_2=Temp_2|0x01;}//假如单片机接收数据线为1,则temp_2移动后的新的最低位置1
else Temp_2=Temp_2|0x00;
Clk_L;//SCK1=0;
__nop();
}
Cs_H;
Temp_2=Temp_2<<1;//对收到的数据帧进行转化,其中的3到14位为转化后的数字值,向左移一位,取0-14位
Temp_2=Temp_2>>4;//向右移4位,取3到14位,至此,12位的电压转化值全部取出
Temp_2=Temp_2*102375/4096-300;//将转化后的数字量转化为温度值,转化公式为:t=temp*1023.75/4096,此处为了获取小数部分,对结果扩大了100倍
return Temp_2;//将转化后的值作为
}
|