I wonder why Vo has to be low to make it work.
in my case Vo = 0.45, if Vo is high(3.3V) then nothing show up.
what's the relationship between Vo(pin3) and LCD contrast?
You certainly will not get anything showing up with Vo at 3.3V.
It is measured with respect to the logic supply voltage (pin 2) and it is typically around -4.5 volts.
That is the trick. And
it is quite sensitive also, so if your supply voltage drops significantly
below 5V, say just to 4.75V as on the (apparently!) heavily loaded USB port next to me, this has the same effect as changing Vo from 0.45V to 0.7V and whilst the LED is almost
as bright as ever, the contrast is fading badly.
Now there are
some LCD displays available which operate from a 3.3V supply. This is interesting - they do this by incorporating a "charge pump" IC on the display module - you will notice the SOP "footprint" for this option labelled "U3" on the back of your LCD module and a soldered jumper "J1" which bypasses the charge pump (so if you have a 3.3V module, you could switch it to 5V and back if you wanted to). This charge pump boosts the internal supply voltage to 5V while the HD44780 happily accepts the 3.3V logic inputs. You still adjust the Vo to about 0.45V as before, though with the potentiometer now connected across 3.3V rather then 5, its position will be somewhat different.