标题: 单片机+LCD1602无法同时显示时间和温度 [打印本页]

作者: 774922700    时间: 2020-5-20 10:43
标题: 单片机+LCD1602无法同时显示时间和温度
这是我的主函数,我试过把读取时间的语句注释后可以读出温度,但是同时读取就只会显示时间没有温度。但是在proteus上是可以同时显示的。
我的源程序比较长,我添加在附件上了, 温度检测(不显示).docx (26.98 KB, 下载次数: 16) 里面包括了时间设置按键程序,还有DS18B20的和DS1302的各种子程序。
之前也见过类似的贴子,说是使能也会有影响。
真的很无助,希望大家可以帮我看看,谢谢了!
第一次发帖,多多包涵!希望图片能够看得清楚
void main()
{
static uint value;
time_init();                    //初始化定时器
init_int0();                   //外部中断0初始化程序
init_1602();                    //1602初始化
while(1)
{
  key();    //按键程序
  if(key_can < 10)
  {
  
   key_with();
  }
  value ++;
  if(value >= 300)  //300ms
  {
   value = 0;
   if(menu_1 == 0)
   {
    write_sfm2_ds1302(1,8,shi);     //显示时
    write_sfm2_ds1302(1,11,fen);     //显示分
    write_sfm2_ds1302(1,14,miao);    //显示秒
    read_time();    //读时间
    read_temp();          //调用ds18b20读取温度
    ds18b20disp();        //调用温度显示子函数
   }
  }
  delay_1ms(1);
}
}
这是仿真的结果。
这是我注释掉读取时间后的结果。
这是源程序显示的结果,温度显示在第二行,为0.0




作者: f556    时间: 2020-5-20 15:14
改while(1)中,加延时,如下:
     read_time();    //读时间
delay_ms(2000);
    read_temp();          //调用ds18b20读取温度
delay_ms(2000);
    ds18b20disp();        //调用温度显示子函数
delay_ms(2000);
如果可以同时显示两组数,再降延时看。能降到几十ms还是几百,试完就知道了。
作者: lefulan的小迷妹    时间: 2020-5-20 15:48
你读时间的程序呢?
作者: 774922700    时间: 2020-5-20 17:02
f556 发表于 2020-5-20 15:14
改while(1)中,加延时,如下:
     read_time();    //读时间
delay_ms(2000);

谢谢你的建议,我已经在程序中改动过,但是在开发板上温度还是无法读数。
作者: 774922700    时间: 2020-5-20 17:02
lefulan的小迷妹 发表于 2020-5-20 15:48
你读时间的程序呢?

都在程序里,时间的程序是没有问题的
作者: aligaduokeil    时间: 2020-5-21 09:58
延时太短了,实验看不出来。改成1000ms以上试试





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1