Muchas son las ocasiones donde se necesitan mostrar magnitudes o números a través de displays de 7 segmentos, bien sea por su simplicidad, su reducido costo o porque la aplicación requiere que el número mostrado sea simple y llamativo.
Esta rutina permite visualizar un numero en decimal de 0000 hasta 9999 en 4 displays de 7 segmentos a partir de una variable tipo word. Si se tiene un numero hexadecimal en la variable, se mostrará en los displays el valor en decimal. Si se le asigna un valor decimal a la variable, el resultado en el display será el mismo número en decimal. Por ejemplo, si la variable tipo word tiene el número 3FFH, el resultado en los displays será 1023. Si la variable tipo word tiene el número 9876, el resultado en los displays será el mismo, 9876.
program Display7'Programa números con displays de 7 segmentos ****************************************
'Rutina que permite visualizar con 4 displays de 7 segmentos un número con rango de
'0000 hasta 9999 a partir de una variable tipo word. Se usa una entrada analógica para
'visualizar su valor numérico como ejemplo.
'Mikrobasic 7.2
'
'Creado y verificado por: Alejandro De Nóbrega
'Web: http://www.jvmbots.es
'
'-HARDWARE:
' MCU: PIC 16F88
' Cristal o resonador: 4Mhz
' 4- Displays cátodo común. (RB0) --> SegA, (RB1) --> SegB, ..... (RB6) --> SegG.
' 1- Potenciómetro de 10K (RA0)
' 7- Resistencias de 220R
' 4- Resistencias de 1K
' 4- Transistores NPN de uso general (2N2222)
' El cátodo del display de la derecha (menos significativo) se conecta a través
' del transistor, cuya base se conecta en RA1, el segundo display en RA2, el
' tercer display en RA3 y el último display en RA4.
'************************************************************************************
dim valor, conv, aux as word
dim i as byte
const numero as byte[10] = (63, 6, 91, 79, 102, 109, 125, 7, 127, 111)
main:
OPTION_REG = 0
INTCON = 0
ANSEL = %00000001
CMCON = %00000111
TRISA = %00000001
TRISB = %00000000
PORTB = 0
PORTA = 0
while true
valor = ADC_read(0) 'variable a mostrar
conv = Dec2Bcd16(valor)
for i = 1 to 4
aux = conv and $000F
PORTB = numero[aux]
PORTA.i = 1
delay_ms(1)
PORTA.i = 0
conv = word(conv >> 4)
next i
wend
end.






