欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
請教,為什么MAX6675讀取溫度不能實時顯示!
[打印本頁]
作者:
shinying
時間:
2018-3-29 16:43
標題:
請教,為什么MAX6675讀取溫度不能實時顯示!
用51通過MAX6675讀取溫度,并在1602上顯示。
現在的程序只能顯示開機讀取的溫度,溫度變化后,不能顯示在1602上,請大俠看看是程序什么地方出了問題。
單片機源碼:
#include <reg51.h>
#include <Intrins.h>
#include <LCD1602.H>
#include <math.H>
#define uchar unsigned char
#define uint unsigned int
sbit MAX6675_SO=P1^0;
sbit MAX6675_SCK=P1^1;
sbit MAX6675_CS=P1^2;
bit ack,flag=0,flag1=0;
uint tz;
int t_zhi=0;
char code keytab[]={0xEE,0xDE,0xBE,0x7E,0xED,0xDD,0xBD,0x7D,0xEB,0xDB,0xBB,0x7B,0xE7,0xD7,0xB7,0x77};
unsigned char code str3[]={" "};
unsigned char data disdata[5];
unsigned int ReadMAX6675()
{
unsigned char count;
unsigned int Value;
MAX6675_CS=0;
MAX6675_SCK=0;
Value=0;
_nop_() ;_nop_();_nop_();_nop_();
for(count=0;count<16;count++)
{
Value=Value<<1;
MAX6675_SCK=1;
_nop_() ;_nop_();_nop_();_nop_();
if(MAX6675_SO==1)
Value|=0x01;
MAX6675_SCK=0;
}
MAX6675_CS=1;
return Value;
}
unsigned int GetCurrentTemp(unsigned int CurrentValue)
{
unsigned int TempValue;
TempValue=CurrentValue;
if(TempValue&0x8000)
return 0;
if(TempValue&0x0004)
return 1;
}
void tempdisp() //ζèÖμÏÔê¾
{ unsigned char i;
unsigned int TempValue;
unsigned int testD2;
int xiaoshu;
TempValue=ReadMAX6675();
testD2=GetCurrentTemp(TempValue);
TempValue=ReadMAX6675();
TempValue&=0x7ff8;
TempValue>>=3;
xiaoshu= (TempValue*1023.75/4095)*10-262;
t_zhi=xiaoshu/10;
disdata[0]=xiaoshu/10000+0x30;
xiaoshu=xiaoshu%10000;
disdata[1]=xiaoshu/1000+0x30;
xiaoshu=xiaoshu%1000;
disdata[2]=xiaoshu/100+0x30;
xiaoshu=xiaoshu%100;
disdata[3]=xiaoshu/10+0x30;
xiaoshu=xiaoshu%10;
disdata[4]=xiaoshu/1+0x30;
LCD_set_position(68);
for(i=0;i<4;i++)
LCD_write_data(disdata[i]);
LCD_write_data('.');
LCD_write_data(disdata[4]);
LCD_write_data(0xDF);
LCD_write_data(0x43);
}
void main()
{
LCD_initial();
LCD_cls();
LCD_set_position(0);
//LCD_prints(str1);
LCD_set_position(3);
MAX6675_CS=1;
while(1)
{
ReadMAX6675();
GetCurrentTemp();
tempdisp();
}
}
復制代碼
作者:
ylbjrzbl
時間:
2019-4-21 15:45
樓主你的問題解決了么?
作者:
ZMRGHY
時間:
2019-5-3 12:35
求同樣的問題。。。
作者:
ZMRGHY
時間:
2019-5-3 12:41
求解,同樣的問題。我在網上找了幾個程序,都無法讀出溫度
作者:
阿祥爺
時間:
2020-11-22 15:45
一樣的問題
作者:
robinsonlin
時間:
2020-11-23 11:52
ReadMAX6675(); 這個函數要間隔一段時間運行一次。只有一次讀數,大概率是間隔時間太短了造成的。 有兩種解決方案:
1,把ReadMAX6675()放到定時器中運行,500ms運行一次。
2,在主程序while循環中加一個500ms的延遲函數。
作者:
13872888583
時間:
2022-12-5 20:38
robinsonlin 發表于 2020-11-23 11:52
ReadMAX6675(); 這個函數要間隔一段時間運行一次。只有一次讀數,大概率是間隔時間太短了造成的。 有兩種 ...
謝謝,你的方法好用
作者:
菜菜小白白
時間:
2023-1-12 14:52
max6675的數據轉換時間不能太近,間隔要在200ms左右,你可以加延時也可以用一個定時器,推薦使用定時器
作者:
249449417@qq.co
時間:
2023-8-28 22:56
問題解決了嗎?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1