Sie sind auf Seite 1von 15

CONTROL DISPLAY 7 SEGMENTOS CON CD4026

Control de display 7 segmentos con CD4026


La implementacin de display 7 segmentos en nuestros proyectos, puede darle un toque de distincin o bien, una cuota mayor de destreza. Si bien todo depende de la programacion a cargar en nuestro microcontrolador lo que hace a un sistema eficaz, es sabido que cuando mas funciones tenemos, mejores prestaciones tendremos con el prototipo terminado y funcionando. En nuestro siguiente ejemplo, veremos como implementar tan solo 2 salidas de nuestro microcontrolador picaxe, para el control de 2 display 7 segmentos. Sintticamente, analizando el diagrama del circuito inferior, podemos notar que incluye dos pequeos circuitos integrados (CD4026B Decade Counter / Decoder and Driver) Sin explayarme mucho en el funcionamiento de este CI, les comento a modo breve, que este funciona como decodificador para display de 7 segmentos. Este circuito integrado, segn la cantidad de pulsos que se le d en el pin de entrada marcado como CLOCK, nos generara una salida BCD que excitara el display Si nosotros queremos llevar a cero el display, con tan solo poner en alto la entrada RESET, llevaremos acabo tal cometido.

;************************************************************************* ;***** PICAXE - CD4026 7Seg - Controlador de temperatura para acuarios ************ ;************************************************************************* symbol sonido = b0 symbol acumulador = b1 symbol lm35 = b2 symbol prog1 = b3 symbol prog2 = b4 symbol cero = b5 symbol resistencia1 = output7 symbol resistencia2 = output6 symbol led_prog = output5 symbol led_encendido = output4 symbol led_apagado = output3 symbol led_noprogam = output2 symbol pinreset = output1 symbol pinclock = output0 menu: let b0=255 high led_apagado pause 500 low led_apagado low resistencia1 low resistencia2 if pin2 = 1 then prog_salida1 if pin6 = 1 then prog_salida2 if pin7 = 1 then encender gosub reset0 goto menu ;*************************************************************************** ;***************************** Modo Encendido ******************************* ;*************************************************************************** encender: high led_encendido pause 500 toggle led_encendido gosub leertemp if b3 < b2 then gosub off_rele1 if b4 < b2 then gosub off_rele2 if b3 > b2 then gosub on_rele1 if b4 > b2 then gosub on_rele2 if prog1 = 0 then no_program1 if prog2 = 0 then no_program2 if pin7 = 1 then menu

pause 500 goto encender on_rele1: high resistencia1 pause 250 return on_rele2: high resistencia2 pause 250 return off_rele1: low resistencia1 pause 250 return off_rele2: low resistencia2 pause 250 return leertemp: readadc 1,b2 return no_program1: if prog1 = 0 then aviso1 return aviso1: high led_noprogam pause 750 low led_noprogam pause 750 high led_noprogam pause 750 low led_noprogam pause 750 goto menu no_program2: if prog2 = 0 then aviso2 return aviso2: high led_noprogam pause 750 low led_noprogam pause 750 high led_noprogam pause 750

low led_noprogam pause 750 high led_noprogam pause 750 low led_noprogam pause 750 high led_noprogam pause 750 low led_noprogam pause 750 goto menu reset0: for b5 = 1 to 2 pulsout 1,10 next b5 return ;*************************************************************************** ;***************************** Modo Programacion **************************** ;*************************************************************************** prog_salida1: high led_prog pause 250 toggle led_prog readadc 0,b3 let b1=0 if b3 <= 5 then a_1 if b3 <= 10 then a_2 if b3 <= 40 then a_3 if b3 <= 45 then a_4 if b3 <= 50 then a_5 if b3 <= 55 then a_6 if b3 <= 60 then a_7 if b3 <= 65 then a_8 if b3 <= 70 then a_9 if b3 <= 75 then a_10 if b3 <= 80 then a_11 if b3 <= 85 then a_12 if b3 <= 90 then a_13 if b3 <= 95 then a_14 if b3 <= 100 then a_15 if b3 <= 105 then a_16 if b3 <= 110 then a_17 if b3 <= 115 then a_18 if b3 <= 120 then a_19 if b3 <= 125 then a_20 if b3 <= 130 then a_21

if b3 <= 135 then a_22 if b3 <= 140 then a_23 if b3 <= 145 then a_24 if b3 <= 150 then a_25 if b3 <= 155 then a_26 if b3 <= 160 then a_27 if b3 <= 165 then a_28 if b3 <= 170 then a_29 if b3 <= 175 then a_30 if b3 <= 180 then a_31 if b3 <= 185 then a_32 if b3 <= 190 then a_33 if b3 <= 195 then a_34 if b3 <= 200 then a_35 if b3 <= 205 then a_36 if b3 <= 206 then a_37 if b3 <= 206 then a_38 if b3 <= 206 then a_39 if b3 <= 206 then a_40 if pin7 = 1 then menu goto prog_salida1 prog_salida2: high led_prog pause 250 toggle led_prog readadc 0,b4 let b1=0 if b4 = 1 then a_1 if b4 = 10 then a_2 if b4 = 40 then a_3 if b4= 45 then a_4 if b4= 50 then a_5 if b4= 55 then a_6 if b4= 60 then a_7 if b4= 65 then a_8 if b4= 70 then a_9 if b4= 75 then a_10 if b4= 80 then a_11 if b4= 85 then a_12 if b4= 90 then a_13 if b4= 95 then a_14 if b4= 100 then a_15 if b4= 105 then a_16 if b4= 110 then a_17 if b4= 115 then a_18

