Hay algo extraño en la medición, porque si la frecuencia es de 20KHz y solamente varías el ancho del pulso (la frecuencia sigue siendo la misma), la frecuencia de la señal que mides en la alimentación debería también ser de 20KHz en caso de que este ruido sea introducido por el mismo PWM...
Pero según las gráficas, si no me equivoco, dice que la frecuencia de esos pulsos es de unos 140 Hz. Esto último no me termina de cerrar.
Igualmente, me parece a mí que el problema es que el pico de corriente que necesitan los LEDs para encender no te lo puede entregar la fuente. Aumenta aun más el valor del capacitor que conectas entre 12V y masa.
Para filtrar el 7805, la hoja de datos te recomienda colocar a la entrada del mismo un capacitor de 330nF y a la salida otro de 100nF, colocar más cosas no tendría sentido.
Por otro lado en cuanto al código, te recomiendo sacar las siguientes líneas fuera del while:
setup_adc_ports(all_analog);
delay_us (20);
setup_adc (ADC_CLOCK_INTERNAL);
Con una vez que hagas el seteo ya es suficiente.
Y si la única función de este circuito es regular el ancho del pulso, ¿para que usas las siguientes líneas?
setup_adc(adc_off);
SETUP_ADC_PORTS(no_ANALOGs);
Estás activando y desactivando todo el tiempo el ADC.