Since it's a power supply, you don't need to measure negative voltages, and you can increase your range.
If you use a 4.096V reference like the ADR392 (0.12%, 9 ppm/C) or the MAX6126 (.02%, 5 ppm/C) then you can use a 12-bit ADC on the CPU, and get 4.096/4096 = 1mV resolution for an input scale of 0-4.096V, and you won't need to calibrate it.
With this setup, you will have to scale the input (divide it by 10) when the voltage to be measured is greater than about 4V, so this will give you 2 ranges... 0-4.096V and 0-40.96. You can autorange easily with just 2 ranges... when you are on the first range and your ADC output is above 4000 counts or so, you set an output port bit that enables a resistor divide by 10 on the input voltage and move the decimal point to the right on your display. Reverse that going down. Add some hysteresis so you don't flip between ranges at the transition point, ie.. up range at 4090, downrange at 4050 or so. You'll need to protect the ADC input from voltages higher than its maximum allowable input.
This will give you a maximum voltage of 40V (you can always add another range too, if you need it)
If you really must have 0-50V, then use a 5V reference with the same auto-ranging plan, a single divide by 10 switched in near the 4090 count and switched out near the 4050. Your display will be out by 1mV some of the time, because a 5.0V reference with a 12 bit ADC gives 1.22mv for each count. (with 0-4.096V it will also likely be out sometimes by 1mV... you can't help that, but it will be out less times than if you use a 5V reference).
You'll still have to deal with the voltage and current common reference issues that kxenos pointed out (i.e. your GND reference for measurement). If you can find a CPU with a 12-bit ADC with differential inputs, that would be best and will help with this.
Choosing the CPU with an appropriate ADC can be tricky, because you have to get one that can handle a 4.096V input. Many cannot. I haven't looked at CPUs with 12-bit ADC's, however, the LTC2302 is a 12-bit differential ADC that can handle inputs up to the reference, 0-4.096 and has a unipolar count output where the count 0-4096 is mapped to 0-4.096 if you use a 4.096V reference. So one option is to use an external ADC and save money with a lower cost CPU with little features, i.e. a cheap PIC with no ADC or just an 8-bit ADC onboard.
EDIT: just took a look at CPUs, the MSP430AFE232 is just a little over $2, has 2x24bit differential ADCs, a hardware multiplier for Watts display, has an internal reference, and can use the external reference too, plus its got a whole crapload of other stuff you won't use, but it's cheaper than 2 external ADCs plus a micro, and if you can use the internal reference it will save you a bit (but the internal reference might not be great)