if b4= 120 then a_19 if b4= 125 then a_20 if b4= 130 then a_21 if b4= 135 then a_22 if b4= 140 then a_23 if b4= 145 then a_24 if b4= 150 then a_25 if b4= 155 then a_26 if b4= 160 then a_27 if b4= 165 then a_28 if b4= 170 then a_29 if b4= 175 then a_30 if b4= 180 then a_31 if b4= 185 then a_32 if b4= 190 then a_33 if b4= 195 then a_34 if b4= 200 then a_35 if b4= 205 then a_36 if b4= 206 then a_37 if b4= 206 then a_38 if b4= 206 then a_39 if b4= 206 then a_40 if pin7 = 1 then menu goto prog_salida2 ;*************************************************************************** ;***************************** Rutina Display 7-Seg **************************** ;*************************************************************************** display: a_1: for b1 = 1 to 1 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_2: for b1 = 1 to 2 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_3: for b1 = 1 to 3 pulsout 0, 10

next b1 pause 1000 gosub reset0 goto menu a_4: for b1 = 1 to 4 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_5: for b1 = 1 to 5 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_6: for b1 = 1 to 6 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_7: for b1 = 1 to 7 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_8: for b1 = 1 to 8 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_9: for b1 = 1 to 9 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu

a_10: for b1 = 1 to 10 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_11: for b1 = 1 to 11 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_12: for b1 = 1 to 12 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_13: for b1 = 1 to 13 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_14: for b1 = 1 to 14 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_15: for b1 = 1 to 15 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_16: for b1 = 1 to 16 pulsout 0, 10

next b1 pause 1000 gosub reset0 goto menu a_17: for b1 = 1 to 17 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_18: for b1 = 1 to 18 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_19: for b1 = 1 to 19 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_20: for b1 = 1 to 20 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_21: for b1 = 1 to 21 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_22: for b1 = 1 to 22 pulsout 0, 10 next b1 pause 1000 gosub reset0

goto menu a_23: for b1 = 1 to 23 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_24: for b1 = 1 to 24 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_25: for b1 = 1 to 25 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_26: for b1 = 1 to 26 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_27: for b1 = 1 to 27 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_28: for b1 = 1 to 28 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_29: for b1 = 1 to 29 pulsout 0, 10

next b1 pause 1000 gosub reset0 goto menu a_30: for b1 = 1 to 30 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_31: for b1 = 1 to 31 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_32: for b1 = 1 to 32 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_33: for b1 = 1 to 33 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_34: for b1 = 1 to 34 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_35: for b1 = 1 to 35 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu

a_36: for b1 = 1 to 36 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu a_37: for b1 = 1 to 37 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_38: for b1 = 1 to 38 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_39: for b1 = 1 to 39 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto men a_40: for b1 = 1 to 40 pulsout 0, 10 next b1 pause 1000 gosub reset0 goto menu end ;*************************************************************************** ;******************************* Fin Programa ******************************** ;***************************************************************************

ANLISIS DEL PROGRAMA MODO DE FUNCIONAMIENTO Sensor, es la entrada del sensor de temperatura Potencimetro, setea valor de temperatura deseado Pulsador 2, programa la salida de la resistencia 1. Pulsador 6, programa la salida de la resistencia 2 Pulsador 7, da la orden de encender o apagar el sistema. Salida 7 - Resistencia 1 Salida 6 - Resistencia 2 Salida 5 - Led indicador modo programacion Salida 4 - Led indicador modo encendido Salida 3 - Led indicador modo apagado Salida 2 - Led indicador no hay programa FUNCIONAMIENTO A_ En modo apagado, presionar pulsador 2 y con el led de programacion encendido configuramos la temperatura de corte deseada con el potencimetro. Para salir del modo config1,presionamos el pulsador 7 y verificamos que el led de programacion se apaga. B_ En modo apagado y previamente cumplido el anterior paso, presionamos el pulsador 6 y con el led de programacion encendido configuramos la temperatura de corte deseada con el potencimetro. Para salir del modo config2, presionamos el pulsador 7 y verificamos que el led de programacion se apaga. C_ Para encender el equipo, previo al seteo de temperatura, presionamos el ;pulsador 7 y verificamos que el led de encendido este brillando. En el caso de que se encienda el led de no programacion, significa que no hemos programado anteriormente las temperaturas y deberemos presionar el pulsador 7 para apagar el equipo y repetir los pasos A y B. Normalmente, si todo esta correcto, el equipo enciende y segn las ;temperaturas, encender las dos resistencias o tan solo una dependiendo la ;programacion que le dimos a cada una y la temperatura que interpreta el sensor. Una ves llegada a la temperatura de corte, ninguna de las dos debera de estar ;encendida.

AGRADECIMIENTOS
Al Club Saber Electrnica y Editorial Quark por la donacin de los elementos necesarios para que este proyecto se pueda llevar a cabo en forma fsica. A mis amigos Ramn y Pablo, que me estn ayudando con la versin final del software de PC que se encargara de darle una funcin mas a nuestro sistema (monitorear y programar el sistema en caso querer emplear un PC como mtodo alternativo de control).

SOBRE LA PRECISIN DE ESTE TEXTO


Se realiz un gran esfuerzo para asegurar la precisin de este texto y los experimentos, pero puede haber errores de tipografa. Si usted encuentra errores o algn tema que requiera informacin adicional, por favor infrmelo a prof.martintorres@educ.ar, as podemos continuar mejorando la calidad de nuestra documentacin.

Das könnte Ihnen auch gefallen