For visual output on the refrigerator, we used a 160x128 graphical display from SparkFun.
This display came with a backpack that had a serial backpack controller with a UART interface, which made the display relatively easy to use. To configure the hardware, we added another CoreUARTApb to our hardware, and in software configured it to the display's default baud rate (115200).
In addition to supporting ASCII characters, the display also has special commands. Commands we used include moving the display cursor (next drawn character location), clearing the screen, clearing a rectangle, and drawing lines.
The display had a few small problems, which from our research seemed to be unavoidable without reflashing the serial backpack's firmware. Mainly, some commands on the device (such as erase screen), were visibly slow. This meant it was necessary to add additional logic to consider what parts of the screen needed to be redrawn, instead of redrawing the screen whenever an event occurred.
Second, we encountered an unexpected issue where invalid characters were being drawn to the screen, but only after the barcode scanner read a UPC. After thinking this to be a software issue, we discovered it to be a hardware due to the barcode scanner drawing enough current to "brown-out" the display's backpack, most likely temporarily corrupting its memory. We then ran the display from a separate power source (the board, instead of our external 5V supply), and the problem ceased.
In the end, while the screen remained relatively slow to redraw, it was still suitable for our needs and we were happy with the results. However, if we were to do the project again, I would have considered choosing another potentially faster display.