'****************************************************************
'* Name : TERMODYSP.BAS *
'* Author : Max E. Reyes Vera Juárez *
'* Notice : Copyright (c) 2006 Protegido por leyes de Autor *
'* : All Rights Reserved *
'* Date : 24/11/2006 *
'* Version : 1.0 *
'* Notes : Para Displays de Anodo Comun, si se desea usar *
'* : Displays de catodo comun sera necesario invertir *
'* : los 1's por 0's en las constantes y los LOW's por *
'* : HIGH's dentro de los SELECT CASE *
'* : *
'* : Se usa RC_OSC ya que es un diseño SMD y no se *
'* : usan Decodificadores para reducir el Tamaño *
' *
' *
' A *
' 1111 *
' 1 1 *
' F 1 1 B *
' 1 G 1 *
' 1111 DISPOSICION DEL DISPLAY *
' 1 1 *
' E 1 1 C *
' 1 1 *
' 1111 *
' D *
' * *
'A --> PORTB.0 *
'B --> PORTB.1 *
'C --> PORTB.2 *
'D --> PORTB.3 *
'E --> PORTB.4 *
'F --> PORTB.5 *
'G --> PORTB.6 *
'****************************************************************
@ DEVICE XT_OSC, WDT_OFF, PROTECT_OFF
include "modedefs.bas"
'CONSTANTES PARA VER EL NUMERO EN EL DISPLAY
'Catodo comun Anodo comun
_0 CON 64 '%0111111 %1000000
_1 CON 121 '%0000110 %1111001
_2 CON 36 '%1011011 %0100100
_3 CON 48 '%1001111 %0110000
_4 CON 25 '%1100110 %0011001
_5 CON 18 '%1101101 %0010010
_6 CON 2 '%1111101 %0000010
_7 CON 120 '%0000111 %1111000
_8 CON 0 '%1111111 %0000000
_9 CON 16 '%1101111 %0010000
TEMP var word
DECENA VAR BYTE ' variables pra mostrar
UNIDAD VAR BYTE
x var byte
i var byte
c var byte
LSB var TEMP.BYTE0 ' Variable para medir la temperatura
MSB VAR TEMP.BYTE1
SDA VAR PORTA.0 'BUS I2C
SCL VAR PORTA.1
DYS1 VAR PORTA.2 'PINES PARA MULTIPLEXAR
DYS2 VAR PORTA.3
LED VAR PORTB.7
TRISB = 0
HIGH LED
I2CWRITE SDA,SCL,$90,[00] ' CONFIGURACION DEL TCN75 APUNTANDO AL REGISTRO DE TEMPERATURA
PAUSE 1000
LOW LED
goto lee_y_muestra 'saltamos a leer la temperatura
s:
low led
if c=255 then lee_y_muestra ' cada 100 ciclos leer la temperatura
x = msb
serout2 porta.4,84,["temp: ", dec x,10,13]
decena = x dig 1 'desplegado de la temperatura
select case decena
case 0
low dys2
high DYS1
PORTB = _0
case 1
low dys2
high DYS1
PORTB = _1
case 2
low dys2
high DYS1
PORTB = _2
case 3
low dys2
high DYS1
PORTB = _3
case 4
low dys2
high DYS1
PORTB = _4
case 5
low dys2
high DYS1
PORTB = _5
case 6
low dys2
high DYS1
PORTB = _6
case 7
low dys2
high DYS1
PORTB = _7
case 8
low dys2
high DYS1
PORTB = _8
case 9
low dys2
high DYS1
PORTB = _9
END SELECT
pause 5
UNIDAD = x DIG 0
select case UNIDAD
case 0
low dys1
high DYS2
PORTB = _0
case 1
low dys1
high DYS2
PORTB = _1
case 2
low dys1
high DYS2
PORTB = _2
case 3
low dys1
high DYS2
PORTB = _3
case 4
low dys1
high DYS2
PORTB = _4
case 5
low dys1
high DYS2
PORTB = _5
case 6
low dys1
high DYS2
PORTB = _6
case 7
low dys1
high DYS2
PORTB = _7
case 8
low dys1
high DYS2
PORTB = _8
case 9
low dys1
high DYS2
PORTB = _9
END SELECT
pause 5
c=c+1
goto s
LEE_Y_MUESTRA:
high led
I2CREAD SDA,SCL,$91,[TEMP] ' LEYENDO LA TEMPERATURA AMBIENTE
c=0
goto s
END