Can I set LCD/LED or OLED monitor refresh rate to around 0Hz?

Solution 1:

TL;DR: Neither LED or LCD is driven in a "stable" fashion like e-ink so this will not work.


That is not how displays work. 0 Hz will not produce anything like what you want.

Due to the large number of pixels, and due to the fact that the only practical way to access each point in the 2 dimensional array is via columns and rows selection, in any display you cannot simply have a set of signal lines for each pixel. A full HD display has 2 million pixels, and each has a red, green and blue subcomponent. Even using a level based method for determining shades of each colour that would be an insane number of data lines to hold each pixel.

E-ink is able to be "set and forget" due to the nature of the display. Typically the display is monochromatic, meaning less data lines, and the display material is able to be definitely set in one of two states without needing to be refreshed or held to keep it in that state. In electronics we call this bistable, When set to a state it will stay there.

LCDs are monostable and default to a single state on each pixel, either fully open or fully closed and without a mechanism to constantly hold or refresh that state you will either have a completely black or completely white display.

OLEDs could be held high, but would need the insane number of lines to hold them all on, instead we briefly flash each LED using the column and row access method. We cannot simply have an LED hold itself in a particular state. Again we need to either hold or refresh the state on a regular basis to keep the image.


Why can't we individually address pixels?

The reason we don't invest in displays with individually addressable pixels is many-fold. Firstly every pixel would need its own buffer, power control and other circuitry and there is simply not enough area around each colour pixel to do that. You might be able to do it with using lithography or 3D printing methods that allow you to build ICs like a processor, but to do it for an entire display panel would be horrifyingly expensive and would have a horrifyingly low yield rate. For every good 20" panel you managed to make this way you would probably have 20 to 50 of them that had various defect that make them unsuitable for consumers. Definitely not a good business model.

Another reason is that we currently have to pump the display data across to the display for each frame in one large block, or again have a method for individually specifying "this pixel, that colour". Pumping over a line at a time and effectively stating "this is the pixel format for the following data: 8-bits Red, green, blue and alpha, the row is 1920 pixels wide and columns are 1080 tall" allows you to blast the actual image data over in one efficient continuous block and let the receiver sort out the row starts and end points. Individually addressable pixels would have a massive overhead in communications between the computer and display. "pixel @ x,y: format RGBA, R component = X, G component = y, B component = z, A component = w"

This means it is also more efficient to drive the display in a similar fashion, as it can be done in a simple small buffer running through the data as it comes in rather than having to wait for an entire frame before being able to efficiently set up the entire panel of pixels. You could allow random access to columns and rows, but again this has an overhead.

In the same way that it is faster to read RAM in 4Kb blocks than byte by byte, writing a display would be faster to write in entire rows or columns.


As DanielB states in the comments you could have a very low refresh rate between the graphics card and the display controller and simply have a No-Change command between frames, but this would not change the fact that the display itself would still need to be refreshed very regularly by its built-in controller. At best it would allow the display to choose a suitably low (or high) pixel refresh rate on its own.

Set the rate too low though and you'd get an annoying flicker to the display.

Either way this is not how to reduce eye strain. To reduce eye strain you need either an infinitely high refresh rate, so that pixel light levels do not change between refreshes, or no holding refresh rate at all as you have with e-Ink.