Emisor:
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : Miguel Noe Garcia Perez *
'* Notice : Copyright (c) 2010 Iberica 2000 *
'* : All Rights Reserved *
'* Date : 08/09/2010 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device 16F876
XTAL = 4
' LCD pin Configuracion
lcd_type = 0
LCD_LINES = 4
LCD_DTPIN = PORTb.4
LCD_RSPIN = PORTb.3
LCD_ENPIN = PORTb.2
LCD_INTERFACE = 4
'***************************************************************************************
Cls ' Clear LCD
ALL_DIGITAL = True ' Set ports to digital mode
Clear ' Clear buffers
'***************************************************************************************
' Define ADC parameters
ADIN_RES = 10 ' 10-bit result required
ADIN_TAD = FRC ' RC OSC chosen
ADIN_STIME = 50 ' Allow 50us sample time
PORTB_PULLUPS = ON ' Enable PORTB pull-ups
TRISA = %11111111 ' Set PORTA to all input
ADCON1 = %10000010 ' Set PORTA analog and right justify result
'***************************************************************************************
Symbol Pin = Portc.0
symbol Led = portc.7
'***************************************************************************************
Dim ADVALA AS WORD ' Create ADVAL to store result
Dim ADVALB AS WORD ' Create ADVAL to store result
Dim ADVALC AS WORD ' Create ADVAL to store result
Dim ADVALD AS WORD ' Create ADVAL to store result
Dim Raw as Word
Dim Value as Word
Dim Volts as Byte
Dim Millivolts as Word
dim N As Byte
'***************************************************************************************
' '(0) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,64,$00,$04,$04,$04,$0E,$0E,$15,$15
' '(1) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,72,$15,$0A,$15,$04,$0E,$0E,$15,$15
' '(2) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,80, $04,$04,$04,$00,$0E,$0A,$0A,$0E
' '(3) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,88, $0E,$0A,$0A,$0E,$00,$04,$04,$04
' '(4) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,96,$00,$0E,$0A,$0A,$1B,$00,$00,$00
' '(5) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,104,$00,$00,$00,$00,$1B,$0A,$0A,$0E,$00
' '(6) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,112, $00,$00,$00,$1B,$0A,$0A,$0E,$00
' '(7) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
' Print 254,120,$10,$10,$10,$10,$10,$10,$10,$10
'***************************************************************************************
'************** Presentacion ***********************************************************
'***************************************************************************************
' Delayms 500 ' Wait .5 second
' Cls ' Clear LCD
' ' 1234567890123456
' Print at 1,1," Otro Invento"
' Print at 2,1," de Miguelito"
' Delayms 2000
' CLS
' ' 1234567890123456
' Print at 1,1,"Telemetria V1.0"
' Print at 2,1," 433,92 MHz "
' Delayms 2000
'
Inicio:
Cls
print at 1,1,0,1,2,3,4,5,6,7
PRINT AT 2,1,"EMITIENDO..." '1234567890123456
' nOE:
' 'Serout Pin,BaudMode[x],[" 123 MIGUEL NOE GARCIA PEREZ miguel noe garcia perez "] ' Display "Hello", next line
' ' 12345678901234561234567890123456
' 'Serout Pin,16572,["A Miguel Noe es un tio estupendo.."] ' Display "Hello", next line
' Serout Pin, 16572 ,["A Este invento ya esta inventado."] ' Display "Hello", next line
' 'Delayms 50 ' Wait .5 second
' ' 1234567890123456
' GOTO nOE
'*******************************************************************************************
Infor:
GOSUB Lee_Temperatura
gosub Lee_Vcc
'gosub PintaTemperatura
'gosub Voltage
'goto infor
Transmitir:
'for n =0 to 1500
'high Radio 65535 minimo 16468 max
high led
Serout Pin, 16468 ,["NOE",dec3 ADVALA,dec3 ADVALB,dec3 ADVALC,dec3 ADVALd,dec2 Volts,dec2 Millivolts] ' Display "Hello", next line
' low Radio
low led
'delayms 20
'next
goto Infor
' S U B R U T I N A S
'*******************************************************************************************
'*******************************************************************************************
'*******************************************************************************************
Lee_Temperatura:
ADVALA = Adcin 0 ' Read channel 0 to adval (0-1023)
ADVALB = Adcin 1 ' Lee Canal 1 Para ADVALB
ADVALC = Adcin 2
ADVALd = Adcin 3
ADVALa = (ADVALa */ 500) >> 2 ' Igualito que (advab *500)/1024
ADVALb = (ADVALb */ 500) >> 2 ' equates to: (adval * 500)/1024
ADVALc = (ADVALc */ 500) >> 2 ' Igualito que (advab *500)/1024
ADVALd = (ADVALD */ 500) >> 2 ' equates to: (adval * 500)/1024
Return
Lee_Vcc:
Raw = adin 4 ' leer ADC
'******************************** Calculo de Tension *********************************
Value = 489 *(Raw / 10)
Volts = Value / 1000
Millivolts = (Value // 1000) / 10
return
'*******************************************************************************************
'******************** PINTA TEMPERATURA **********************************************
'*******************************************************************************************
PintaTemperatura:
cls
Print at 1,1,"T1 ",Dec (ADVALA/100), Dec2 ADVALA,"C"
Print at 2,1,"T2 ",Dec (ADVALB/100), Dec2 ADVALB,"C"
Print at 1,10,"T3 ",Dec (ADVALC/100), Dec2 ADVALC,"C"
Print at 2,10,"T4 ",Dec (ADVALD/100), Dec2 ADVALD,"C"
'delayms 2000
return
voltage:
cls
Print at 1,1,"Votimetro Bat "
Print at 2,1," ",Dec2 Volts,".",Dec2 Millivolts," Vcc" 'mostrar el resultado
'Delayms 2000
return
end
Receptor:
'****************************************************************
'* Name : emiTemp.BAS *
'* Author : Miguel Noe Garcia Perez *
'* Notice : Copyright (c) 2010 Iberica 2000 *
'* : All Rights Reserved *
'* Date : 10/03/2010 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device 16F877a
XTAL = 4
' LCD pin Configuracion
lcd_type = 0
LCD_LINES = 4
LCD_DTPIN = PORTb.4
LCD_RSPIN = PORTb.3
LCD_ENPIN = PORTb.2
LCD_INTERFACE = 4
DECLARE SERIAL_PARITY = ODD
Dim Temp as word
Dim Datos[16] As Byte ' Arreglo almacena serial
DIM SerData AS BYTE
dim Result as word
dim Address as word
Dim Index As Byte ' Variable de uso general
dim x As byte
dim Coder as word
'***************************************************************************************
'(0) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,64,$02,$07,$02,$00,$0A,$1F,$1F,$1F 'Bateria1
'(1) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,72,$02,$07,$02,$00,$0A,$1F,$11,$1F' Bateria 2
'(2) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,80, $00,$1C,$00,$00,$0A,$1F,$11,$1F' Bateria 3
'(3) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,88, $0E,$04,$0E,$0A,$1B,$11,$1B,$0E ' Motor
'(4) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,96,$1F,$0E,$1B,$15,$0A,$15,$0A,$1F ' Radiador
'(5) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,104,$00,$0A,$11,$15,$15,$11,$0A,$00 ' Discofreno
'(6) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,112, $1C,$06,$05,$1D,$1E,$1F,$1D,$00 ' Fuel
'(7) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,120,$10,$10,$10,$10,$10,$10,$10,$10
'***************************************************************************************
'************** Presentacion ***********************************************************
'***************************************************************************************
Delayms 500 ' Wait .5 second
Cls ' Clear LCD
' 1234567890123456
Print at 1,1," Otro Invento"
Print at 2,1," de Miguelito"
Delayms 2000
CLS
' 1234567890123456
Print at 1,1," Receptor RF"
Print at 2,1," 433,92 MHz "
Delayms 2000
cls
Print at 1,1," BaudRate:"
Print at 2,5,"9600"
Delayms 2000
Inicio:
Cls
cls
print at 1,1,"Esperando datos"
print at 2,5,"Espere..."
'
'*********** Espera A leer la N Para cojer el Tren de informacion ********************
'*********** 9600 Baudios ************************************************************
'*************************************************************************************
SERIN PORTc.0 ,16468 ,[ WAIT( "N" ) , SerData] '16468 '
cls
print at 1,1,"Conectando..."
delayms 500
Otro:
SERIN PORTc.0 ,16468 ,[ WAIT( "N" ) , SerData] '16468 '
'********************* Mete los datos en una cadena **********************************
' ****************** Los Datos emitidos son 4 de Temperaturas y 2 de voltage ********
'************************************************************************************
' DATOS [iNDEX] = 0 --------------> N
' DATOS [iNDEX] = 1 --------------> 0 --------------------
' DATOS [iNDEX] = 2 --------------> 0 Sensor Nº1 3 digitos
' DATOS [iNDEX] = 3 --------------> 0 --------------------
' DATOS [iNDEX] = 4 --------------> 0 --------------------
' DATOS [iNDEX] = 5 --------------> 0 Sensor Nº2 3 digitos
' DATOS [iNDEX] = 6 --------------> 0 --------------------
' DATOS [iNDEX] = 7 --------------> 0 --------------------
' DATOS [iNDEX] = 8 --------------> 0 Sensor Nº3 3 digitos
' DATOS [iNDEX] = 9 --------------> 0 --------------------
' DATOS [iNDEX] = 10 --------------> 0 --------------------
' DATOS [iNDEX] = 11 --------------> 0 Sensor Nº4 3 digitos
' DATOS [iNDEX] = 12 --------------> 0 --------------------
' DATOS [iNDEX] = 13 --------------> 0 --------------------
' DATOS [iNDEX] = 14 --------------> 0 voltios
' DATOS [iNDEX] = 15 --------------> 0 --------------------
' DATOS [iNDEX] = 16 --------------> 0 MiliVoltios
for Index = 0 to 16
SERIN PORTc.0 ,16468 ,[SerData]'16468 '
DATOS [iNDEX] = SERDATA
Next
'************************** PINTA PANTALLA DE DATOS *********************************
print at 1,1,"T1"
print at 1,7,"T2"
print at 1,13,"V"
print at 2,1,"T3"
print at 2,7,"T4"
print at 2,13,"M"
print at 2,16,1
print at 1,16,2
print at 1,3,3
print at 1,9,4
print at 2,3,5
print at 2,9,6
'************************** COLOCA LOS DATOS EN LA PANTALLA ***********************
x=4
for index = 1 to 3
Coder = Datos[Index]
print at 1,x,Coder
x=x+1
next
x=10
for index = 4 to 6
Coder = Datos[Index]
print at 1,x,Coder
x=x+1
next
x=4
for index = 7 to 9
Coder = Datos[Index]
print at 2,x,Coder
x=x+1
next
x=10
for index = 10 to 12
Coder = Datos[Index]
print at 2,x,Coder
x=x+1
next
x=14
for index =13 to 14
Coder = Datos[Index]
print at 1,x,Coder
x=x+1
next
x=14
for index = 15 to 16
Coder = Datos[Index]
print at 2,x,Coder
x=x+1
next
'delayms 1500
Goto Otro
END