找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6345|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

求教STC12C5A60S2+12864OLED+DS18B20無法顯示溫度(附件有KEIL工程)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232708 發(fā)表于 2017-9-12 19:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

求教STC12C5A60S2+12864OLED+DS18B20無法顯示溫度(附件有KEIL工程)新人小白,代碼是拼的,搞不好了希望在這里能得到幫助,怎么搞都沒法顯示溫度,真心求教。下圖是運行時照片,后面那個小點是亂碼不知是什么鬼。








MAIN.c

#include "lq12864.h"

#include "ds18b20.h"

#include "REG52.h"



/**********************************定義變量*********************************/


unsigned int Temp_Buffer = 0;


/********************(STC12C5608AD  11MHZ z=1時精確延時1ms)*******************/

void delayms(unsigned int z)

{

unsigned int x,y;

for(x=z; x>0; x--)

for(y=1848; y>0; y--);

}


/*****************************************顯示溫度****************************/

void Display_Temp()

{

        Temp_Buffer = Get_temp();                                          //讀取DS18B20的值

        LCD_WrCmd(0x80+0x40+10);                               

        if(flag_temper == 1)                                                //根據(jù)溫度標(biāo)志位顯示溫度正負(fù)

        {

                LCD_WrDat('-');       

        }

        if( Temp_Buffer/1000 != 0 )                                        //如果第一位為0,忽略顯示

        {

                LCD_WrDat(Temp_Buffer/1000+0X30);           //顯示溫度百位值

        }

        LCD_WrDat(Temp_Buffer%1000/100+0X30);           //顯示溫度十位值

        LCD_WrDat(Temp_Buffer%100/10+0X30);           //顯示溫度個位值

        LCD_WrDat('.');                                                   //顯示小數(shù)點

        LCD_WrDat(Temp_Buffer%10+0X30);                   //顯示溫度十分位值

        LCD_WrDat('C');                                                   //顯示字符C

               

}

/***********************************主函數(shù)**********************************/

void main()

{

     unsigned char i;

         LCD_Init();                                                 //OLED初始化


         LCD_P8x16Str(0,3,"Wellcome to use!");         //顯示歡迎界面

         delayms(1000);                                                         //延時

         LCD_CLS();                                                                 //清屏

         

         

         Temp_Buffer = Get_temp();                                          //讀取DS18B20的值

         delayms(500);




         while(1)

        {

                for(i=0; i<8; i++)

                        {LCD_P16x16Ch(i*16,0,i);  //點陣顯示

                        }

                LCD_P16x161Ch(0,2,0);

                LCD_P16x161Ch(16,2,1);

                LCD_P16x161Ch(32,2,2);

                LCD_P16x161Ch(48,2,3);

                LCD_P16x161Ch(64,2,4);

                Display_Temp();                                                           //獲取并顯示溫度值

        }

}

這里紅色部分的LCD_WrDatLCD_WrDat以及后面跟的參數(shù)我真的不理解,他們的定義在LQ12864.c里,下面我貼出來:



/*********************LCD寫數(shù)據(jù)************************************/
void LCD_WrDat(unsigned char dat)         
{
unsigned char i=8;
LCD_DC=1;  
for(i=0;i<8;i++) //發(fā)送一個八位數(shù)據(jù)
{
LCD_SCL=0;  
LCD_SDA=dat&0x80;
LCD_SCL=1;            
dat<<=1;   
}
}
/*********************LCD寫命令************************************/                                                                               
void LCD_WrCmd(unsigned char cmd)
{
unsigned char i=8;
LCD_DC=0;
for(i=0;i<8;i++) //發(fā)送一個八位數(shù)據(jù)
{
LCD_SCL=0;
LCD_SDA=cmd&0x80;
LCD_SCL=1;
cmd<<=1;;   
}        
}

不知道問題出在哪兒,小白虛心求教,也可能原因跟上面這些沒有關(guān)系,下面我把Keil工程文件上傳上來,希望各位大大能幫下小弟,虛心求教
stc51 ds18b20 oled.rar (55.06 KB, 下載次數(shù): 151)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:232708 發(fā)表于 2017-9-12 20:30 | 只看該作者
希望看到的幫小弟一把,謝謝了
回復(fù)

使用道具 舉報

板凳
ID:82765 發(fā)表于 2017-9-12 20:58 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

地板
ID:232708 發(fā)表于 2017-9-13 13:20 | 只看該作者
cjjcjj1 發(fā)表于 2017-9-12 20:58
你好!你顯示用固定數(shù)字,替代溫度值,看是不是能顯示;
如果可以顯示,就是溫度讀取的問題;
如果不能顯 ...

謝謝,我DS18B20好像壞掉了,用下面這個網(wǎng)上找的例程測串口無數(shù)據(jù),手摸DQ端串口一直收到-01的數(shù)據(jù),應(yīng)該是DS18B20壞掉了,VCC和GND沒有接反不知道為什么就壞掉了,買了點還在路上,等到貨了再試吧,很感謝您 test.rar (26.76 KB, 下載次數(shù): 55)

回復(fù)

使用道具 舉報

5#
ID:200351 發(fā)表于 2018-4-7 11:31 | 只看該作者
master_lee 發(fā)表于 2017-9-12 20:30
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

你的這個問題解決了沒
回復(fù)

使用道具 舉報

6#
ID:300215 發(fā)表于 2018-4-15 08:46 | 只看該作者
你好!你顯示用固定數(shù)字,替代溫度值,看是不是能顯示; 如果可以顯示,就是溫度讀取的問題; 如果不能顯示,就是你程序處理數(shù)據(jù)有問題; 可以加我QQ好友
回復(fù)

使用道具 舉報

7#
ID:404868 發(fā)表于 2018-11-6 18:49 | 只看該作者
master_lee 發(fā)表于 2017-9-12 20:30
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

我下載試過了,找不出問題在哪,代碼我覺得沒毛病啊,怪學(xué)藝不精把
回復(fù)

使用道具 舉報

8#
ID:439460 發(fā)表于 2019-2-15 13:30 | 只看該作者
CS片選端沒接啊
回復(fù)

使用道具 舉報

9#
ID:476644 發(fā)表于 2019-2-15 13:46 | 只看該作者
硬件問題
回復(fù)

使用道具 舉報

10#
ID:439460 發(fā)表于 2019-3-14 11:36 | 只看該作者
是這個程序有問題,在其他單片機上顯示溫度是OK的DS18B20,這上面顯示不了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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