J
jojokatada
Guest
salve
è possibile utilizzare 4 ds1820 uno pic16f84a che saranno quattro diversi visualizzazione della temperatura su 4 linee di lcd?
finora il lavoro con 1 ds1820 perché sto utilizzando uno 4x20 lcd.
codice di esempio
DEFINE LCD_DREG PORTA 'LCD porta dati
DEFINE LCD_DBIT 0 'LCD a partire bit 0 o 4
DEFINE LCD_RSREG PORTA 'LCD registro selezionare porto
DEFINE LCD_RSBIT 4 'LCD registro selezionare bit
DEFINE LCD_EREG PORTB 'LCD consentire porto
DEFINE LCD_EBIT 3 'LCD consentire bit
DEFINE LCD_BITS 4 'LCD dimensioni autobus 4 o 8
DEFINE LCD_LINES 4 'Numero di linee su display LCD
DEFINE LCD_COMMANDUS 2000 'Comando tempo di ritardo in noi
DEFINE LCD_DATAUS 50 'Dati in ritardo di noi
simbolo DQ1 = PORTB.4 'DQ connettersi a RB4
DQ2 simbolo = PORTB.0
SIMBOLO DQ3 = PORTB.1
SIMBOLO DQ4 = PORTB.2
temperatura var parola
count_remain var byte
count_per_c var byte
var temperature1 parola
count_remain1 var byte
count_per_c1 var byte
var temperature2 parola
count_remain2 var byte
count_per_c2 var byte
var temperature3 parola
count_remain3 var byte
count_per_c3 var bytepausa 100Main: 'TEMP 1
owout DQ1, 1, [$ CC, $ 44]
OWin DQ1, 4, [count_remain]
se count_remain = 0 allora
owout DQ1, 1, [$ CC, $ BE]
owin DQ1, 0, [temperature.LOwBYTE, temperature.Highbyte, Skip 4, count_remain, count_per_c]
endif
temperatura = (((temperatura>> 1) * 100) - 25) (((count_per_c - count_remain) * 100) / count_per_c)
lcdout $ FE, 1
LCDOUT "Ambiente temp1", dicembre (temperatura / 100), "." Dec2 temperatura, "C"
1000 pausa
'TEMP 2
owout DQ2, 1, [$ CC, $ 44]
OWin DQ2, 4, [count_remain1]
se count_remain1 = 0 allora
owout DQ2, 1, [$ CC, $ BE]
owin DQ2, 0, [temperature1.LOwBYTE, temperature1.Highbyte, Skip 4, count_remain1, count_per_c1]
endif
temperature1 = (((temperature1>> 1) * 100) - 25) (((count_per_c1 - count_remain1) * 100) / count_per_c)
lcdout $ FE, $ C0
LCDOUT "Ambiente temp2", dicembre (temperature1 / 100), "." Dec2 temperature1, "C"
1000 pausa
'TEMP 3
owout DQ3, 1, [$ CC, $ 44]
OWin DQ3, 4, [count_remain2]
se count_remain2 = 0 allora
owout DQ3, 1, [$ CC, $ BE]
owin DQ3, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Skip 4, count_remain2, count_per_c2]
endif
temperature2 = (((temperature2>> 1) * 100) - 25) (((count_per_c2 - count_remain2) * 100) / count_per_c2)
lcdout $ FE, $ 94
LCDOUT "Ambiente temp2", dicembre (temperature2 / 100), "." Dec2 temperature2, "C"
1000 pausa
'TEMP 4
owout DQ4, 1, [$ CC, $ 44]
OWin DQ4, 4, [count_remain2]
se count_remain2 = 0 allora
owout DQ4, 1, [$ CC, $ BE]
owin DQ4, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Skip 4, count_remain2, count_per_c2]
endif
temperature2 = (((temperature2>> 1) * 100) - 25) (((count_per_c2 - count_remain2) * 100) / count_per_c2)
lcdout $ FE, $ D4
LCDOUT "Ambiente Temp4", dicembre (temperature2 / 100), "." Dec2 temperature2, "C"
1000 pausa
goto Main
fine
finora non compilare
il messaggio di errore
[218] indirizzo 3ffth limite superato
Se qualcuno ha qualche idea su quello che può essere sbagliato o suggerimenti, sarebbe molto apprezzato [/ list]
è possibile utilizzare 4 ds1820 uno pic16f84a che saranno quattro diversi visualizzazione della temperatura su 4 linee di lcd?
finora il lavoro con 1 ds1820 perché sto utilizzando uno 4x20 lcd.
codice di esempio
DEFINE LCD_DREG PORTA 'LCD porta dati
DEFINE LCD_DBIT 0 'LCD a partire bit 0 o 4
DEFINE LCD_RSREG PORTA 'LCD registro selezionare porto
DEFINE LCD_RSBIT 4 'LCD registro selezionare bit
DEFINE LCD_EREG PORTB 'LCD consentire porto
DEFINE LCD_EBIT 3 'LCD consentire bit
DEFINE LCD_BITS 4 'LCD dimensioni autobus 4 o 8
DEFINE LCD_LINES 4 'Numero di linee su display LCD
DEFINE LCD_COMMANDUS 2000 'Comando tempo di ritardo in noi
DEFINE LCD_DATAUS 50 'Dati in ritardo di noi
simbolo DQ1 = PORTB.4 'DQ connettersi a RB4
DQ2 simbolo = PORTB.0
SIMBOLO DQ3 = PORTB.1
SIMBOLO DQ4 = PORTB.2
temperatura var parola
count_remain var byte
count_per_c var byte
var temperature1 parola
count_remain1 var byte
count_per_c1 var byte
var temperature2 parola
count_remain2 var byte
count_per_c2 var byte
var temperature3 parola
count_remain3 var byte
count_per_c3 var bytepausa 100Main: 'TEMP 1
owout DQ1, 1, [$ CC, $ 44]
OWin DQ1, 4, [count_remain]
se count_remain = 0 allora
owout DQ1, 1, [$ CC, $ BE]
owin DQ1, 0, [temperature.LOwBYTE, temperature.Highbyte, Skip 4, count_remain, count_per_c]
endif
temperatura = (((temperatura>> 1) * 100) - 25) (((count_per_c - count_remain) * 100) / count_per_c)
lcdout $ FE, 1
LCDOUT "Ambiente temp1", dicembre (temperatura / 100), "." Dec2 temperatura, "C"
1000 pausa
'TEMP 2
owout DQ2, 1, [$ CC, $ 44]
OWin DQ2, 4, [count_remain1]
se count_remain1 = 0 allora
owout DQ2, 1, [$ CC, $ BE]
owin DQ2, 0, [temperature1.LOwBYTE, temperature1.Highbyte, Skip 4, count_remain1, count_per_c1]
endif
temperature1 = (((temperature1>> 1) * 100) - 25) (((count_per_c1 - count_remain1) * 100) / count_per_c)
lcdout $ FE, $ C0
LCDOUT "Ambiente temp2", dicembre (temperature1 / 100), "." Dec2 temperature1, "C"
1000 pausa
'TEMP 3
owout DQ3, 1, [$ CC, $ 44]
OWin DQ3, 4, [count_remain2]
se count_remain2 = 0 allora
owout DQ3, 1, [$ CC, $ BE]
owin DQ3, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Skip 4, count_remain2, count_per_c2]
endif
temperature2 = (((temperature2>> 1) * 100) - 25) (((count_per_c2 - count_remain2) * 100) / count_per_c2)
lcdout $ FE, $ 94
LCDOUT "Ambiente temp2", dicembre (temperature2 / 100), "." Dec2 temperature2, "C"
1000 pausa
'TEMP 4
owout DQ4, 1, [$ CC, $ 44]
OWin DQ4, 4, [count_remain2]
se count_remain2 = 0 allora
owout DQ4, 1, [$ CC, $ BE]
owin DQ4, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Skip 4, count_remain2, count_per_c2]
endif
temperature2 = (((temperature2>> 1) * 100) - 25) (((count_per_c2 - count_remain2) * 100) / count_per_c2)
lcdout $ FE, $ D4
LCDOUT "Ambiente Temp4", dicembre (temperature2 / 100), "." Dec2 temperature2, "C"
1000 pausa
goto Main
fine
finora non compilare
il messaggio di errore
[218] indirizzo 3ffth limite superato
Se qualcuno ha qualche idea su quello che può essere sbagliato o suggerimenti, sarebbe molto apprezzato [/ list]