找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2153|回复: 5
打印 上一主题 下一主题
收起左侧

单片机+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



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:282850 发表于 2020-5-20 15:14 | 只看该作者
改while(1)中,加延时,如下:
     read_time();    //读时间
delay_ms(2000);
    read_temp();          //调用ds18b20读取温度
delay_ms(2000);
    ds18b20disp();        //调用温度显示子函数
delay_ms(2000);
如果可以同时显示两组数,再降延时看。能降到几十ms还是几百,试完就知道了。
回复

使用道具 举报

板凳
ID:247387 发表于 2020-5-20 15:48 | 只看该作者
你读时间的程序呢?
回复

使用道具 举报

地板
ID:676662 发表于 2020-5-20 17:02 | 只看该作者
f556 发表于 2020-5-20 15:14
改while(1)中,加延时,如下:
     read_time();    //读时间
delay_ms(2000);

谢谢你的建议,我已经在程序中改动过,但是在开发板上温度还是无法读数。
回复

使用道具 举报

5#
ID:676662 发表于 2020-5-20 17:02 | 只看该作者

都在程序里,时间的程序是没有问题的
回复

使用道具 举报

6#
ID:757123 发表于 2020-5-21 09:58 | 只看该作者
延时太短了,实验看不出来。改成1000ms以上试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表