First off CRT and LCD are different in may ways. Though I'm not sure how their refresh rate changes. I can say, with absolute certainty, that their difference in refresh systems is not something that is used. Nor is it something that you can change, or something that will be effected by game-code (aside from maybe adjusting the refresh rate, if you felt like going to an extreme.) All you can do is pump out an image to it though the cable connected to your computer, after that all you can do is hope the monitor displays it.
If your pumping out images to fast for the monitor to display them, then it drops the frame. If your pumping out images slower than it's displaying them, then it continues to display the same frame (for a brief time.)
There are two options that I'm seeing:
- http://docs.unity3d.com/ScriptReference/Time-deltaTime.html
Delta time indicates the number of seconds that have passed between this frame and the last frame. Since it's a float variable, you can use it to determine the amount of time that has lapsed for your Hz cycle. This, however, is frame-rate dependent. Granted, if your game is going around 9Hz (which would be 9fps), it's not going to be playable anyway. Typically, you want a minimum of 20Hz before a game is considered playable.
30Hz is standard. 60Hz is ideal (It's the refresh-rate of most modern monitors.)
- FixedUpdate() - http://docs.unity3d.com/Manual/class-TimeManager.html
FixedUpdate gets called every x.y seconds regardless of frame-rate (frame-rate might be sacrificed to ensure it.) Should be fairly reliable. You then have the problem, however, of if that frame gets rendered. Even if it updates, if your frame-rate is slow enough to skip an entire 9Hz cycle, you might not see it update. (But it will cycle regardless.)
HOWEVER,
I personally would say to figure out why your frame-rate is dropping low enough to make it problematic. There should be diagnostic tools somewhere in unity, find your-self the bottlenecks and fix them. If the games becoming slow-enough to be visible in a 9Hz cycle, then it's a fairly major frame-rate drop.
Edit:
Okay, Here is the basic theory. You have Hz, Hz is a unit of measurement that records the number of cycles per second. So saying you want something to switch on and off at 9 Hz, means you want it to turn on and off 9 times a second.
So we need some way to express the on/off oscillation according to time. The easiest means of oscillation we have access to is a sine or cosine wave.
If we are to use that, we end up with a value that goes from 0, to 1, to 0, to -1, to 0...
However, we only need on and off. We don't need every value between -1 and 1. We can simplify it by saying "This half of the cycle means on, and this half of the cycle means off." To divide it into half, we'll use the value 0 as our switch point. Resulting in something like:

All this theory coming down to the code:
using UnityEngine;
using System.Collections;
public class flicker : MonoBehaviour
{
public Sprite white;
public Sprite black;
public SpriteRenderer ren;
public float cycleHz; // Hz, the mesurement of cycles.
float dtime = 0; // delta time
// Update is called once per frame
void Update()
{
// update frequency time-step
dtime += Time.deltaTime;
// Sample the waveform at a specific time.
float wave = Mathf.Sin( (dtime * 2.0f * Mathf.PI) * cycleHz);
print (dtime);
print (wave);
// Cycle between sprites based on the waveform.
if (wave > 0.0f)
{
print ("Black");
}
else
{
print ("White");
}
// prevents dtime from climbing to infinity,
// by stepping it back in the waveform to a point
// of equal value.
if (wave == 0.0f)
{
dtime = 0.0f;
}
}
}
Bonus Fun:
- What happens when we make it so that the switch point is 0.5?
- What if it's cosine instead of sine?
- What happens if we make it tangent instead of sine or cosine?