求教STC12C5A60S2+12864OLED+DS18B20無法顯示溫度(附件有KEIL工程)新人小白,代碼是拼的,搞不好了希望在這里能得到幫助,怎么搞都沒法顯示溫度,真心求教。下圖是運(yùn)行時照片,后面那個小點(diǎn)是亂碼不知是什么鬼。
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ù)點(diǎn)
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); //點(diǎn)陣顯示
}
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(); //獲取并顯示溫度值
}
}
cjjcjj1 發(fā)表于 2017-9-12 20:58
你好!你顯示用固定數(shù)字,替代溫度值,看是不是能顯示;
如果可以顯示,就是溫度讀取的問題;
如果不能顯 ...
master_lee 發(fā)表于 2017-9-12 20:30
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****
master_lee 發(fā)表于 2017-9-12 20:30
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |