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

//max6675sbit 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; //蜂鸣器//DAC0832sbit CSDA=P3^2;sbit wr=P3^6;int shang=1250; //上限报警温度,默认值为1250int 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,9uchar 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函数中延时多少,就像下边的没有正确使用这样的回复就不要了,我求真正解决问题的建议
2026年09月27日 19:12
有3个网友回答
网友(1):

可以用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的内部有上拉电阻,在输入端与数码管笔段端接上限流电阻就可工作。

网友(2):

热电偶本身输出的是毫伏信号,可以通过专门的热电偶采集模块把相应的电压值采集上来,转换成工程值,也就是相应的温度,另外你可以根据你的电压值进行换算的。有那种热电偶和电压值双向换算的程序的。

网友(3):

没有正确使用呗