men007
发表于 2024-7-30 14:16:51
大明狐 发表于 2024-7-30 11:14
你的这段画八条线的代码
不好意思,提交代码时不仔细,实际使用的代码没抄错。我做了小小改动,应该没什么影响。
代码如下
u8 lx;// = abs(x1-x0);
u8 ly;// = abs(y1-y0);
u8 dm,i;
float dx,dy;
float x,y;
if(x1>=x0)
lx = x1-x0;
else
lx =x0-x1;
if(y1>=y0)
ly=y1-y0;
else
ly=y0-y1;
if(lx>=ly)
dm = lx;
else
dm = ly;
dx =(float)(x1-x0)/dm;
dy =(float)(y1-y0)/dm;
y=(float)y0+0.5;
x=(float)x0+0.5;
men007
发表于 2024-7-30 14:21:54
大明狐 发表于 2024-7-30 11:14
你的这段画八条线的代码
我又试了试,从右下角往左上角画都不行。可能是硬件的问题
很可能是下面代码的问题
void OLED_DrawPoint(unsigned char x,unsigned char y)
{
unsigned char n,m;
if((x<0)||(x>127)||(y<0)||(y>31))return;
n=y/8;//n=0-7
m=y%8;//m=0-7
GRAM|=(0x01<<m);
}
men007
发表于 2024-7-30 14:26:02
大明狐 发表于 2024-7-30 11:11
视频里的代码是这样的
↓↓↓↓↓↓↓↓↓↓
你的其他功能我差不多都试通了。就这出了问题。我用的是128X32(0.91)的屏幕
大明狐
发表于 2024-7-30 15:50:03
men007 发表于 2024-7-30 14:26
你的其他功能我差不多都试通了。就这出了问题。我用的是128X32(0.91)的屏幕 ...
OLED12832和12864用法是一样的,只是稍微改一下硬件配置,驱动都是通用的
这是用你的代码点亮12832的效果,也是没问题的
你用的哪个型号的单片机?或者把代码打包发个附件,我跑跑试试有没有问题
men007
发表于 2024-7-30 18:30:30
大明狐 发表于 2024-7-30 15:50
OLED12832和12864用法是一样的,只是稍微改一下硬件配置,驱动都是通用的
这是用你的代码点亮12832的效 ...
程序写的有点烂,不好意思给你发。
men007
发表于 2024-7-30 18:35:17
本帖最后由 men007 于 2024-7-30 18:38 编辑
大明狐 发表于 2024-7-30 15:50
OLED12832和12864用法是一样的,只是稍微改一下硬件配置,驱动都是通用的
这是用你的代码点亮12832的效 ...
不知道咋发,直接贴吗
大明狐
发表于 2024-7-30 18:38:19
men007 发表于 2024-7-30 18:30
程序写的有点烂,不好意思给你发。
因为不知道问题具体出在哪个环节,目前只看到画点画线两个函数,测试都没问题,所以才需要扩大扫雷范围。程序可以打个压缩包,然后回帖的高级模式里有个按钮可以发附件。
men007
发表于 2024-7-30 18:42:17
大明狐 发表于 2024-7-30 18:38
因为不知道问题具体出在哪个环节,目前只看到画点画线两个函数,测试都没问题,所以才需要扩大扫雷范围。 ...
发了。我用的是stc8h1k28,嘉立创抄的板子
大明狐
发表于 2024-7-30 19:46:23
men007 发表于 2024-7-30 18:42
发了。我用的是stc8h1k28,嘉立创抄的板子
用STC8H8K直接试的你的程序。除了I2C的两个IO其他都没动,显示也没问题{:5_286:}
men007
发表于 2024-7-30 20:34:54
不懂了!显示屏有问题?