languer;64350] Don't mean to jump in the middle of everything here, but let me see if I can summarize perhaps what you want to do.
You want to write both "TEXT" and digits to the EEPROM using one (or several) I2CWRITE command; and you want to read them, again, using one I2CREAD command correct?
I want to write on memory : simple text ,( letters and ciphers) , data for 2 temperature ,( inside and out ), day , month , year , houre , minutes .And in this monent I do not know to convert hexa result from DS1820 to ASCII to can be some as text .
If this is so, I think you really want to revisit what ARATTI said on post #32. Using the STR, [Str Celsius\32], modifier allows to access a whole string (array) which is what you want to do.
Why ? I have a program that work . Do you read it ? I'll try to translate in englesh for easily understand . What you say is to do an other program .
Let me note though, that this would be an awfull waste of resources. Storing the numeric value in the EEPROM is good, but all additional processing and characters do not need to be on EEPROM
Is not true , I must to have all in eeprom to can read together ( in my idea and in program what I use now )
Last edited by Eugeniu; - 18th October 2008 at 21:04.
Hi !
Here is some informations about DS 1820 "
TEMPERATURE/DATA RELATIONSHIP Table 2
TEMPERATURE DIGITAL OUTPUT DIGITAL OUTPUT
_______________(Binary)_____________(Hex)
+85.0°C*____ 0000 0000 1010 1010___00AAh
+25.0°C ____ 0000 0000 0011 0010___0032h
+0.5°C______ 0000 0000 0000 0001 __0001h
0°C_________0000 0000 0000 0000___0000h
-0.5°C______1111 1111 1111 1111____FFFFh
-25.0°C_____1111 1111 1100 1110____FFCEh
-55.0°C_____1111 1111 1001 0010____FF92h
only right byte I use , but I must to conver it in decimal . The left byte I use only to put "-" sign when it is = FFh .For right side of comma , I use byte 6 from sensor - COUNT REMAIN- . Tell me how convert right byte in decimal
Last edited by Eugeniu; - 18th October 2008 at 21:01.
Might I suggest that you back up in your process just a bit and practice/learn how to convert and display various types of numbers in general before trying to convert and display a result from a temperature sensor.
You don't seem to understand that the references to the earlier posts that we are giving you have the some of the information and answers you need to finish your project, DIG is on of those, if not the only one you'll need to convert your data from the binary format to the ASCII format (along with a bit of simple addition) to send to your display subroutine.
We do not have the hardware you have. We do not have the same 'vision' of the final project that you have, therefore, I think it is relatively unreasonable to ask others to write code FOR you, since that code that is written probably won't work for YOUR particular setup in the end. One thing that DOES work almost everytime though is trying to give a person the building blocks to start somewhere and end up somewhere else...
I'm trying to help you out. I think in this case, it's a language thing...
DIG should work for you...pulling individual digits out of the results and displaying them one by one. I don't know what else to say how or to say it for that matter that'll make more sense to you.
Ok, look at the info below. Most of it came from http://www.rentron.com/PicBasic/one-wire3.htm and your posted program.
This may not be the most elegant method, but it should give you a start. I still do not think there is any real value in adding all the "text" characters to the EEPROM, but that's a different story.
Code:' Additional Variables Cold_Bit VAR temperature.Bit11 ' Sign-Bit for +/- Temp. 1 = Below 0 deg C Sign VAR BYTE ' +/- sign for temp display temperature_int VAR BYTE ' integer part of temperature temperature_dec VAR BYTE ' fractional part of temperature ' Temperature Readout and manipulation OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c] IF Cold_Bit = 0 THEN ' If Cold_Bit = 0, positive temperature Sign = "+" temperature = temperature & $00FF ' Mask lower byte of temperature (((temperature >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c) ELSE ' If Cold_Bit = 1, negative temperature Sign = "-" temperature = temperature & $00FF ' Mask lower byte of temperature (((temperature >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c) ENDIF 'separate interger part from decimal part temperature_int = ((temperature DIG 4) * 10) + (temperature DIG 3) ' integer part of temperature temperature_dec = ((temperature DIG 1) * 10) + (temperature DIG 0) ' fractional part of temperature 'write digits to EEPROM i2cwrite I2CDAT, I2CCLK, $A0, 71,[(temperature DIG 4)+48] 'load EEPROM with integer part pause 5 i2cwrite I2CDAT, I2CCLK, $A0, 72,[(temperature DIG 3)+48] 'load EEPROM with integer part pause 5 i2cwrite I2CDAT, I2CCLK, $A0, 74,[(temperature DIG 2)+48] 'load EEPROM with decimal part pause 5 i2cwrite I2CDAT, I2CCLK, $A0, 75,[(temperature DIG 1)+48] 'load EEPROM with decimal part pause 5
I think his problem is extracting the individual digits out of the byte values to display on the LED matrix's, by using DIG, and he hasn't figured that part out yet, which is why I suggested earlier since he's got an LCD, to play with that first and get used to everything (and to find out if his temp sensor is actually working in the first place). Then build it all back up to displaying the reading on the LED matrix.
Look here , is what I have tried :
adr = 22
i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 4+48 ]
pause 15
adr=25
i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 3+48]
pause 15
adr=28
i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 2 + 48]
pause 15
adr=31
i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 1+ 48]
pause 15
adr = 34
i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 0 + 48]
pause 15
...on display I read 0 0 1 2 1 or 0 0 2 2 2 , and other numbers .
I'll try to explain my program ( this side with display ) :
after read a sign from eeprom program look in SELECT CASE CARACTER for a ASCI code and return a runing number >>>>
SELECT CASE CARACTER
CASE 65: SIR_NO=4 ;A
CASE 66: SIR_NO=9 ;B
CASE 67: SIR_NO=14 ;C
CASE 68: SIR_NO=19 ;D
CASE 69: SIR_NO=24 ;E
CASE 70: SIR_NO=29 ;F
CASE 71: SIR_NO=34 ;G
CASE 72: SIR_NO=39 ;H
CASE 73: SIR_NO=42 ;I
CASE 74: SIR_NO=47 ;J
CASE 75: SIR_NO=52 ;K
CASE 76: SIR_NO=57 ;L
CASE 77: SIR_NO=62 ;M
CASE 78: SIR_NO=67 ;N
CASE 79: SIR_NO=72 ;O
CASE 80: SIR_NO=77 ;P
CASE 81: SIR_NO=82 ;Q
CASE 82: SIR_NO=87 ;R
CASE 83: SIR_NO=92 ;S
CASE 84: SIR_NO=97 ;T
CASE 85: SIR_NO=102 ;U
CASE 86: SIR_NO=107 ;V
CASE 87: SIR_NO=112 ;W
CASE 88: SIR_NO=117 ;X
CASE 89: SIR_NO=122 ;Y
CASE 90: SIR_NO=127 ;Z
CASE 32: SIR_NO=132 ;SPATIU
CASE 48: SIR_NO=137 ;0
CASE 49: SIR_NO=140 ;1
CASE 50: SIR_NO=145 ;2
CASE 51: SIR_NO=150 ;3
CASE 52: SIR_NO=155 ;4
CASE 53: SIR_NO=160 ;5
CASE 54: SIR_NO=165 ;6
CASE 55: SIR_NO=170 ;7
CASE 56: SIR_NO=175 ;8
CASE 57: SIR_NO=180 ;9
CASE 46: SIR_NO=185 ;.
CASE 58: SIR_NO=188 ;:
CASE 61: SIR_NO=193 ;=
CASE 33: SIR_NO=196 ;!
CASE 45: SIR_NO=201 ;-
CASE 44: SIR_NO=204 ; ,
case 42: SIR_no=209 ; *
CASE 59: SIR_NO=212 ; ;
After this go to a tabel and serch for this runing number -OFSET-,from where return a matrix with what leds are on .
TABLOU:
LOOKUP OFSET,[_
$3F,$48,$48,$48,$3F,_ ;A 0-4
$36,$49,$49,$49,$7F,_ ;B 4-9
$22,$41,$41,$41,$3E,_ ;C 9-14
$3E,$41,$41,$41,$7F,_ ;D 14-19
$41,$49,$49,$49,$7F,_ ;E 19-24
$40,$48,$48,$48,$7F,_ ;F 24-29
$2E,$49,$49,$41,$3E,_ ;G 29-34
$7F,$08,$08,$08,$7F,_ ;H 34-39
$41,$7F,$41,_ ;I 39-42
$40,$7E,$41,$01,$02,_ ;J 42-47
$41,$22,$14,$08,$7F,_ ;K 47-52
$01,$01,$01,$01,$7F,_ ;L 52-57
$7F,$20,$10,$20,$7F,_ ;M 57-62
$7F,$04,$08,$10,$7F,_ ;N 62-67
$3E,$41,$41,$41,$3E,_ ;O 67-72
$30,$48,$48,$48,$7F,_ ;P 72-77
$3D,$42,$45,$41,$3E,_ ;Q 77-82
$31,$4A,$4C,$48,$7F,_ ;R 82-87
$26,$49,$49,$49,$32,_ ;S 87-92
$40,$40,$7F,$40,$40,_ ;T 92-97
$7E,$01,$01,$01,$7E,_ ;U 97-102
$7C,$02,$01,$02,$7C,_ ;V 102-107
$7E,$01,$0E,$01,$7E,_ ;W 107-112
$63,$14,$08,$14,$63,_ ;X 112-117
$70,$08,$07,$08,$70,_ ;Y 117-122
$61,$51,$49,$45,$43,_ ;Z 122-127
$00,$00,$00,$00,$00,_ ;SPATIU 127-132
$3E,$51,$49,$45,$3E,_ ;0 132-137
$01,$7F,$21,_ ;1 137-140
$31,$49,$45,$43,$21,_ ;2 140-145
$46,$69,$51,$41,$42,_ ;3 145-150
$04,$7F,$24,$14,$0C,_ ;4 150-155
$4E,$51,$51,$51,$72,_ ;5 155-160
$06,$49,$49,$29,$1E,_ ;6 160-165
$60,$50,$48,$47,$40,_ ;7 165-170
$36,$49,$49,$49,$36,_ ;8 170-175
$3C,$4A,$49,$49,$30,_ ;9 175-180
$00,$00,$00,$00,$01,_ ;. 180_185
$00,$24,$00,_ ;: 185_188
$28,$28,$28,$28,$28,_ ;= 188_193
$00,$7D,$00,_ ;! 193_196
$00,$08,$08,$08,$00,_ ;- 196_201
$00,$02,$01,_ ;, 201_204
$2A,$14,$3E,$14,$2A,_ ;* 204_209
$00,$0A,$01],DATE
I put this OFSET on a PIC port and scroll to left on display .
Right. I understand what you are trying to do, with the EEPROM and the LED matrix's and such. It's a relatively common project.
What you aren't understanding is that you are only writing ONE BYTE at a time with those statements, not 3 at a time as your changing addresses would indicate.
And one other thing is 'precedence'. I'm not sure if it's applicable in this case, but...
In your statement above...
How does that get interpreted?Code:i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 4+48 ]
Assume temperature.lowbyte = 123
You are trying to retrieve the 4th (actually 5th) digit of a byte value to which there can only be 3 digits.
Another thing, still assuming temperature.lowbyte = 123, and assume that 'dig 4' is actually 'dig 0'...
Will that statement return "3" + 48 or does it try to return the 52nd digit of temperature.lowbyte?
A better way to put that statement might be:
And again, trying to retrieve the 4th digit of a 3 digit value (at most) won't work...Code:i2cwrite I2CDAT, I2CCLK, $A0, adr,[ ( temperature.LOWBYTE dig 4 ) + 48 ]
Since you have obviously modified your program, could you post the whole thing again, including all the relevant information, PIC type, hardware setup, etc.etc.
skimask;64450]Right. I understand what you are trying to do, with the EEPROM and the LED matrix's and such. It's a relatively common project.
What you aren't understanding is that you are only writing ONE BYTE at a time with those statements, not 3 at a time as your changing addresses would indicate.
And one other thing is 'precedence'. I'm not sure if it's applicable in this case, but...
In your statement above...
How does that get interpreted?Code:i2cwrite I2CDAT, I2CCLK, $A0, adr,[temperature.LOWBYTE dig 4+48 ]
Assume temperature.lowbyte = 123
You are trying to retrieve the 4th (actually 5th) digit of a byte value to which there can only be 3 digits.
I understand what you say , but I try something , to see what display
Another thing, still assuming temperature.lowbyte = 123, and assume that 'dig 4' is actually 'dig 0'...
Will that statement return "3" + 48 or does it try to return the 52nd digit of temperature.lowbyte?
A better way to put that statement might be:
Code:i2cwrite I2CDAT, I2CCLK, $A0, adr,[ ( temperature.LOWBYTE dig 4 ) + 48 ]
Is not imprtant , + or - paranthesis I see on display the same result .
For the result of " temperature.LOWBYTE " I do not understand what is this number .
If I put
adr = 24
i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temperature dig 2) + 48]
pause 15
adr = 27
i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temperature dig 1) + 48]
pause 15
adr = 30
i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temperature dig 0) + 48]
pause 15
Obtein a number which is a hexa from a teperature ...968 ,975 - 2408,2421
For a LCD display write DEC2 (temperature/100) "," DEC2 (temperature//100). But for me in this moment I do not know what to do !
Ok, so the parenthesis don't make a difference, no problem...Guess we're going to have to build this up from scratch...
Do you have that LCD connected to your project? Is it working as you expect it to work (i.e. displays HELLO if you command it)
EDIT: Never mind, obviously you do have the LCD connected...
In reference to your I2CWRITE statements a few posts ago...
You do NOT need to store temperature in the manner you are storing it. What you are doing in effect is storing the ASCII equivalent of your temperature value in 3 bytes, then retrieving that same result and trying to display the ASCII result of each of those bytes...in effect, display the ASCII values of the ASCII values of the bytes originally stored....sort of like looking at a camera which is looking at you looking at a camera which is looking at you...infinite regression...adr = 24
i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temperature dig 2) + 48]
pause 15.......and so on.....
It looks to me like you're doing twice as much work as you need to do!
Try to store the temperature like this:
This will store the WORD variable temperature in two bytes as required.Code:adr = 24 i2cwrite i2cdat, i2cclk, $a0, adr,[temperature.highbyte] adr = 25 i2cwrite i2cdat, i2cclk, $a0, adr,[temperature.lowbyte]
Then for retrieving that same value:
This should display on the LCD is in fact the temperature sensor and it's code are working properly.Code:adr = 24 i2cread i2cdat, i2cclk, $a0, adr, temperature.highbyte adr = 25 i2cread i2cdat, i2cclk, $a0, adr, tempearture.lowbyte ............. lcdout DEC2 (temperature/100) , "," , DEC2 (temperature//100)
To get the individual digits from this value for display on the LED matrix instead of the LCD:
Code:adr = 24 i2cread i2cdat, i2cclk, $a0, adr, temperature.highbyte adr = 25 i2cread i2cdat, i2cclk, $a0, adr, tempearture.lowbyte ............. digit var byte[5] digit[5] = temperature dig 4 digit[4] = temperature dig 3 digit[3] = temperature dig 2 digit[2] = "," digit[1] = temperature dig 1 digit[0] = temperature dig 0 ............
Last edited by skimask; - 20th October 2008 at 05:03.
[QUOTE=skimask;64461]Ok, so the parenthesis don't make a difference, no problem...Guess we're going to have to build this up from scratch...
Do you have that LCD connected to your project? Is it working as you expect it to work (i.e. displays HELLO if you command it)
No , I have not a LCD display on the same leds display , but in my mind is to do this . I have a LCD display on a test plate for differnet programs .
I know very well to work with a LCD display ( is a good "HELP " in MicroBasic Studio Plus
EDIT: Never mind, obviously you do have the LCD connected...
In reference to your I2CWRITE statements a few posts ago...
"Obtein a number which is a hexa from a teperature ...968 ,975 - 2408,2421 "
This is wrong . Was a dream ! When I have put my fingers on it , what I can see on leds display was more differnt by my body temperature
..............................................
Is not necesary to use " HIGH BYTE " I use only "LOW BYTE "
This will store the WORD variable temperature in two bytes as required.
Then for retrieving that same value:
[code]
adr = 24
i2cread i2cdat, i2cclk, $a0, adr, temperature.highbyte
adr = 25
i2cread i2cdat, i2cclk, $a0, adr, tempearture.lowbyte
.............
digit var byte[5]
digit[5] = temperature dig 4
digit[4] = temperature dig 3
digit[3] = temperature dig 2
digit[2] = ","
digit[1] = temperature dig 1
digit[0] = temperature dig 0
I'll try this !
Should use it more often...
The 'temperature' function will return a WORD result.Is not necesary to use " HIGH BYTE " I use only "LOW BYTE "
That's what we suggested back in post #2!!!digit var byte[5]
digit[5] = temperature dig 4
digit[4] = temperature dig 3
digit[3] = temperature dig 2
digit[2] = ","
digit[1] = temperature dig 1
digit[0] = temperature dig 0
I'll try this !
Eugeniu, below are some ideas on how to modify your code with the help of an LCD. This should provide all the info for the conversion, decoding, and displaying of the temp based on the DS18S20 (which matches your previous posted table). All based on your code, SKIMASK's suggestions, and readily available code on the forum.
modifications to variables
reading temperature (this is not better than what you had, just short and simple)Code:Cold_Bit VAR temperature.Bit11 ' Sign-Bit for +/- Temp. 1 = Below 0 deg C Half_Deg_Bit VAR temperature.Bit0 ' 0.5deg Bit Sign VAR temperature.HIGHBYTE ' +/- sign for temp display temperature_int VAR temperature.LOWBYTE ' integer part of temperature temperature_dec VAR BYTE ' fractional part of temperature digit var byte[5]
storing raw temperature on EEPROMCode:'read temperature OWOut DQ, 1, [$CC, $44] ' Start temperature conversion pause 1000 ' Wait max conversion time OWOut DQ, 1, [$CC, $BE] ' Read the temperature OWIn DQ, 0, [temperature_int, sign] ' Store temperature on variable
reading raw temperature from EEPROMCode:'store raw value of temperature in EEPROM (like SKIMASK suggested) adr = 24 i2cwrite i2cdat, i2cclk, $a0, adr,[sign] adr = 25 i2cwrite i2cdat, i2cclk, $a0, adr,[temperature_int]
decoding temperature (including negative temperatures)Code:'read raw temperature from EEPROM adr = 24 i2cread i2cdat, i2cclk, $a0, adr, sign adr = 25 i2cread i2cdat, i2cclk, $a0, adr, temperature_int
displaying decoded temperature on LCDCode:'decode temperature as needed (this will decode both positive and negative temperatures) IF Cold_bit = 1 THEN ' If Cold_Bit = 1, negative temperature Sign = "-" temperature_int = (255 - temperature_int) + 1 ' 2s Complement ELSE ' If Cold_Bit = 0, positive temperature Sign = "+" ENDIF temperature_int = temperature_int / 2 ' Strip LSB from temperature reading IF Half_Deg_Bit = 1 ' If Half_Deg_Bit = 1, add half degree to result temperature_dec = 5 ELSE temperature_dec = 0 ENDIF
storing decoded temperature digitsCode:'to display temperature on LCD lcdout sign , DEC2 (temperature_int) , "," , DEC2 (temperature_dec)
P.S. When posting use the "code" tags to wrap the code and display it nice and tidy. Also use the "quote" tags when quoting somebody; again it displays nice and tidy.Code:'to extract digits digit[5] = temperature_int dig 2 digit[4] = temperature dig 1 digit[3] = temperature dig 0 digit[2] = "," digit[1] = temperature_dec dig 0 digit[0] = 0
Last edited by languer; - 20th October 2008 at 18:06.
One of the key phrases to be taken from this statement:
And this might help your post formatting a bit...
http://www.picbasic.co.uk/forum/misc...bbcode#imgcode
Thank you for your try to halp me , But remember I do not use a LCD display !Code:[QUOTE=languer;64516]Eugeniu, below are some ideas on how to modify your code with the help of an LCD.
I do not use it , becose I do not know it . Thanks !P.S. When posting use the "code" tags to wrap the code and display it nice and tidy. Also use the "quote" tags when quoting somebody; again it displays nice and tidy
But you did say earlier that you do HAVE an LCD, and if you know how to use it, and can make it work, then why not use it to help you find your problem.
And with those code snippets above, you should be able to pull out of them the chunks of code you may and/or may not need to get your project working, whether it be displayed on an LCD (which would be very handy) or LED matrix or on punch cards.
Which is why I put that link in post #57 above. That way you can learn how to use those 'tags'.I do not use it , becose I do not know it . Thanks !
Last edited by skimask; - 21st October 2008 at 18:55.
Was very usefully !And this might help your post formatting a bit...
http://www.picbasic.co.uk/forum/misc...bbcode#imgcode
Thank you .
PS. I 'll be very bussy for a few day , and after this I'll work again to my project . I 'll tell you what I can doing .
But you did say earlier that you do HAVE an LCD, and if you know how to use it, and can make it work, then why not use it to help you find your problem
I have try , be sure . I use a test program on LCD , bat there it work , on LEDS display not . For LCD are very usefully DEC ; HEX;...commands . I'try to change the kind of writing text ,(in my programme) ,to use " SELECT CASE " for binary or hexa byte .
So are you saying that everything works as you want it to work if you are using the LCD?
There is no need to rewrite the entire program!!! Your answers have been practically handed to you in previous posts, with example provided. The only thing left to do is to write the code for you.
Yes ! But not on this plate . On this plate (Leds display )I use a PIC 16F876 and I have 3 free pins only on it . I can not install a LCD. Will be very usefully . I am not sure ( in my mind )every time that sensor work . In future I try to change PIC with 16F877 ,to can have together Leds and LCD display for ilk sensor .So are you saying that everything works as you want it to work if you are using the LCD?
I am not sure that I understand what you say !There is no need to rewrite the entire program!!! Your answers have been practically handed to you in previous posts, with example provided. The only thing left to do is to write the code for you
Ok, as long as the code works in one place... I understand you don't have enough pins to run the LCD on this particular board and need to use the matrix'd LEDs...
Meaning that the posts referring to the use of the DIG function with bytes/words/whatever are most likely what you need to pull the individual digits out of the bytes/words/whatever to send to the LEDs...I am not sure that I understand what you say !
I have made a few changes :Meaning that the posts referring to the use of the DIG function with bytes/words/whatever are most likely what you need to pull the individual digits out of the bytes/words/whatever to send to the LEDs...
In the first time write a few blanks (16)
I2cwrite I2CDAT , I2CCLK , $A0,ADR,[ ]
I have insert this lines
SELECT CASE CARACTER
................................................
CASE %0000000 : SIR_NO=137 ;0
CASE %0000001 : SIR_NO=140 ;1
CASE %0000010 : SIR_NO=145 ;2
CASE %0000011 : SIR_NO=150 ;3
CASE %0000100 : SIR_NO=155 ;4
CASE %0000101 : SIR_NO=160 ;5
CASE %0000110 : SIR_NO=165 ;6
CASE %0000111 : SIR_NO=170 ;7
CASE %0001000 : SIR_NO=175 ;8
CASE %0001001 : SIR_NO=180 ;9
..................................................
TEMP1 VAR BYTE
TEMP2 VAR BYTE
temp1 = temperature.LOWBYTE /2
temp2 = (100- (100/16)*(count_remain))
(This FORMULAS work very well with LCD display )
and writing
adr = 4
i2cwrite I2CDAT, I2CCLK, $A0, adr,[(temp1)dig 1,(temp1)dig 0,",",temp2 dig 1,temp2 dig 0 ]
pause 15
Now I read on LEDS display
for begining 2000404,0502 ( this ciphers from the right side are more variables)
when I put my fingers on sensor all nubers are modify . More right side
and last ciphra from left side :
200050x,0x0x
200060x,0x0x
..................
200090x,0x0x
200010x,0x0x
" 2 " not change in "3" . And not 25,xx or 26,xx ......and so on
GIVE ME AN OTHERS IDEAS !
I don't know why you insist on writing individual digits to the eeprom when there is no need to do so...since you can use DIG to get the digits after reading the eeprom...
You've got all the ideas you should need...over and over, as referenced above. I'm sure this sort of project has been done by numerous people over the years, with PBP, without PBP, with C, with assembly, etc.etc.etc.GIVE ME AN OTHERS IDEAS !
Short of learning Romanian to lower the language barrier even farther, I don't know what else to say or do except write the program for you (not going to happen).
Maybe somebody else can step in to translate the problem and/or answers better than I, or maybe even somebody else will step in and write the code for you. I'm out...
I don't know why you insist on writing individual digits to the eeprom when there is no need to do so...since you can use DIG to get the digits after reading the eeprom...
All are very simple : I DO NOT KNOW OTHER KIND TO CAN CONTINUOUS PROGREAME AND DISPLAY ALL TEXT AND DATA , OTHER THAN HOW IS ROGRAME WRITE NOW ! IT READ DIGIT BY DIGIT .
Hi !
I have find problem and solution .
I have instal and a LCD display together with my LED display and....I understand that my DS sensor is not ok . Data from it was wrong . I have change sensor and I see that work on LCD , and ....
In this moment I use this solution :
In the firs time I define ...
temperature Var word ' Temperature (integr)
count_remain Var Byte ' Count remaining
count_per_c Var Byte ' Count per degree C
tem var word ' Temperature (decimal)
zecimi____________ VAR BYTE ' For decimal
sutimi_____________VAR BYTE ' For decimal
dozen(zeci)________VAR BYTE
units(unitati)_______VAR BYTE
and next ...
Thank you for all your help !Code:mainloop: OWOut DQ, 1, [$55,$47,$6C,$71,$01,$08,$00,$C1,$44] ' Start conversie temperatura in casa waitloop: OWIn DQ, 4, [count_remain] ' Check for still busy converting If count_remain = 0 Then waitloop OWOut DQ, 1, [$CC, $BE] ' Read the temperature OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c] pause 300 if temperature.HighByte > $0000 then ' For " - " temperature DS1820 temperature = ($FF - temperature.LowByte) tem = (100/16)*(count_remain) pause 50 LCDOUT $fe, 1 LCDOUT $FE,$80 ,"Temp= -", dec temperature ,",",dec2 (100/16)*(count_remain)," gr.C" zeci = 48+(temperature //100/10) unitati = 48+(temperature // 10) zecimi = 48+(tem/10 ) sutimi = 48+(tem//10) adr = 2 i2cwrite I2CDAT, I2CCLK, $A0, adr,["TEMPERATURE IS = -",zeci,unitati,".",zecimi,sutimi,"degree C"] else temperature = (temperature.LOWBYTE )/2 ' For "+" temperature tem = 100- (100/16)*(count_remain) pause 50 LCDOUT $fe, 1 LCDOUT $fe, $80 LCDOUT "temp= " , dec temperature ,"." , dec2 100- (100/16)*(count_remain)," gr.C" pause 30 sute = 48 +(temperature // 1000/100) zeci = 48+(temperature //100/10) unitati = 48+(temperature // 10) zecimi = 48+(tem/10 ) sutimi = 48+(tem//10) adr = 2 i2cwrite I2CDAT, I2CCLK, $A0, adr,["TEMPERATURE IS=",zeci,unitati,".",zecimi,sutimi,"degree C"] pause 100 endif
Bookmarks