hola perik, mira creo que lo primero que se debe hacer es decir el grado de conocimientos y experiencias que hayas tenido, que compilador utilizas, cual simulador utilizas. yo la modulacion por anchura de pulso la vi muy sencilla al manejar el compilador MikroC ya que tiene librerias muy faciles de utilizar pot ejemplo:
Determinar las frecuencia:
Pwm_Init(5000); // a 5Khz
Inicias y paras la modulacion
Pwm_Start();
Pwm_Stop();
Modificas la modulacion
Pwm_Change_Duty(x); // x de 0 a 255
como veras pocos pasos...
ya viene por tu creatividad modificar la modulacion de anchura de pulso por un potenciometro, botones, o un teclado matricial...Mostrarlo por Display 7 segmentos, display LCD....