#include <stdio.h> #include <assert.h> #include <stdint.h> uint16_t rgb888torgb565(uint8_t *rgb888Pixel) { uint8_t red = rgb888Pixel[0]; uint8_t green = rgb888Pixel[1]; uint8_t blue = rgb888Pixel[2]; uint16_t b = (blue >> 3) & 0x1f; uint16_t g = ((green >> 2) & 0x3f) << 5; uint16_t r = ((red >> 3) & 0x1f) << 11; return (uint16_t) (r | g | b); } int main(void) { FILE *fb = fopen("input.rgb" "rb"); assert(fb); FILE *tmp = fopen("output.rgb565" "wb"); assert(tmp); uint8_t i[3]; while (!feof(fb)) { fread(i sizeof(uint8_t) 3 fb); uint16_t x = rgb888torgb565(i); fwrite(&x sizeof(uint16_t) 1 tmp); } fclose(fb); fclose(tmp); return 0; }
5的话,就接R0到R5,其他的接地就行了,
其他色的也一样,不用的接地