K型热电偶采集的温度,经过MAX6675转换以后,用数码管不能实时显示温度值,什么原因了

//max6675
sbit SO=P1^0;
sbit SCK=P1^1;
sbit CS=P1^2;
//按键
sbit key1=P3^4; //功能键
sbit key2=P3^5; //+
sbit key3=P3^7; //-
sbit BEEP=P2^3; //蜂鸣器
//DAC0832
sbit CSDA=P3^2;
sbit wr=P3^6;

int shang=1250; //上限报警温度,默认值为1250
int SetPoint=1200; //设定目标
int wendu,k1;
uchar qian=0,bai=0,shi=0,ge=0,xiao=0;
float Kp,Ki,Kd;
uchar tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管赋值 0,1,2,3,4,5,6,7,8,9
uchar code tab[]={0x7e,0x7d,0x7b,0x77};//数码管位选
sbit dula=P2^6; //数码管段选,锁存器控制信号
sbit wela=P2^7;//数码管位选,锁存器控制信号
uint Re_Convert(); //热电偶数据读取,返回温度
int ek=0;
int ek1=0; //第K-1采样时的偏差值,Error[-1]
int ek2=0; //第K-2采样时的偏差值,Error[-2]
float LastOutput=0; //上次PID输出
float Output=0; //PID的输出
uchar high_time,low_time,count=0;//占空比调节参数
//---------------------------延时子程序---------------------------//
void delay_50ms(uint m)
{
uchar x,y;
for(x=m;x>0;x--)
for(y=50;y>0;y--) ;
}
/*********** MAX6675函数***********/
uint Re_Convert() //热电偶数据读取,返回温度
{
uchar i;
unsigned long Temp_2;
Temp_2=0;
CS=1; //片选段
SCK=0; //sck串行时钟输入
delay_50ms(5);

CS=0; //片选段,低电平选通
for(i=0;i<16;i++)//16位数据读取
{

Temp_2=Temp_2<<1;//向左移一位
SCK=1;// 上升
if(SO==1) //so串行数据输出
{
Temp_2=Temp_2|0x01;
}
else Temp_2=Temp_2|0x00;
SCK=0;

}

Temp_2=Temp_2<<1; //向左移一位,取0-14位
Temp_2=Temp_2>>4; //向右移4位,取3-14位

Temp_2=Temp_2*1023.75/4096.00;//变换为温度值,后边Temp_2是你采集到的数据,temp是转换成实际温度的数据,可以直接送到显示部分显示,精度0.25
return Temp_2;
其实,是延时的问题,主要是delay_50ms(5);这个延时长短,我现在调的就是老是每次在最后一位停顿一下,求以前调过的大神给点意见,显示位码那延时多少,以及MAX6675函数中延时多少,就像下边的没有正确使用这样的回复就不要了,我求真正解决问题的建议

可以用CD4511和74LS48等IC来驱动共阴数码管。
CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点如下:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。
CD4511 是一片 CMOS BCD—锁存/7 段译码/驱动器,引脚排列如图 2 所示。其中a b c d 为 BCD 码输入,a为最低位。LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时, B1端应加高电平。另外 CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。LE是锁存控制端,高电平时锁存,低电平时传输数据。a~g是 7 段输出,可驱动共阴LED数码管。另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观 图3是 CD4511和CD4518配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只 CD4511 和 LED 数码管即可。所谓共阴 LED 数码管是指 7 段 LED 的阴极是连在一起的,在应用中应接地。限流电阻要根据电源电压来选取,电源电压5V时可使用300Ω的限流电阻。
各引脚功能介绍如下:
BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:3脚是测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。
LE:5脚锁定控制端,当LE=0时,允许译码输出。 LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
A1(1脚)、A2(2)、A3(6)、A4(7)、为8421BCD码输入端。
a(13)、b(12)、c(11)、d(10)、e(9)、f(15)、g(14):为译码输出端,输出为高电平1有效。
16脚是电源,8脚是GND。
CD4511的内部有上拉电阻,在输入端与数码管笔段端接上限流电阻就可工作。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-21
热电偶本身输出的是毫伏信号,可以通过专门的热电偶采集模块把相应的电压值采集上来,转换成工程值,也就是相应的温度,另外你可以根据你的电压值进行换算的。有那种热电偶和电压值双向换算的程序的。本回答被网友采纳
第2个回答  2014-05-21
没有正确使用呗
相似回答