k电偶测温程序stc8a8k

#include<stc8a8k.h>
#include<delay.h>
#include<oled.h>
#include<stdio.h>
#include<KEY.h>
unsigned char disbuf[9];
//**************************************温度测试用
sbit  SO  = P3^6;  				//P3.6口与SO相连
sbit  CS  = P3^5;  				//P3.5口与CS相连
sbit  SCK = P3^4; 				//P3.4口与SCK相连
unsigned int t;
unsigned int MAX6675_Temp;
unsigned char Flag_connect;
//*****************************************************
unsigned int MAX6675_ReadReg(void)
{
    
     
	unsigned char i;   
	unsigned int dat;
	 
	i   = 0;   
	dat = 0;   
	
	CS  = 0; 
	SCK = 0;     
	
	for(i=0; i<16; i++)		//get D15-D0 from 6675  
	{
    
          
		SCK = 1;     
		dat = dat<<1;    
		if( SO==1 )   
			dat = dat|0x01;   
		SCK = 0;    
	} 
	CS = 1;   
	  
	return dat;   
}  
//********************************************************
//******************************************************
void main()
{
    
    
	int ts=100;
	float tem=122.52;
	unsigned char  keyvalue=100;
	float wendubuchang[4]={
    
    0.01,1,10,100};
  unsigned char key0num=0;
  unsigned char key1num=0;
  unsigned int miao=0;
  unsigned char miaobuchang=1;
  unsigned char fen=0;

	OLED_Init();
	while(1)
	{
    
    
// 		OLED_ShowString(0,0, "hello...");	
// 		
// 	  OLED_ShowNum(0,1,ts,5,12);
// 		
// 		sprintf(disbuf,"%.2f",tem);
// 		OLED_ShowString(0,2, disbuf);
// 		
// 		delay_tms(1000);
// 		tem=tem+0.25;
// 		ts=ts+2;
			t=MAX6675_ReadReg();

  		Flag_connect=t&0x04;		 	//读出数据的D2位是热电偶掉线标志位,该位为1表示掉线,该位为0表示连接
  		Flag_connect=Flag_connect>>2; 	//MAX6675是否在线

		  
			t = t<<1;					   	//读出来的数据的D3~D14是温度值
			t = t>>4;
			MAX6675_Temp = t/4;				//测得的温度单位是0.25,所以要乘以0.25(即除以4)才能得到以度为单位的温度值
			
			if(Flag_connect==0)		  	//Flag_connect为0 表示热电偶已连接,这时显示温度
		{
    
    
			OLED_ShowNum(0,4,MAX6675_Temp,5,12);
		}
		else						//Flag_connect为1表示 热电偶未连接,这时显示FFFF
		{
    
    
			OLED_ShowNum(0,4,22222,5,12);
			
		}
	}
}
		

猜你喜欢

转载自blog.csdn.net/lmf666/article/details/113039349
k8s
今日推荐