找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: dsbk123
打印 上一主题 下一主题
收起左侧

极简高精度1.3吋OLED万年历

  [复制链接]
41#
ID:406132 发表于 2026-6-16 10:35 | 只看该作者
yanggo 发表于 2026-6-16 10:08
楼主你好,我复刻了一个,发现有问题,我想向你请教下,感谢你抽空回复。
一、下载程序时,STC的运行时IRC ...

似乎用了11.0592MHz下载程序就正常了……
回复

使用道具 举报

42#
ID:437129 发表于 2026-6-16 14:32 | 只看该作者
yanggo 发表于 2026-6-16 10:08
楼主你好,我复刻了一个,发现有问题,我想向你请教下,感谢你抽空回复。
一、下载程序时,STC的运行时IRC ...

下载时选6M,所有问题将全部解决。
回复

使用道具 举报

43#
ID:406132 发表于 2026-6-16 14:50 | 只看该作者
dsbk123 发表于 2026-6-16 14:32
下载时选6M,所有问题将全部解决。

屏显右边有一竖条这个问题还是的,其它功能是正常了.应该是要修改偏移量.原程序里哪个位置是修改偏移量的呢?
回复

使用道具 举报

44#
ID:406132 发表于 2026-6-16 15:22 | 只看该作者
yanggo 发表于 2026-6-16 14:50
屏显右边有一竖条这个问题还是的,其它功能是正常了.应该是要修改偏移量.原程序里哪个位置是修改偏移量的 ...

在OLED_Init函数里有个偏移量,0x00改为0x01有改善,但还是有一点,改为0x02却又把"星期"两个字削了一点顶部,郁闷了.
回复

使用道具 举报

45#
ID:437129 发表于 2026-6-16 19:48 | 只看该作者
yanggo 发表于 2026-6-16 15:22
在OLED_Init函数里有个偏移量,0x00改为0x01有改善,但还是有一点,改为0x02却又把"星期"两个字削了一点顶部 ...

/****************************
OLED 设置坐标
****************************/
void OLED_Set_Pos(unsigned char x, unsigned char y)
{
        OLED_WrCmd(0xb0+y);
        OLED_WrCmd(((x&0xf0)>>4)|0x10);
//OLED_WrCmd((x&0x0f)|0x00);//SSD1306屏幕使用此程序
        OLED_WrCmd((x&0x0f)|0x02);//SH1106屏幕使用此程序
}

/****************************
OLED全屏
****************************/

void OLED_Fill(unsigned char bmp_dat)
{
        unsigned char y,x;
        for(y=0;y<8;y++)
        {
                OLED_WrCmd(0xb0+y);
        //OLED_WrCmd(0x00);//SSD1306屏幕使用此程序
                OLED_WrCmd(0x02);//SH1106屏幕使用此程序
                OLED_WrCmd(0x10);
                for(x=0;x<X_WIDTH;x++)
                OLED_WrDat(bmp_dat);
        }
}

/****************************
OLED复位
****************************/
void OLED_CLS(void)
{
        unsigned char y,x;
        for(y=0;y<8;y++)
        {
                OLED_WrCmd(0xb0+y);
        //OLED_WrCmd(0x00);//SSD1306屏幕使用此程序
                OLED_WrCmd(0x02);//SH1106屏幕使用此程序
                OLED_WrCmd(0x10);
                for(x=0;x<X_WIDTH;x++)
                OLED_WrDat(0);
        }
}
回复

使用道具 举报

46#
ID:406132 发表于 2026-6-18 16:20 | 只看该作者
dsbk123 发表于 2026-6-16 19:48
/****************************
OLED 设置坐标
****************************/

感谢你的答复,这个位置不懂如何处理……我修改了OLED初始化里的偏移“OLED_WrCmd(0x01);//-not offset ”这里,然后亮度那也改了值,屏莫右边的竖线就莫名地正常了。但下边温度小数点偏也有两个点像素点亮,不知什么情况,不管了,反正也不怎么懂程序,暂时不折腾了。
回复

使用道具 举报

47#
ID:437129 发表于 2026-6-19 08:47 | 只看该作者
yanggo 发表于 2026-6-18 16:20
感谢你的答复,这个位置不懂如何处理……我修改了OLED初始化里的偏移“OLED_WrCmd(0x01);//-not offset  ...

需要改动三个地方,请对比程序中//后面语句与下面一行的区别,OLED_WrCmd(0x00),改成OLED_WrCmd(0x02),偏移量+2。出现显示屏左边或右边有竖线的原因是程序和OLED驱动芯片不匹配,常见的OLED12864屏幕有SSD1306芯片和SH1106芯片,两者硬件引脚、通讯协议完全兼容,可以直接互换屏幕模块。但差异点在于,SSD芯片是标准的128*64,而SH1106实际是132*64,所以在使用原SSD1306程序时需要偏移2列,否则会出现左边竖线,相反,SSD1306显示屏使用SH1106程序时右边会有竖线。相对而言,SH1106功耗更低,且价格相对便宜约2元,抗干扰能力更强。
回复

使用道具 举报

48#
ID:406132 发表于 2026-6-22 10:48 | 只看该作者
dsbk123 发表于 2026-6-19 08:47
需要改动三个地方,请对比程序中//后面语句与下面一行的区别,OLED_WrCmd(0x00),改成OLED_WrCmd(0x02), ...

感谢你的耐心指导,断电后右边的竖线又复现了。按照你的指导,修改这三处为1106的0x02,就正常了,再断电和重新上电也不会有竖线了,感谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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