您尚未登录。

楼主 # 2021-08-16 11:04:26

aozima
会员
所在地: 深圳
注册时间: 2019-05-25
已发帖子: 463
积分: 330.5
个人网站

RGB888不使用8位时,低位数据线应该怎么接?

屏和控制器都是RGB888的,但是实际项目中往往只用RGB565.

此时空出来的如R0 R1数据线,应该怎么处理?

- 0. 浮空(肯定不建议,受干扰时会闪?)
- 1. 接地(可以用,但是否在FF时,不能满幅显示?)
- 2. 接到R7 R6
- 3. 接到R2 R3

离线

#1 2021-08-16 11:06:40

ubuntu
会员
注册时间: 2020-03-30
已发帖子: 276
积分: 254

Re: RGB888不使用8位时,低位数据线应该怎么接?

我见到的大部分0浮空,然后是1接地,偶尔看到2 R7/R6

离线

#2 2021-08-16 14:14:28

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: RGB888不使用8位时,低位数据线应该怎么接?

更好的方式是接到高位数据线上,我是这么接的。据说有Dither效果

离线

#3 2021-08-16 14:25:45

Blueskull
会员
注册时间: 2020-02-20
已发帖子: 458
积分: 444.5

Re: RGB888不使用8位时,低位数据线应该怎么接?

R0->R6, R1->R7这种接法在0x00~0x3f范围内的累积误差最小。

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

#define EIEO // Extreme input, extreme output, 0x00->0x00, 0x3F->0xFF

uint8_t makeByte(uint8_t in, int b0Mode, int b1Mode)
{
	uint8_t out=in<<2;
	if(b0Mode==0) ; // b0=0
	else if(b0Mode==1) out|=0x01; // b0=1
	else if(b0Mode<=7) out|=(out>>b0Mode)&0x01; // b0=b_b0Mode
	else {printf("Invalid input.\n"); exit(1);}
	if(b1Mode==0) ; // b1=0
	else if(b1Mode==1) out|=0x02; // b1=1;
	else if(b1Mode<=7) out|=((out>>b1Mode)&0x01)<<1; // b1=b_b1Mode
	else {printf("Invalid input.\n"); exit(1);}
	return out;
}

int main()
{
	int i, j, k;
	int err;
	int errsum[8][8];
	unsigned int errmin=-1;
	for(i=0;i<8;i++) // Scan b0Mode
		for(j=0;j<8;j++) // Scan b1Mode
		{
			#ifdef EIEO
			if(makeByte(0x00, i, j)!=0x00) // Zero input zero output
				continue;
			if(makeByte(0x3f, i, j)!=0xff) // Max input max output
				continue;
			#endif
			errsum[i][j]=0;
			for(k=0;k<64;k++) // Scan input value
			{
				uint8_t out=makeByte(k, i, j);
				float diff=k/63.0*255-out;
				if(diff<0) diff=-diff;
				err=(int)(diff+0.5);
				errsum[i][j]+=err;
			}
			if(errsum[i][j]<errmin) errmin=errsum[i][j];
		}
	for(i=0;i<8;i++)
		for(j=0;j<8;j++)
			if(errsum[i][j]==errmin) printf("Minimum error %d reached at b0Mode=%d, b1Mode=%d.\n", errsum[i][j], i, j);
	return 0;
}

刚写了个程序验证过了。

离线

#4 2021-08-16 14:26:52

Blueskull
会员
注册时间: 2020-02-20
已发帖子: 458
积分: 444.5

Re: RGB888不使用8位时,低位数据线应该怎么接?

无论是否定义EIEO宏,上述程序总是输出:

Minimum error 10 reached at b0Mode=6, b1Mode=7.

离线

楼主 #5 2021-08-16 16:02:33

aozima
会员
所在地: 深圳
注册时间: 2019-05-25
已发帖子: 463
积分: 330.5
个人网站

Re: RGB888不使用8位时,低位数据线应该怎么接?

向楼上大佬学习了!

离线

#6 2021-08-17 08:55:17

Quotation
会员
注册时间: 2018-10-04
已发帖子: 296
积分: 259.5

Re: RGB888不使用8位时,低位数据线应该怎么接?

理论上说,把低位数据线接到高位,效果相当于增大了一点对比度,亮的更亮、暗的更暗。
接到GND相当于整体变暗一点。
其实应该都是几乎看不出来的。

离线

#7 2023-01-31 11:24:34

吴助建
会员
注册时间: 2021-12-08
已发帖子: 104
积分: 12

Re: RGB888不使用8位时,低位数据线应该怎么接?

Quotation 说:

理论上说,把低位数据线接到高位,效果相当于增大了一点对比度,亮的更亮、暗的更暗。
接到GND相当于整体变暗一点。
其实应该都是几乎看不出来的。

支持你的说法。
低位直接接地,也是没问题,浮空也行的。

离线

#8 2023-01-31 12:56:19

marcus
会员
注册时间: 2021-03-19
已发帖子: 72
积分: 22

Re: RGB888不使用8位时,低位数据线应该怎么接?

低位高低变化,说不定屏幕都分辨不出来这种精度。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn