PDA

Επιστροφή στο Forum : nokia lcd + PIC12F629



Nemmesis
02-01-08, 17:53
ειναι δυνατον ρε παιδια? πως το κανει ο τυπος αυτο?

http://www.ivica-novakovic.from.hr/Nokia%20Lcd%20Termometar-eng.htm

το PIC12F629 απο οτι ειδα εχει 1kb μνημη!!!... σαν το f84... ε πως κανει ολα αυτα με τοση λιγη μνημη?

DT200
02-01-08, 18:42
δεν ξέρω θέλει ψάξιμο.

dikos
02-01-08, 19:03
Τι εννοείς όταν λές πώς κάνει όλα αυτά;
Ένα θερμόμετρο δεν είναι μόνο;

Nemmesis
02-01-08, 20:05
ναι... αλλα η οθονη αυτη αποτελειτε απο 6 "σελιδες" των 84byte... φαντασου μονο για να κανεις μια εικονα στην οθονη τη χρειαζετε... ποσο μαλλον να κανεις κατι σαν αναλογικη μπαρα οπως εχει το θερμορετρο και να αναζει αναλογα με την θερμοκρασια... εγω που εχω κανει κατι αναλογο με μια
lcd2x16 μου πειρε 2kb... δεν ξερω ποσο μπορει να μου παρει για μια οθονη σαν του nokia...

dikos
02-01-08, 20:28
Κατάλαβα...
Τη συγκεκριμένη κατασκευή την έχω βάλει στο μάτι πολύ καιρό και όλο λέω να την φτιάξω και όλο το αναβάλω.
Λές να μην δουλέψει τελικά;

DT200
02-01-08, 20:53
ναι... αλλα η οθονη αυτη αποτελειτε απο 6 "σελιδες" των 84byte... φαντασου μονο για να κανεις μια εικονα στην οθονη τη χρειαζετε... ποσο μαλλον να κανεις κατι σαν αναλογικη μπαρα οπως εχει το θερμορετρο και να αναζει αναλογα με την θερμοκρασια... εγω που εχω κανει κατι αναλογο με μια
lcd2x16 μου πειρε 2kb... δεν ξερω ποσο μπορει να μου παρει για μια οθονη σαν του nokia...


και εγώ που έφτιαξα το ίδιο με τον φίλο Nemmesis (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=6860&postdays=0&postorder=asc&start=0) το έχω φτάσει με το ζόρι 1,38 KB
με μία αναλογική μπάρα , μία ένδειξη τάσης τριών αριθμόν και εννιά σταθερούς χαρακτήρες (_._ _ DCv και DT200)

Nemmesis
02-01-08, 20:55
ε δεν πιστευω να μην δουλεψει... αλλα μου φενεται πολυ παραξενο... δλδ θελει 504 byte Μονο και μονο για να κανει μια εικονα... χωρις καμια αλλη εντολη...

eebabs2000
02-01-08, 21:04
Συνήθως σε τέτοιες περιπτώσεις, φτιαχνουν τη μία εικόνα, και κάθε φορά που μεταβάλλεται στέλνουν τις διαφορές και όχι ξανα ολόκληρη την εικόνα, ενώ η πρώτη παραμένει αποθηκευμενη στον controller της lcd.

Nemmesis
02-01-08, 21:51
Συνήθως σε τέτοιες περιπτώσεις, φτιαχνουν τη μία εικόνα, και κάθε φορά που μεταβάλλεται στέλνουν τις διαφορές και όχι ξανα ολόκληρη την εικόνα, ενώ η πρώτη παραμένει αποθηκευμενη στον controller της lcd.

το ξερω οτι δουλευουν ετσι... απλα η οθονη θελει 504byte για μια εικονα... o PIC12F629 εχει μνημη 1kb... οποτε παει η μιση μνημη του πικ χωρις να κανουμε τπτ στο να διαβασουμε και να τυποσουμε την θερμοκρασια... αυτο ειναι το μονο που μου φενεται παραξερω σε ολη την υποθεση... το μεγεθος της μνημης...

gsmaster
03-01-08, 00:33
Είναι θέμα του πόσο μπορεί να απλοποιηθεί ο κώδικας.

πχ για μια ευθεία γραμμη αρκεί μια for, τα γραφικά (το λογότυπο στην ουσία) αποθηκευμένο σε έναν πίνακα (ίσως και στην eeprom αν έχει) χωράνε.... Δεν έχει και τα άπειρα γραφικά.

Αυτή η οθόνη δεν μπορεί να διαβαστεί και το καλύτερο που έχει να κάνει ο προγραμματιστής είναι να ξαναγράφει όλη την οθόνη απο την αρχή, εκτός αν θέλει να αλλάξει ένα κομμάτι μόνο.

Αυτό που με μπερδεύει είναι οτι οι γραμματοσειρές που έχει δεν είναι στην ίδια γραμμή, αλλά είναι σε δυο διαφορετικές γραμμές, (οι οθόνες αυτές χωρίζονται σε κομμάτια 8*1 πιξελ)

Πολύ καλό και απλό πάντως!

Nemmesis
03-01-08, 22:17
και επειδη εσκασα να δω ποσο θα μου παρει εμενα για κατι αντιστιχο... και μετα απο λιγο διαβασμα μπορεσα και εστειλα μια εικονα στην οθονη... αλλα μου πειρε 0,76kb... εγω σε καμια περιπτωση δεν θα μπουρουσα να κανω οτι εκανε ο τυπος με μονο 1kb μνημη...αλλα τι με νιαζει? θα εβαζα καναν ποιο μεγαλο πικ και ολα οκ 8) 8) 8) τεσπα... αρκετα ειπα... οριστε και μια εικονουλα..

dikos
03-01-08, 22:27
Πολύ καλό μπράβο.

DT200
04-01-08, 08:32
σε "πάω" γιατί ψάχνεσαι και τα καταφέρνεις !

έχεις φτιάξει και πολύ ωραίες πλακέτες !
ποίον PIC χρησιμοποίησες ?
αν θέλεις δημοσίευσε και τον κώδικα να τον καμαρώσουμε

Nemmesis
04-01-08, 13:12
tnks tnks :psonio: :psonio: :psonio: αλλα το library δεν το εκανα εγω :hammer: :hammer: :hammer:

ουσιαστικα εγω δανειστικα μια library (η οποια μαλλον επιτηδες την ειχαν κανει να μην δουλευει) τη κουτσουρεψα λιγο και με βαση αυτην δουλεψα τον pic16f88....

library:



module NOKIA_Nem

symbol serialclk = PORTb,0
symbol serialdata = PORTb,1
symbol dataor = PORTb,2
symbol chipsel = PORTb,3
symbol res = PORTb,4


' 6x8 letters... ta peira apo allh library
const font1 as byte[460] =
(0x00, 0x00, 0x00, 0x00, 0x00 , ' space
0x00, 0x00, 0x2f, 0x00, 0x00 , ' !
0x00, 0x07, 0x00, 0x07, 0x00 , ' "
0x14, 0x7f, 0x14, 0x7f, 0x14 , ' #
0x24, 0x2a, 0x7f, 0x2a, 0x12 , ' $
0x62, 0x64, 0x08, 0x13, 0x23 , ' %
0x36, 0x49, 0x55, 0x22, 0x50 , ' &
0x00, 0x05, 0x03, 0x00, 0x00 , ' '
0x00, 0x1c, 0x22, 0x41, 0x00 , ' (
0x00, 0x41, 0x22, 0x1c, 0x00 , ' )
0x14, 0x08, 0x3E, 0x08, 0x14 , ' *
0x08, 0x08, 0x3E, 0x08, 0x08 , ' +
0x00, 0x00, 0xA0, 0x60, 0x00 , ' ,
0x08, 0x08, 0x08, 0x08, 0x08 , ' -
0x00, 0x60, 0x60, 0x00, 0x00 , ' .
0x20, 0x10, 0x08, 0x04, 0x02 , ' /
0x3E, 0x51, 0x49, 0x45, 0x3E , ' 0
0x00, 0x42, 0x7F, 0x40, 0x00 , ' 1
0x42, 0x61, 0x51, 0x49, 0x46 , ' 2
0x21, 0x41, 0x45, 0x4B, 0x31 , ' 3
0x18, 0x14, 0x12, 0x7F, 0x10 , ' 4
0x27, 0x45, 0x45, 0x45, 0x39 , ' 5
0x3C, 0x4A, 0x49, 0x49, 0x30 , ' 6
0x01, 0x71, 0x09, 0x05, 0x03 , ' 7
0x36, 0x49, 0x49, 0x49, 0x36 , ' 8
0x06, 0x49, 0x49, 0x29, 0x1E , ' 9
0x00, 0x36, 0x36, 0x00, 0x00 , ' :
0x00, 0x56, 0x36, 0x00, 0x00 , '
0x08, 0x14, 0x22, 0x41, 0x00 , ' <0x14>
0x02, 0x01, 0x51, 0x09, 0x06 , ' ?
0x32, 0x49, 0x59, 0x51, 0x3E , ' @
0x7C, 0x12, 0x11, 0x12, 0x7C , ' A
0x7F, 0x49, 0x49, 0x49, 0x36 , ' B
0x3E, 0x41, 0x41, 0x41, 0x22 , ' C
0x7F, 0x41, 0x41, 0x22, 0x1C , ' D
0x7F, 0x49, 0x49, 0x49, 0x41 , ' E
0x7F, 0x09, 0x09, 0x09, 0x01 , ' F
0x3E, 0x41, 0x49, 0x49, 0x7A , ' G
0x7F, 0x08, 0x08, 0x08, 0x7F , ' H
0x00, 0x41, 0x7F, 0x41, 0x00 , ' I
0x20, 0x40, 0x41, 0x3F, 0x01 , ' J
0x7F, 0x08, 0x14, 0x22, 0x41 , ' K
0x7F, 0x40, 0x40, 0x40, 0x40 , ' L
0x7F, 0x02, 0x0C, 0x02, 0x7F , ' M
0x7F, 0x04, 0x08, 0x10, 0x7F , ' N
0x3E, 0x41, 0x41, 0x41, 0x3E , ' O
0x7F, 0x09, 0x09, 0x09, 0x06 , ' P
0x3E, 0x41, 0x51, 0x21, 0x5E , ' Q
0x7F, 0x09, 0x19, 0x29, 0x46 , ' R
0x46, 0x49, 0x49, 0x49, 0x31 , ' S
0x01, 0x01, 0x7F, 0x01, 0x01 , ' T
0x3F, 0x40, 0x40, 0x40, 0x3F , ' U
0x1F, 0x20, 0x40, 0x20, 0x1F , ' V
0x3F, 0x40, 0x38, 0x40, 0x3F , ' W
0x63, 0x14, 0x08, 0x14, 0x63 , ' X
0x07, 0x08, 0x70, 0x08, 0x07 , ' Y
0x61, 0x51, 0x49, 0x45, 0x43 , ' Z
0x00, 0x7F, 0x41, 0x41, 0x00 , ' &#91;
0x55, 0x2A, 0x55, 0x2A, 0x55 , ' /
0x00, 0x41, 0x41, 0x7F, 0x00 , ' &#93;
0x04, 0x02, 0x01, 0x02, 0x04 , ' ^
0x40, 0x40, 0x40, 0x40, 0x40 , ' _
0x00, 0x01, 0x02, 0x04, 0x00 , ' '
0x20, 0x54, 0x54, 0x54, 0x78 , ' a
0x7F, 0x48, 0x44, 0x44, 0x38 , ' b
0x38, 0x44, 0x44, 0x44, 0x20 , ' c
0x38, 0x44, 0x44, 0x48, 0x7F , ' d
0x38, 0x54, 0x54, 0x54, 0x18 , ' e
0x08, 0x7E, 0x09, 0x01, 0x02 , ' f
0x18, 0xA4, 0xA4, 0xA4, 0x7C , ' g
0x7F, 0x08, 0x04, 0x04, 0x78 , ' h
0x00, 0x44, 0x7D, 0x40, 0x00 , ' i
0x40, 0x80, 0x84, 0x7D, 0x00 , ' j
0x7F, 0x10, 0x28, 0x44, 0x00 , ' k
0x00, 0x41, 0x7F, 0x40, 0x00 , ' l
0x7C, 0x04, 0x18, 0x04, 0x78 , ' m
0x7C, 0x08, 0x04, 0x04, 0x78 , ' n
0x38, 0x44, 0x44, 0x44, 0x38 , ' o
0xFC, 0x24, 0x24, 0x24, 0x18 , ' p
0x18, 0x24, 0x24, 0x18, 0xFC , ' q
0x7C, 0x08, 0x04, 0x04, 0x08 , ' r
0x48, 0x54, 0x54, 0x54, 0x20 , ' s
0x04, 0x3F, 0x44, 0x40, 0x20 , ' t
0x3C, 0x40, 0x40, 0x20, 0x7C , ' u
0x1C, 0x20, 0x40, 0x20, 0x1C , ' v
0x3C, 0x40, 0x30, 0x40, 0x3C , ' w
0x44, 0x28, 0x10, 0x28, 0x44 , ' x
0x1C, 0xA0, 0xA0, 0xA0, 0x7C , ' y
0x44, 0x64, 0x54, 0x4C, 0x44 , ' z
0x14, 0x14, 0x14, 0x14, 0x14&#41; ' horiz lines
' h eikona moy
const Start_Logo as byte&#91;504&#93; = &#40;
0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F, 0x0F,0x0F,0x00,0xF8,0x04,0x02,
0xE2,0xE2,0xC2,0x02,0x02,0xE2,0xE2,0x02,0x02,0x82, 0x82,0x82,0x82,0x02,0x02,0x82,
0x82,0x02,0x82,0x82,0x82,0x02,0x82,0x82,0x02,0x02, 0x82,0x82,0x02,0x82,0x82,0x82,
0x02,0x82,0x82,0x02,0x02,0x02,0x82,0x82,0x82,0x82, 0x02,0x02,0x02,0x82,0x82,0x82,
0x82,0x02,0x02,0xA2,0xA2,0x02,0x02,0x82,0x82,0x82, 0x82,0x02,0x02,0x04,0xF8,0x00,
0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
0x00,0xFF,0x00,0x00,0x3F,0x3F,0x01,0x07,0x1C,0x3F, 0x3F,0x00,0x1F,0x3F,0x24,0x24,
0x37,0x17,0x00,0x3F,0x3F,0x01,0x00,0x3F,0x3F,0x01, 0x00,0x3F,0x3F,0x00,0x3F,0x3F,
0x01,0x00,0x3F,0x3F,0x01,0x00,0x3F,0x3F,0x00,0x1F, 0x3F,0x24,0x24,0x37,0x17,0x00,
0x13,0x37,0x26,0x2C,0x3D,0x19,0x00,0x3F,0x3F,0x00, 0x13,0x37,0x26,0x2C,0x3D,0x19,
0x00,0x00,0xFF,0x00,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x00,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFC,0xFC,0x88,0x04,0xFC,0xF8,
0x04,0xFE,0xFF,0x04,0x00,0xF8,0xFC,0x04,0x04,0xFC, 0xF8,0x00,0xFF,0xFF,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x0F,0x0F, 0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0x1F, 0x20,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x47,0x47,
0x40,0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x40,0x40, 0x41,0x41,0x41,0x41,0x40,0x40,
0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20, 0x1F,0x00,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x0F,0x0F, 0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F, 0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F, 0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F, 0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F, 0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00
&#41;

'15x24 megala gramata mono ari8moi akoma
const font2 as byte&#91;450&#93;=&#40;
'0'
0xF8, 0xF8, 0xF8, 0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0xC7, 0xC7, 0xC7, 0xF8, 0xF8, 0xF8, 0xFF,
0xFF, 0xFF, 0x70, 0x70, 0x70, 0x0E, 0x0E, 0x0E,
0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0x03,
0x03, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x03, 0x03, 0x03,
'1'
0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x1F, 0x1C,
0x1C, 0x1C, 0x00, 0x00, 0x00,
'2'
0x38, 0x38, 0x38, 0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0xF8, 0xF8, 0xF8, 0x80,
0x80, 0x80, 0x70, 0x70, 0x70, 0x0E, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0x01, 0x01, 0x01, 0x1F, 0x1F,
0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
'3'
0x38, 0x38, 0x38, 0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0xF8, 0xF8, 0xF8, 0x80,
0x80, 0x80, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0xF1, 0xF1, 0xF1, 0x03, 0x03,
0x03, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x03, 0x03, 0x03,
'4'
0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x38, 0x38,
0x38, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7E,
0x7E, 0x7E, 0x71, 0x71, 0x71, 0x70, 0x70, 0x70,
0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,
0x1F, 0x1F, 0x00, 0x00, 0x00,
'5'
0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x8F,
0x8F, 0x8F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0xF0, 0xF0, 0xF0, 0x03, 0x03,
0x03, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x03, 0x03, 0x03,
'6'
0xC0, 0xC0, 0xC0, 0x38, 0x38, 0x38, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0xF0, 0xF0, 0xF0, 0x03, 0x03,
0x03, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x03, 0x03, 0x03,
'7'
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0xC7, 0xC7, 0xC7, 0x3F, 0x3F, 0x3F, 0x00,
0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x0E, 0x0E, 0x0E,
0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
'8'
0xF8, 0xF8, 0xF8, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0xF8, 0xF8, 0xF8,
0xF1, 0xF1, 0xF1, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
0x0E, 0x0E, 0xF1, 0xF1, 0xF1,
0x03, 0x03, 0x03, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x03, 0x03, 0x03,
'9'
0xF8, 0xF8, 0xF8, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0xF8, 0xF8, 0xF8,
0x01, 0x01, 0x01, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0x0E, 0x8E,
0x8E, 0x8E, 0x7F, 0x7F, 0x7F,
0x00, 0x00, 0x00, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x03,
0x03, 0x03, 0x00, 0x00, 0x00&#41;



sub procedure NOK_Write &#40;dim data as byte, dim mode as byte&#41;
dim i as short
' 1 gia DATA or 0 gia COMMAND
If TestBit&#40;mode,0&#41; = 1 then
SetBit&#40;dataor&#41;
end if
If TestBit&#40;mode,0&#41; = 0 then
ClearBit&#40;dataor&#41;
end if

ClearBit&#40;chipsel&#41; ' CS = 0

' Clock in 8 bits of data - Highst bit first
for i = 7 to 0 step -1
ClearBit&#40;serialclk&#41; ' SCLK = low
If TestBit&#40;Data,i&#41; = 0 then
ClearBit&#40;serialdata&#41; ' SDA = low
else
SetBit&#40;serialdata&#41; ' SDA = high
end if
SetBit&#40;serialclk&#41; ' SCLK = high
next i
SetBit&#40;chipsel&#41; ' CS = high
end sub

' Draws a character on screen at current possition
sub procedure NOK_Chr&#40;dim symlcd as byte&#41;
dim l as byte
dim m as word

NOK_Write&#40;0x00,1&#41; ' Space between characters
for l = 1 to 5
m = &#40;symlcd - 32&#41;
m = m * 5
m = m + l
m = m - 1
NOK_Write&#40;Font1&#91;m&#93;,1&#41;
next l
end sub

' Set the current position for data &#40;0<= x <= 84, 0<= y <= 5&#41;
sub procedure NOK_GotoXY&#40;dim x as byte, dim y as byte&#41;
dim n as byte
dim o as byte

n = x
o = y
SetBit&#40;n,7&#41;
SetBit&#40;o,6&#41;
NOK_Write &#40;o,0&#41;
NOK_Write &#40;n,0&#41;
end sub

sub procedure NOK_Chr2&#40;dim symlcd as byte,dim x as byte, dim y as byte&#41;

dim l as byte
dim m as word
NOK_GotoXY&#40;x,y&#41;
for l = 1 to 15
m = &#40;symlcd - 48&#41;
m = m * 45
m = m + l
m = m - 1
NOK_Write&#40;Font2&#91;m&#93;,1&#41;
next l
inc&#40;y&#41;
NOK_GotoXY&#40;x,y&#41;
for l = 1 to 15
m = &#40;symlcd - 48&#41;
m = m * 45
m = m + l+15
m = m - 1
NOK_Write&#40;Font2&#91;m&#93;,1&#41;
next l
inc&#40;y&#41;
NOK_GotoXY&#40;x,y&#41;
for l = 1 to 15
m = &#40;symlcd - 48&#41;
m = m * 45
m = m + l+30
m = m - 1
NOK_Write&#40;Font2&#91;m&#93;,1&#41;
next l

end sub

' Inverts Display - Here is still a bug. It only inverst once and doesn't
' want to invert back again
sub procedure NOK_Invert
NOK_Write&#40;0x0D,0&#41;
end sub

' Clear the LCD Data memory
sub procedure NOK_Clear
dim p as byte
dim q as byte
dim r as byte
NOK_GotoXY&#40;0,0&#41;
ClearBit&#40;serialdata&#41; ' SDA = low - Data bit is low
SetBit&#40;dataor&#41; ' DC = high - Data mode
ClearBit&#40;chipsel&#41; ' CS = low - Chip Enable

for p = 1 to 6 ' for 6 rows
for q = 1 to 84 ' for 84 colums
for r = 1 to 8 ' for 8 loop &#40;8 bits&#41;
ClearBit&#40;serialclk&#41; ' SCLK = low - Serial Clock Input
SetBit&#40;serialclk&#41; ' SCLK = high - Serial Clock Input
next r
next q
next p
end sub

' Writes a string at x, y position &#40;maks 14 char per row&#41; &#40;0 <= x <= 84 , 0 <= y <= 5&#41;
sub procedure NOK_Out&#40;dim x as byte, dim y as byte,
dim byref sentance as char&#91;14&#93;&#41;
dim v as byte
NOK_GotoXY&#40;x,y&#41;
for v = 0 to length&#40;sentance&#41;
NOK_Chr&#40;sentance&#91;v&#93;&#41;
next v
end sub

' LCD Initialization
sub procedure NOK_Init
' Set initial status of LCD pins
ClearBit&#40;serialclk&#41; ' SCLK = low
ClearBit&#40;serialdata&#41; ' SDA = low
ClearBit&#40;dataor&#41; ' DC = low
ClearBit&#40;chipsel&#41; ' CS = low
ClearBit&#40;res&#41; ' RES = low

' Toggle LCD reset
Delay_ms&#40;20&#41;
ClearBit&#40;res&#41; ' RES = low
Delay_ms&#40;500&#41;
SetBit&#40;res&#41; ' RES = high

SetBit&#40;chipsel&#41; ' CS = high
NOK_Write&#40;0x21,0&#41; ' Extended commands
NOK_Write&#40;0xc5,0&#41; ' LCD Vop
NOK_Write&#40;0x06,0&#41; ' Temp coef
NOK_Write&#40;0x13,0&#41; ' LCD Bias 1&#58;48
NOK_Write&#40;0x20,0&#41; ' Standard commands
NOK_Write&#40;0x0c,0&#41; ' Normal Mode

' Clear and position at top of LCD
NOK_Clear
NOK_GotoXY&#40;0,0&#41;
end sub

sub procedure picture

dim x as word
NOK_GotoXY&#40;0,0&#41;
for x=0 to 503
nok_write&#40;Start_Logo&#91;x&#93;,1&#41;
next x

end sub
end.


και το κυριος προγραμμα...



program nokia
include NOKIA_Nem



main&#58;
INTCON = 0
ANSEL = 0
TRISB = 0
NOK_Init
NOK_Clear
picture

end.


για οτι αποριες περιμενω... νομιζω το library ειναι αρκετα ευκολο στο να το καταλαβει κανεις...

και ξαναλεω... το library δεν ειναι δικο μου απλα το συμαζεψα λιγο αν και ακομα εχει καπια λαθακια :hammer:


κατι εγινε με τα εμοτιονς και το library...
οπου βλεπετε
m = (symlcd - 48) ειναι στη πραγρατικοτητα m = (symlcd - 48 ) χωρις το κενο αναμεσα στο "8" και ")"

DT200
04-01-08, 17:41
ρε φίλε τα έβαλες όλα χύμα και με μπέρδεψε, χάνομαι μέσα στον πανικό.

αν θέλεις κάνε EDIT και μετά πάτα το κουμπί CODE και βάλε
το module και μετά ξανά πάτα το CODE
το ίδιο κάνε και για το Main.

Nemmesis
04-01-08, 18:41
καλητερα ετσι?

DT200
04-01-08, 23:02
ναι ευχαριστώ .
εγώ πάντως θα το έσπαγα σε περισσότερα module (3 ή 4)
για να δουλεύετε ποιο εύκολα.

πάντως είναι ωραίο !

pl4tonas
20-05-08, 13:33
Παιδιά,
το κυκλωματάκι του θερμομέτρου το έχω κατασκευάσει εδω και 3 ημέρες. Δυστυχώς δεν δουλεψε.
Πιστεύω πως έχω καψει τον 12F629. Η ανυπομονησία μου φταίει, τον εβαλα στη κατασκευή ενώ ήταν ενωμένη η μπαταρία.
Παρόλο που ο προγραματιστής μου τον γράφει και τον διαβάζει κανονικά, πιστεύω του έκανα ζημιά.
Θα παραγγείλω άλλο και αν δουλέψει θα σας ενημερώσω.
Θα μου πάρει 1 βδομάδα μέχρι να παραλάβω το νέο.

Nemmesis
20-05-08, 19:41
δεν νομιζω να φταει αυτο... οι οθονες ειναι πολυ ευαισθητες... και να ξερεις οτι εμενα δεν μου δουλευε με 3βολτ απο 2 μπαταριουλες... χρειαστηκε να δωσω 3.7 βολτ απο μπαταρια κινητου για να δουλεψει...

pl4tonas
21-05-08, 16:07
Αχα.. Εγώ της δίνω μέσω διόδου από μπαταρία λιθίου των 3.7V μόνο τα 3V. Ίσως δηλαδή το πρόβλημα να είναι η δίοδος.
Θα την αφαιρέσω για να δω τι θα συμβεί.

Nemmesis
21-05-08, 22:10
περιμενω νεα

pl4tonas
23-05-08, 16:49
Δεν δούλεψε ακόμη. Θα παραγγείλω άλλο PIC. Σε μια βδομάδα περόπυ θα έχω νέα.

BOOMER
16-01-09, 12:45
Λοιπόν έχοντας αποφασίσει να ασχοληθώ και εγώ με τη χρήση οθόνης από nokia 3310 με την βοήθεια των pic.
Και αφού διάβασα το data sheet του ελεγκτή της οθόνης.
Μου δημιουργήθηκε η απορία τι είναι to MUX RATE και με ποιο σκεπτικό επιλέγουμε ποια τιμή θα χρησιμοποιήσουμε.

Στις δοκιμές που έκανα δε κατάλαβα καμιά διαφορά αλλάζοντας τιμές.:confused1:

Όποιος έχει ασχοληθεί και γνωρίζει και έχει διάθεση ας μας ενημερώσει

Nemmesis
16-01-09, 14:21
και εγω το ειχα παλεψει λιγο αυτο αλλα καταλαβα και πολλα τοτε αλλα δεν μου εκαιγε κιολας απλα δοκιμες εκανα τοτε η οθονη εσπασε πριν τελικα ολοκληροθει το project :001_unsure:

BOOMER
16-01-09, 17:56
Έχω καταφέρει και έχω δημιουργήσει εικόνα στην οθόνη, αλλά με έχει φάει η περιέργια τι κάνει αυτή η παράμετρος (MUX RATE)

BOOMER
16-01-09, 17:57
Μην γελάσετε με τις ζωγραφικές μου ικανότητες :001_smile:

Nemmesis
16-01-09, 18:00
ωραιος φιλε :001_rolleyes:

BOOMER
07-03-09, 08:31
Αφού οι δοκιμές με την οθόνη από nokia πέτυχαν, το επόμενο βήμα ήταν να προσπαθήσω να φτιάξω ένα αντίστοιχο θερμόμετρο σαν αυτό που έφτιαξε ο τύπος που αναφέρεται στο πρώτο μύνημα.



Μετά από αρκετή προσπάθεια αφού θα έπρεπε να μάθω πως δουλεύει και ο αισθητήρας θερμοκρασίας , τελικά το θερμόμετρό έγινε και ιδού το αποτέλεσμα.

KOKAR
03-04-09, 15:09
ποιον PIC έχεις βάλει ?
Μπορείς να ανεβάσεις το ΗΕΧ file ?

BOOMER
04-04-09, 10:54
'Οταν μάθαινα πως δουλεύει η οθόνη χρησιμοποιούσα τον 16F877, στην κατασκευή χρησιμοποίησα τον 16LF88.

Είσαι σίγουρος ότι μόνο με το hex θα βγάλεις άκρη.
Από εβδομάδα που θα γυρίσω σπίτι , θα ανεβάσω το .asm αρχείο.
Υπόψιν το πρόγραμμα είναι γραμμένο σε assembly

El_Kei
04-04-09, 15:29
ποιον PIC έχεις βάλει ?
Μπορείς να ανεβάσεις το ΗΕΧ file ?

Έχω 2 ερωτήσεις.. :confused1:

1: το αρχικό κύκλωμα υλοποιήται με τον PIC12F629, ο PIC 12F675 μπορεί να κάνει την ίδια δουλειά? (έχω 2 από αυτούς, αν μπορεί να γίνει, μην ψάξω για τον 12F629 )

2: (λίγο off topic) έχει κάποιος κάποιο κυκλωματάκι για προγραμματισμό PIC με 8 ποδαράκια ή το κάνατε με το kit που υπάρχει στην αγορά και προγραμματίζει όλους τους PIC? (στο Φανό που ρώτησα χθες το είχε 58 euro).

KOKAR
04-04-09, 16:27
εγώ έβαλα τον 12F675 και έκανα και μια αλλαγή στο HEX.
η αλλαγή διόρθωνε το contrast της οθόνης και η τιμη που εβαλα ειναι C9
http://www.ivica-novakovic.from.hr/Picture/NokiaLcdPicture/Kontrast.gif
φόρτωσα το HEX και στην σειρα 00D0 άλλαξα το Α9 σε C9
φυσικά κατέβασα το ΗΕΧ που ειναι για τον 12F675 !
το αρχείο με την αλλαγή για τον PIC 12F675 είναι το
παρακάτω...

BOOMER
07-04-09, 08:11
Επειδή ξεκίνησα να πειραματίζομαι με τη οθόνη με χρήση του pic 16F877, το αρχικό πρόγραμμα γράφτηκε για αυτόν. (βρίσκεται στο αρχείο PROG43)

Μετά το τροποποίησα προκειμένου να το χρησιμοποιήσω στον 16LF88 (βρίσκεται στο αρχείο PROG01).

Μετά από λίγο καιρό προστέθηκε και η δυνατότητα να μπαίνει ο pic σε λειτουργία sleep για εξοικονόμηση ενέργειας (βρίσκεται στο αρχείο PROG02)

Έτσι χρισημοποιώντας το τελικό πρόγραμμα (PROG02) όταν η οθόνη βρίσκεται σε Normal mode (μαύροι αριθμοί σε λευκό φόντο) ο pic βρίσκεται σε λειτουργία sleep και μετράει τη θερμοκρασία κάθε 70 sec περίπου, ενώ όταν η οθόνη βρίσκεται σε inverse mode (λευκοί αριθμοί σε μαύρο φόντο) ο pic μετράει τη θερμοκρασία συνεχώς

VaGyver
07-04-09, 11:44
Boomer καλημέρα,


Μια πρόταση (έπειτα από δικές μου δοκιμές):

Όταν ξυπνάς τον Pic (μετά από sleep) κάνεις κανονικά επανεκίνηση (initilazion) στην LCD?

Αν ναι και θέλεις να το αποφύγεις (και επειδή το αντιμετώπισα και εγώ) μπορείς να βάλεις μια pull-up αντίσταση στο Reset της οθόνης και μετά το "ξύπνημα" του pic, η όθόνη σου θα έχει μείνει ακριβώς εκεί που την άφήσες.

(εκτός εαν στο sleep, σβήνεις και την οθόνη).

Φιλικά

BOOMER
07-04-09, 13:54
Όταν ο pic βρίσκεται σε sleep, η οθόνη παραμένει ανναμένη.

Όταν επανέρχεται σε λειτουργία με τη βοήθεια του WDT, συνεχίζει το πρόγραμμα κανονικά από εκει που σταματήσε.

Υπόψιν ότι ο 16F88 σου δίνει την δυνατότητα να ενεργοποιείσεις και να απενεργοποιήσεις τον WDT και κατά την διάρκεια εκτέλεσης του προγράμματος και όχι μόνο από τα fuses

Stergios_[.gr]
07-06-10, 15:33
Το library δεν το εκανα εγω
ουσιαστικα εγω δανειστικα μια library (η οποια μαλλον επιτηδες την ειχαν κανει να μην δουλευει) τη κουτσουρεψα λιγο και με βαση αυτην δουλεψα τον pic16f88....

library:


module NOKIA_Nem

....

' LCD Initialization
sub procedure NOK_Init
' Set initial status of LCD pins
ClearBit(serialclk) ' SCLK = low
ClearBit(serialdata) ' SDA = low
ClearBit(dataor) ' DC = low
ClearBit(chipsel) ' CS = low
ClearBit(res) ' RES = low

' Toggle LCD reset
Delay_ms(20)
ClearBit(res) ' RES = low
Delay_ms(500)
SetBit(res) ' RES = high

SetBit(chipsel) ' CS = high
NOK_Write(0x21,0) ' Extended commands
NOK_Write(0xc5,0) ' LCD Vop
NOK_Write(0x06,0) ' Temp coef
NOK_Write(0x13,0) ' LCD Bias 1:48
NOK_Write(0x20,0) ' Standard commands
NOK_Write(0x0c,0) ' Normal Mode

' Clear and position at top of LCD
NOK_Clear
NOK_GotoXY(0,0)
end sub

sub procedure picture

dim x as word
NOK_GotoXY(0,0)
for x=0 to 503
nok_write(Start_Logo[x],1)
next x

end sub
end.

Παναγιώτη,
Για ποιά γλώσσα είναι η βιβλιοθήκη? Για MikroBASIC 'H MikroBASIC PRO?

Nemmesis
07-06-10, 17:15
στην απλη ειναι... εκδοση δεν θυμαμε ομως

Stergios_[.gr]
07-06-10, 17:57
Ευχαριστώ Παναγιώτη!

giannhssdra
27-06-10, 14:13
καλησπερα
αυτη η οθονη του 3310 βγαινει μονο με εναν επεξεργαστη τον PCD8544 η και με αλλους? απλα για να ξερω πριν παραγγειλω να ρωτησω ποιον εχει ηα ειναι σιγουρο οτι εχει τον PCD8544?
ευχαριστω

El_Kei
29-06-10, 13:03
Καλημέρα,
Αν κάποιος θέλει οθόνη από Νοkia 3310 μαζί με τη βάση της (το πλαστικό που είναι κάτω από το πληκτρολόγιο, το διαφανές) ας μου στείλει ένα μήνυμα.
Έχω 2 καινούριες, αχρησιμοποίητες.