参考了网上的很多例程,无论怎样都不能实时显示温度,但是重新打开电源或者使用独立按键按下就能读取更新一次温度????
- #include<intrins.h>
- #include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
- #include "oled.h"
- sbit SO=P1^1;
- sbit SCK=P1^3;
- sbit CS=P1^2;
- sbit key = P3^3;
-
- unsigned int MAX6675_Temp;
-
- void delay(unsigned int i)
- {
- while(i--);
- }
- unsigned int Re_Convert() //热电偶数据读取,返回温度
- {
- long int a=0x7ff8;
- long int wendu=0,wendu_1;
- float wendu_2;
- unsigned int i;
- CS=1;
- SCK=0;
- delay(200);
- _nop_();
- _nop_();
- CS=0;
- for(i=1;i<=16;i++)
- { wendu=wendu<<1;
- _nop_();
- SCK=1;
- if(SO==1){wendu=wendu|0x01;}
- else wendu=wendu|0x00;
- _nop_();
- _nop_();
- SCK=0;
- _nop_();
- _nop_();
- }
- wendu_1=wendu&a;
- wendu_1=wendu_1>>3;
- wendu_2=wendu_1*0.25;
-
- return wendu_2; //返回带两位小数的实际温度
- }
- void main()
- {
- OLED_Init(); //初始化OLED
- OLED_Clear();
-
- while(1)
- {
- if(key==0)
- {
- delay(1000);
- if(key==0)
- {
- while(key==0);
- MAX6675_Temp=Re_Convert();
- }
- }
-
- OLED_ShowNum(103,6,MAX6675_Temp,3,16);
-
- }
- }
复制代码
while(1)
{
/*if(key==0)
{
delay(1000);
if(key==0)
{
while(key==0);
MAX6675_Temp=Re_Convert();
}
}*/
MAX6675_Temp=Re_Convert();
OLED_ShowNum(103,6,MAX6675_Temp,3,16);
}
一周热门 更多>