Personally I regard MikroC as an abomination, but if you want to work in an expensive closed source 'walled garden' that's up to you.
Also your choice of an 8 bit PIC is already constraining your solution space making it more difficult to implement. e.g. on Arduino, this shield:
https://learn.sparkfun.com/tutorials/gps-logger-shield-hookup-guide/all could have you up and running in an afternoon. Then, if you need to, miniaturize it by designing a single board carrying the GPS module, SD card socket, AVR MCU and associated parts that fits as a piggy-back board on the back of your LCD module, within its form factor.
However, if you *MUST* use an 8 bit PIC . . .
A SD card has 512 byte sectors. To be able to write to the card with a FAT filesystem so it can be read on a PC, you *MUST* be able to buffer at least one sector in RAM. As Imo has pointed out, you need to be able to buffer 250ms of your data stream to be able to reliably write a realtime data stream to the card, so you need significantly more than a single sector's buffer. You also need enough RAM to handle reading and decoding the NMEA 0183 sentences from the GPS. If you are coding 'bare metal' you can probably get away with decoding the NMEA data on the fly and only storing the essential data fields in a compact binary format in a ring buffer, which is then expanded into whatever data format you need the output file to be in to fill the sector buffer. That could be done in under 1K RAM. However it would be an absolute PITA to code. An easier approach would be to have enough RAM for two sector buffers, used in alternation, each written as soon as its full + enough to buffer two full NMEA 0183 sentences so you can simply receive a full sentence before decoding it. The RAM requirements alone prevent you using a 'classic' midrange (PIC16) part. There are some enhanced midrange (PIC16F1.....) parts with enough RAM but their interrupt handling is clunky compared to PIC18, and as you have to manage keeping the SPI peripheral 'fed' with sector data being streamed to the SD card without missing characters from the UART, multiple interrupt priorities or even vectored interrupts would be useful. Therefore I wouldn't even attempt this project on anything less than a PIC18 with a UART, SPI peripheral and 2K RAM.
To avoid a lot of trouble with level conversion, it makes sense to run the PIC at 3.3V Vdd. You can get 3.3V GPS modules, and also HD44780 displays, (or most 5V ones can be converted), and the SD card interface will be less troublesome and far more reliable if the PIC and SD card are using the same logic levels rather than resistive dividers.
The GPS interface can often be direct to the PIC's UART pins if it has logic level I/O at the same logic level as your PIC. If its true NMEA 0183 then its 5V semi-RS232 compatible, and requires inversion and possibly level conversion if you are using 3.3V Vdd. Some PIC18 UARTs can handle the inversion in internal hardware, only leaving level conversion. You can use a potential divider for downwards level conversion, and a N-MOSFET + pullup resistor for upwards level conversion.