A PIC16 is way out of its depth driving displays like those. Although they have a controller on board, it's really only there to provide the correct timing, multiplexing and electrical drive signals for the individual LCD segments. Those displays are like TV or monitor screens, and have to be fed with a continuous stream of data on the 24 bit parallel interface while providing horizontal and vertical synchronisation signals to allow the display to know which pixels to send it to.
That in turn means you need to use a block of memory as a buffer to hold the image that you want displayed, and be constantly reading it and feeding it to the display three bytes at a time. An 800x480 display will need 3x800x480 bytes, i.e. just over 1MByte of memory to hold the image, which is why it's really not practical on a basic eight bit family such as the PIC16F, even if there were a model in the range with enough I/O pins.
Although you could find a more complex microcontroller or design your own display circuits, a simpler way is to find a display that uses a far more advanced controller, incorporating a sufficiently large frame buffer, and that provides a simpler interface using a serial port, I2C, SPI or 8 bit parallel port and accepts instructions from your microcontroller to do things like set individual pixels, clear the screen, possibly even draw text characters and graphic elements such as polygons and fill them.
Take a look at some of the displays available for things like the Arduino or Raspberry Pi, you should be able to get the driver source as well to help you get started.