找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6703|回復(fù): 13
收起左側(cè)

51單片機LCD1602如何同時顯示溫度和時間

  [復(fù)制鏈接]
ID:474561 發(fā)表于 2019-2-1 15:22 | 顯示全部樓層 |閱讀模式
LCD1602上怎么同時實時顯示溫度和時間呢,我把兩個單獨的程序合在一起,只正常顯示時間,溫度那里只顯示00.00求救

回復(fù)

使用道具 舉報

ID:94031 發(fā)表于 2019-2-1 16:42 | 顯示全部樓層
合在一起程序之間有沖突,應(yīng)該把合在一起的程序發(fā)出來,別人才好幫你找原因。
回復(fù)

使用道具 舉報

ID:472268 發(fā)表于 2019-2-1 17:40 | 顯示全部樓層
上代碼,上圖片再說

評分

參與人數(shù) 5黑幣 +67 收起 理由
鉆牛尖滴劉尖尖 + 12
zhengchong60 + 15
Trump1438 + 15
Sawardeakar + 15
找人PK + 10

查看全部評分

回復(fù)

使用道具 舉報

ID:454000 發(fā)表于 2019-2-1 17:58 | 顯示全部樓層
LCD1602是很基礎(chǔ)的東西了,確實再搞不定上代碼大家?guī)湍憧纯?/td>

評分

參與人數(shù) 3黑幣 +105 收起 理由
Trump1438 + 35
刀刀見紅 + 35
jinsheng7533967 + 35

查看全部評分

回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2019-2-1 20:08 | 顯示全部樓層
你的問題太籠統(tǒng),許多問題都有可能造成這樣的現(xiàn)象。很可能是沒有讀出溫度值,或者讀時間值時被定時器中斷打斷。你的溫度元件是不是ds18b20?
回復(fù)

使用道具 舉報

ID:303383 發(fā)表于 2019-2-1 21:17 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

ID:164602 發(fā)表于 2019-2-2 09:42 | 顯示全部樓層
本論壇內(nèi),我已經(jīng)回復(fù)過很多次了,你應(yīng)該先搜索一下嘛。
看這個"LCD1602不能同時顯示溫度和時間的問題"
回復(fù)

使用道具 舉報

ID:474561 發(fā)表于 2019-2-11 11:17 | 顯示全部樓層
ahshmj 發(fā)表于 2019-2-1 20:08
你的問題太籠統(tǒng),許多問題都有可能造成這樣的現(xiàn)象。很可能是沒有讀出溫度值,或者讀時間值時被定時器中斷打 ...

是18b20
回復(fù)

使用道具 舉報

ID:474561 發(fā)表于 2019-2-11 11:31 | 顯示全部樓層
按鍵是設(shè)置時間的
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;
        }

}

回復(fù)

使用道具 舉報

ID:474561 發(fā)表于 2019-2-11 11:38 | 顯示全部樓層
LcdWriteData('+');
回復(fù)

使用道具 舉報

ID:71977 發(fā)表于 2019-2-12 17:22 | 顯示全部樓層
大家都是使用什么軟件 進行編程呢
回復(fù)

使用道具 舉報

ID:447885 發(fā)表于 2019-2-13 16:19 | 顯示全部樓層
我也是和樓主一樣的情況
回復(fù)

使用道具 舉報

ID:474232 發(fā)表于 2019-2-13 20:11 | 顯示全部樓層
這兒有現(xiàn)成的,你對參考一下http://www.torrancerestoration.com/bbs/dpj-147564-1.html
回復(fù)

使用道具 舉報

ID:71233 發(fā)表于 2019-2-14 17:14 | 顯示全部樓層
測溫一般需要把中斷關(guān)閉,這樣才不會影響測溫的時序,DS18b20的時序一般很嚴格。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表