J
jojokatada
Guest
nazdar
je možné využiť 4 ds1820 jeden pic16f84a, ktoré sa zobrazia štyri rôzne teploty o 4 riadky LCD?
Až doteraz sa tak pracovať s 1 ds1820, pretože já jsem s použitím 4x20 lcd.
ukážkový kód
DEFINÍCIA LCD_DREG PORTA 'LCD data portu
DEFINÍCIA LCD_DBIT 0 'LCD data počnúc bit 0 alebo 4
DEFINÍCIA LCD_RSREG PORTA 'LCD registra vyberte portu
DEFINÍCIA LCD_RSBIT 4 'LCD registra vyberte bit
DEFINÍCIA LCD_EREG PORTB 'LCD povoliť portu
DEFINÍCIA LCD_EBIT 3 'LCD umožní bit
DEFINÍCIA LCD_BITS 4 'LCD autobusovej veľkosti 4 alebo 8
DEFINÍCIA LCD_LINES 4 'Počet riadkov na LCD
DEFINÍCIA LCD_COMMANDUS 2000 'Command meškanie v nás
DEFINÍCIA LCD_DATAUS 50 'Data meškanie v nás
symbol DQ1 = PORTB.4 'DQ pripojte na RB4
DQ2 symbol = PORTB.0
SYMBOL DQ3 = PORTB.1
SYMBOL DQ4 = PORTB.2
Teplota var slovo
count_remain var byte
count_per_c var byte
temperature1 var slovo
count_remain1 var byte
count_per_c1 var byte
temperature2 var slovo
count_remain2 var byte
count_per_c2 var byte
temperature3 var slovo
count_remain3 var byte
count_per_c3 var bytepause 100Hlavné: 'TEMP 1
owout DQ1, 1, [$ CC $ 44]
OWin DQ1, 4, [count_remain]
ak count_remain = 0 then
owout DQ1, 1, [$ CC $ BE]
owin DQ1, 0, [temperature.LOwBYTE, temperature.Highbyte, Přeskočit 4, count_remain, count_per_c]
endif
teplota = (((teplota>> 1) * 100) - 25) (((count_per_c - count_remain) * 100) / count_per_c)
lcdout $ FE, 1
LCDOUT "Životné prostredie Temp1", december (teplota / 100), "." Dec2 teplota, "C"
pause 1000
'TEMP 2
owout DQ2, 1, [$ CC $ 44]
OWin DQ2, 4, [count_remain1]
ak count_remain1 = 0 then
owout DQ2, 1, [$ CC $ BE]
owin DQ2, 0, [temperature1.LOwBYTE, temperature1.Highbyte, Přeskočit 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 "Životné prostredie Temp2", december (temperature1 / 100), "." Dec2 temperature1, "C"
pause 1000
'TEMP 3
owout DQ3, 1, [$ CC $ 44]
OWin DQ3, 4, [count_remain2]
ak count_remain2 = 0 then
owout DQ3, 1, [$ CC $ BE]
owin DQ3, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Přeskočit 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 "Životné prostredie Temp2", december (temperature2 / 100), "." Dec2 temperature2, "C"
pause 1000
'TEMP 4
owout DQ4, 1, [$ CC $ 44]
OWin DQ4, 4, [count_remain2]
ak count_remain2 = 0 then
owout DQ4, 1, [$ CC $ BE]
owin DQ4, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Přeskočit 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 "Životné prostredie Temp4", december (temperature2 / 100), "." Dec2 temperature2, "C"
pause 1000
goto Hlavná
koniec
zatiaľ nedarí zostaviť
chybové správy
[218] adresa 3ffth limit prekročený
Ak niekto má nejaké názory na to, čo môže byť zle alebo akékoľvek tipy,
bolo by veľmi ocenili [/ list]
je možné využiť 4 ds1820 jeden pic16f84a, ktoré sa zobrazia štyri rôzne teploty o 4 riadky LCD?
Až doteraz sa tak pracovať s 1 ds1820, pretože já jsem s použitím 4x20 lcd.
ukážkový kód
DEFINÍCIA LCD_DREG PORTA 'LCD data portu
DEFINÍCIA LCD_DBIT 0 'LCD data počnúc bit 0 alebo 4
DEFINÍCIA LCD_RSREG PORTA 'LCD registra vyberte portu
DEFINÍCIA LCD_RSBIT 4 'LCD registra vyberte bit
DEFINÍCIA LCD_EREG PORTB 'LCD povoliť portu
DEFINÍCIA LCD_EBIT 3 'LCD umožní bit
DEFINÍCIA LCD_BITS 4 'LCD autobusovej veľkosti 4 alebo 8
DEFINÍCIA LCD_LINES 4 'Počet riadkov na LCD
DEFINÍCIA LCD_COMMANDUS 2000 'Command meškanie v nás
DEFINÍCIA LCD_DATAUS 50 'Data meškanie v nás
symbol DQ1 = PORTB.4 'DQ pripojte na RB4
DQ2 symbol = PORTB.0
SYMBOL DQ3 = PORTB.1
SYMBOL DQ4 = PORTB.2
Teplota var slovo
count_remain var byte
count_per_c var byte
temperature1 var slovo
count_remain1 var byte
count_per_c1 var byte
temperature2 var slovo
count_remain2 var byte
count_per_c2 var byte
temperature3 var slovo
count_remain3 var byte
count_per_c3 var bytepause 100Hlavné: 'TEMP 1
owout DQ1, 1, [$ CC $ 44]
OWin DQ1, 4, [count_remain]
ak count_remain = 0 then
owout DQ1, 1, [$ CC $ BE]
owin DQ1, 0, [temperature.LOwBYTE, temperature.Highbyte, Přeskočit 4, count_remain, count_per_c]
endif
teplota = (((teplota>> 1) * 100) - 25) (((count_per_c - count_remain) * 100) / count_per_c)
lcdout $ FE, 1
LCDOUT "Životné prostredie Temp1", december (teplota / 100), "." Dec2 teplota, "C"
pause 1000
'TEMP 2
owout DQ2, 1, [$ CC $ 44]
OWin DQ2, 4, [count_remain1]
ak count_remain1 = 0 then
owout DQ2, 1, [$ CC $ BE]
owin DQ2, 0, [temperature1.LOwBYTE, temperature1.Highbyte, Přeskočit 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 "Životné prostredie Temp2", december (temperature1 / 100), "." Dec2 temperature1, "C"
pause 1000
'TEMP 3
owout DQ3, 1, [$ CC $ 44]
OWin DQ3, 4, [count_remain2]
ak count_remain2 = 0 then
owout DQ3, 1, [$ CC $ BE]
owin DQ3, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Přeskočit 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 "Životné prostredie Temp2", december (temperature2 / 100), "." Dec2 temperature2, "C"
pause 1000
'TEMP 4
owout DQ4, 1, [$ CC $ 44]
OWin DQ4, 4, [count_remain2]
ak count_remain2 = 0 then
owout DQ4, 1, [$ CC $ BE]
owin DQ4, 0, [temperature2.LOwBYTE, temperature2.Highbyte, Přeskočit 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 "Životné prostredie Temp4", december (temperature2 / 100), "." Dec2 temperature2, "C"
pause 1000
goto Hlavná
koniec
zatiaľ nedarí zostaviť
chybové správy
[218] adresa 3ffth limit prekročený
Ak niekto má nejaké názory na to, čo môže byť zle alebo akékoľvek tipy,
bolo by veľmi ocenili [/ list]