我见到的大部分0浮空,然后是1接地,偶尔看到2 R7/R6
离线
更好的方式是接到高位数据线上,我是这么接的。据说有Dither效果
离线
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;
}
刚写了个程序验证过了。
离线
无论是否定义EIEO宏,上述程序总是输出:
Minimum error 10 reached at b0Mode=6, b1Mode=7.
离线
理论上说,把低位数据线接到高位,效果相当于增大了一点对比度,亮的更亮、暗的更暗。
接到GND相当于整体变暗一点。
其实应该都是几乎看不出来的。
离线
理论上说,把低位数据线接到高位,效果相当于增大了一点对比度,亮的更亮、暗的更暗。
接到GND相当于整体变暗一点。
其实应该都是几乎看不出来的。
支持你的说法。
低位直接接地,也是没问题,浮空也行的。
离线
低位高低变化,说不定屏幕都分辨不出来这种精度。
离线