找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

ds18b20用i2c oled12864显示总是在初始值,为什么呀,小白一个,求解答

查看数: 3849 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-12-27 19:28

正文摘要:

#include <reg52.h> #include <intrins.h> #include <string.h> #include "codetab.h" #include "LQ12864.h" #include "12c5a.h" #include "ds18b20.h" #define uint unsigne ...

回复

ID:390416 发表于 2021-1-3 19:57
学习小白242人才 发表于 2020-12-27 23:07
用LCD12864显示是正确的,但是转化到oled就不行了

OLED 不带字库的,要求你字节刷字模进去
ID:824490 发表于 2020-12-28 10:00
工程源码发上来看看?
ID:724735 发表于 2020-12-28 09:32
本帖最后由 oldrobinhood 于 2020-12-28 09:41 编辑

你调用OLCD_Num(temp)函数只给一个实参,而void OLCD_Num (unsigned char x,y,dot,unsigned int data1)函数有4个形参!正常编译时出错或者警告,可能你的编译器容错率较高,编译通过了!
ID:836885 发表于 2020-12-27 23:07
人人学会单片机 发表于 2020-12-27 21:38
你得这样,先用数码管或者串口 把DS18B20调试好 ,然后再调试OLED 先用一个假设值 看看显示正不正常。
然 ...

用LCD12864显示是正确的,但是转化到oled就不行了
ID:390416 发表于 2020-12-27 21:38
你得这样,先用数码管或者串口 把DS18B20调试好 ,然后再调试OLED 先用一个假设值 看看显示正不正常。
然后再两者结合。具体的 可以看看人人学会单片机的视频教程。
ID:836885 发表于 2020-12-27 19:29
这是oled的显示

void OLED_Asc_Str8x16(unsigned char x,y,unsigned char *po)
{
        unsigned char i,str_len;
        str_len = strlen(po);
  if(x>128){x=0;y++;}
        for(i=0;i<str_len;i++)
        {
                OLED_NxM_char((x+i*8),y,8,16,&Asc8x16[(po[i]-0x20)*16]);
        }
}

//=============动态显示,用于温度采集============//
void OLCD_Num (unsigned char x,y,dot,unsigned int data1)
{
          unsigned char translateData[6];
    translateData[0] = data1 % 10000 / 1000 + '0';
    translateData[1] = data1 % 1000 / 100 + '0';
          translateData[2] = '.';
          translateData[3] = data1 % 100 / 10 + '0';
    translateData[4] = data1 % 10 + '0';
    translateData[5] = '\0';
          OLED_Asc_Str8x16(x,y,translateData);
}

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

Powered by 单片机教程网

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