Bueno, te comento que hace tiempo trabajé en un circuito como este: Lo hice de una manera muy sencilla:
Usé un PIC16F84, un teclado matricial de 0 a 9 * y # que tiene salida BCD y señal de strobe (para indicar la presencia de un dígito). Como salida simplemente coloqué un led Verde para indicar la apertura de la puerta (no usé solenoide para abrir la puerta ya que lo hice a modo de ejercicio y no para instalarlo) y un LED rojo para indicar que la clave no fue correcta.
Cómo funciona?
Sencillo, al inicio el programa lo que hace es esperar por dígito Una vez que se detecta la presencia de un dígito, se captura, seguidamente se guarda en el registro correspondiente y se espera por el segundo digito. Una vez que se tienen los tres (pues usar un contador para saber que te llegaron los 3), se comparan los 3 dígitos introducidos con los correspondientes a la clave prefijada en la misma memoria de programa y si es correcto se enciende el LED verde por dos segundos y luego se apaga y vuelve al estado inicial, si no es correcta, enciendes el Rojo por dos segundos y luego se apaga y vuelve al estado inicial.
La conexión del circuito, es sencilla:
El teclado tiene 4 bits (digito) y 1 bit (strobe), por lo que lo puedes conectar al puerto RA. Y los dos LED’s los conectas al puerto RB.
Esto, por supuesto puedes hacerlo mucho más complicado. Podrías usar una pantalla LCD para mostrar información o displays de 7 segmentos usando la técnica de multiplexación para ahorrar puertos, también podrías realizar una rutina para el cambio de clave usando la EEPROM de datos, etc. Pero creo que para empezar a calentar, este te viene bien.
Saludos,