找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5785|回复: 13
收起左侧

51单片机LCD1602如何同时显示温度和时间

  [复制链接]
ID:474561 发表于 2019-2-1 15:22 | 显示全部楼层 |阅读模式
LCD1602上怎么同时实时显示温度和时间呢,我把两个单独的程序合在一起,只正常显示时间,温度那里只显示00.00求救

回复

使用道具 举报

ID:94031 发表于 2019-2-1 16:42 | 显示全部楼层
合在一起程序之间有冲突,应该把合在一起的程序发出来,别人才好帮你找原因。
回复

使用道具 举报

ID:472268 发表于 2019-2-1 17:40 | 显示全部楼层
上代码,上图片再说

评分

参与人数 5黑币 +67 收起 理由
钻牛尖滴刘尖尖 + 12
zhengchong60 + 15
Trump1438 + 15
Sawardeakar + 15
找人PK + 10

查看全部评分

回复

使用道具 举报

ID:454000 发表于 2019-2-1 17:58 | 显示全部楼层
LCD1602是很基础的东西了,确实再搞不定上代码大家帮你看看

评分

参与人数 3黑币 +105 收起 理由
Trump1438 + 35
刀刀见红 + 35
jinsheng7533967 + 35

查看全部评分

回复

使用道具 举报

ID:7485 发表于 2019-2-1 20:08 | 显示全部楼层
你的问题太笼统,许多问题都有可能造成这样的现象。很可能是没有读出温度值,或者读时间值时被定时器中断打断。你的温度元件是不是ds18b20?
回复

使用道具 举报

ID:303383 发表于 2019-2-1 21:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:164602 发表于 2019-2-2 09:42 | 显示全部楼层
本论坛内,我已经回复过很多次了,你应该先搜索一下嘛。
看这个"LCD1602不能同时显示温度和时间的问题"
回复

使用道具 举报

ID:474561 发表于 2019-2-11 11:17 | 显示全部楼层
ahshmj 发表于 2019-2-1 20:08
你的问题太笼统,许多问题都有可能造成这样的现象。很可能是没有读出温度值,或者读时间值时被定时器中断打 ...

是18b20
回复

使用道具 举报

