#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);
}
}
}
k电偶测温程序stc8a8k
最新推荐文章于 2024-06-24 12:27:18 发布