标题:
有关按键设定ds18b20上下限温度值并用数码管显示的问题
[打印本页]
作者:
heicad
时间:
2016-3-11 22:54
标题:
有关按键设定ds18b20上下限温度值并用数码管显示的问题
为什么按设定键进入温度上下限显示函数之后,只有一个数码管显示,另一个数码管不亮
void H_temp_display() //上限温度显示函数
{
uchar t1,t2;
t1=H_temp/10;
display(0,t1);
t2=H_temp%10;
display(1,t2);
}
void L_temp_display() //下限温度显示函数
{
uchar t1,t2;
t1=L_temp/10;
display(0,t1);
delay(50);
t2=L_temp%10;
display(1,t2);
}
数码管显示函数
void display1(uint dat)
{
uchar t1,t2;
t1=dat/10;
t2=dat%10;
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存
LATCH1=0;
DataPort=0xbf; //取位码
LATCH2=1; //位锁存
LATCH2=0;
delay_18B20(2000);
DataPort=smg_du[t1]; //取显示数据,段码
LATCH1=1; //段锁存
LATCH1=0;
delay_18B20(2000); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存
LATCH1=0;
DataPort=0x7f; //取位码
LATCH2=1; //位锁存
LATCH2=0;
delay_18B20(2000);
DataPort=smg_du[t2]; //取显示数据,段码
LATCH1=1; //段锁存
LATCH1=0;
delay_18B20(2000); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
}
作者:
heicad
时间:
2016-3-11 22:54
因为程序设置了只能显示一个数码管
作者:
heicad
时间:
2016-3-11 22:54
为什么要清空段和位数据而第二个却没清空?
作者:
heicad
时间:
2016-3-11 22:55
void display(uchar i,uchar dat)
{
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存
LATCH1=0;
DataPort=smg_we[i]; //取位码
LATCH2=1; //位锁存
LATCH2=0;
delay_18B20(500);
DataPort=smg_du[dat]; //取显示数据,段码
LATCH1=1; //段锁存
LATCH1=0;
delay_18B20(500); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
}
这是数码管函数,之前发错了
作者:
heicad
时间:
2016-3-11 22:55
DataPort=smg_du[t2]; //取显示数据,段码 LATCH1=1; //段锁存
你把赋值语句和锁存语句换个位试试------把所有的这两个语句
还有这二次的清空不要,这三
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存
LATCH1=0;
作者:
heicad
时间:
2016-3-11 22:56
上下限温显函数调用了两次display函数,它只显示最后一次那个数码管。
你的display就只显示一位数码管,应该是延时太久了,慢慢调下。还有display函数固定显两位,一个段参数就好了~^~
作者:
heicad
时间:
2016-3-11 22:56
固定显示两位?静态显示么?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1