ID:474561 发表于 2019-2-11 11:31 | 显示全部楼层
按键是设置时间的
void main()
{
        unsigned char i;
        Int0Configuration();
        LcdInit();
        Ds1302Init();
        while(1)
        {       
                if(SetState==0)
                {
                        Ds1302ReadTime();
                }
                else
                {
                        if(K1==0)                //¼ì2a°′¼üK1êÇ·ñ°′ÏÂ
                        {
                                Delay10ms();        //Ïû3y¶¶¶ˉ
                                if(K1==0)
                                {
                                        SetPlace++;
                                        if(SetPlace>=7)
                                                SetPlace=0;                                       
                                }

                                while((i<50)&&(K1==0))         //¼ì2a°′¼üêÇ·ñËé¿a
                                {
                                        Delay10ms();
                                        i++;
                                }
                                i=0;
                        }
                        if(K2==0)                //¼ì2a°′¼üK2êÇ·ñ°′ÏÂ
                        {
                                Delay10ms();        //Ïû3y¶¶¶ˉ
                                if(K2==0)
                                {
                                        TIME[SetPlace]++;
                                        if((TIME[SetPlace]&0x0f)>9)                                         //»»3éBCDÂë¡£
                                        {
                                                TIME[SetPlace]=TIME[SetPlace]+6;
                                        }
                                        if((TIME[SetPlace]>=0x60)&&(SetPlace<2))                //·ÖÃëÖ»Äüμ½59
                                        {
                                                TIME[SetPlace]=0;
                                        }
                                        if((TIME[SetPlace]>=0x24)&&(SetPlace==2))                //D¡ê±Ö»Äüμ½23
                                        {
                                                TIME[SetPlace]=0;
                                        }
                                        if((TIME[SetPlace]>=0x32)&&(SetPlace==3))                //èÕÖ»Äüμ½31
                                        {
                                                TIME[SetPlace]=0;       
                                        }
                                        if((TIME[SetPlace]>=0x13)&&(SetPlace==4))                //ÔÂÖ»Äüμ½12
                                        {
                                                TIME[SetPlace]=0;
                                        }       
                                        if((TIME[SetPlace]>=0x7)&&(SetPlace==5))                //ÖüÖ»Äüμ½7
                                        {
                                                TIME[SetPlace]=1;
                                        }               
//                                        if(SetPlace==5)                //ÔÂÖ»Äüμ½12
//                                        {
//                                                TIME[SetPlace]=;
//                                        }       
                                }
                               
                                while((i<50)&&(K2==0))         //¼ì2a°′¼üêÇ·ñËé¿a
                                {
                                        Delay10ms();
                                        i++;
                                }
                                i=0;
                               
                        }                                               
                }
                LcdTimeDisplay();       
                LcdTempDisplay(Ds18b20ReadTemp());
        }
       
}
void LcdTimeDisplay()
{
        LcdWriteCom(0x80+0X40);
        LcdWriteData('0'+TIME[2]/16);                                //ê±
        LcdWriteData('0'+(TIME[2]&0x0f));                                 
        LcdWriteData('-');
        LcdWriteData('0'+TIME[1]/16);                                //·Ö
        LcdWriteData('0'+(TIME[1]&0x0f));       
        LcdWriteData('-');
        LcdWriteData('0'+TIME[0]/16);                                //Ãë
        LcdWriteData('0'+(TIME[0]&0x0f));

        LcdWriteCom(0x80);
        LcdWriteData('2');
        LcdWriteData('0');
        LcdWriteData('0'+TIME[6]/16);                        //Äê
        LcdWriteData('0'+(TIME[6]&0x0f));
        LcdWriteData('-');
        LcdWriteData('0'+TIME[4]/16);                        //ÔÂ
        LcdWriteData('0'+(TIME[4]&0x0f));
        LcdWriteData('-');
        LcdWriteData('0'+TIME[3]/16);                        //èÕ
        LcdWriteData('0'+(TIME[3]&0x0f));
        LcdWriteCom(0x8D);
        LcdWriteData('0'+(TIME[5]&0x07));        //DÇÆú                         
}
void LcdTempDisplay(int temp)
{

          unsigned char i, datas[] = {0, 0, 0, 0, 0}
        float tp;  
        if(temp< 0)               
          {
                  LcdWriteCom(0x80);
                SBUF='-'
                while(!TI);                             
                TI=0;                               
            LcdWriteData('-');  
       
                temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;       
                 
          }
        else
          {                       
                  LcdWriteCom(0x4a+0x80);       
    LcdWriteData('+');
        SBUF='+'
                while(!TI);                             
                TI=0;                                       
                tp=temp
       
                temp=tp*0.0625*100+0.5;       
        }
        datas[0] = temp / 10000;
        datas[1] = temp % 10000 / 1000;
        datas[2] = temp % 1000 / 100;
        datas[3] = temp % 100 / 10;
        datas[4] = temp % 10;


        LcdWriteCom(0x4b+0x80);       
        LcdWriteData('0'+datas[1])
        SBUF = '0'+datas[1]
        while (!TI);               
        TI = 0;

        LcdWriteCom(0x4c+0x80);       
        LcdWriteData('0'+datas[2]);
        SBUF = '0'+datas[2]
        while (!TI);                             
        TI = 0;

        LcdWriteCom(0x4d+0x80);       
        LcdWriteData('.');        
        SBUF = '.'
        while (!TI);       
        TI = 0;

        LcdWriteCom(0x4e+0x80);       
        LcdWriteData('0'+datas[3])
        SBUF = '0'+datas[3]
        while (!TI);                             
        TI = 0;

        LcdWriteCom(0x4f+0x80);
        LcdWriteData('0'+datas[4])
        SBUF = '0'+datas[4]
        while (!TI);               
        TI = 0;
        for(i=0; i<6; i++)
        {
                 SBUF = CNCHAR[i]
                while (!TI);                             
                TI = 0;
        }

}

回复

使用道具 举报

ID:474561 发表于 2019-2-11 11:38 | 显示全部楼层
LcdWriteData('+');
回复

使用道具 举报

ID:71977 发表于 2019-2-12 17:22 | 显示全部楼层
大家都是使用什么软件 进行编程呢
回复

使用道具 举报

ID:447885 发表于 2019-2-13 16:19 | 显示全部楼层
我也是和楼主一样的情况
回复

使用道具 举报

ID:474232 发表于 2019-2-13 20:11 | 显示全部楼层
这儿有现成的,你对参考一下http://www.51hei.com/bbs/dpj-147564-1.html
回复

使用道具 举报

ID:71233 发表于 2019-2-14 17:14 | 显示全部楼层
测温一般需要把中断关闭,这样才不会影响测温的时序,DS18b20的时序一般很严格。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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