# Συζήτηση Κυκλωμάτων > Ψηφιακά Κυκλώματα > Μικροελεγκτές >  >  nokia lcd + PIC12F629

## Nemmesis

ειναι δυνατον ρε παιδια? πως το κανει ο τυπος αυτο?

http://www.ivica-novakovic.from.hr/N...ometar-eng.htm

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

----------


## DT200

δεν ξέρω θέλει ψάξιμο.

----------


## dikos

Τι εννοείς όταν λές πώς κάνει όλα αυτά;
Ένα θερμόμετρο δεν είναι μόνο;

----------


## Nemmesis

ναι... αλλα η οθονη αυτη αποτελειτε απο 6 "σελιδες" των 84byte... φαντασου μονο για να κανεις μια εικονα στην οθονη τη χρειαζετε... ποσο μαλλον να κανεις κατι σαν αναλογικη μπαρα οπως εχει το θερμορετρο και να αναζει αναλογα με την θερμοκρασια... εγω που εχω κανει κατι αναλογο με μια 
lcd2x16 μου πειρε 2kb... δεν ξερω ποσο μπορει να μου παρει για μια οθονη σαν του nokia...

----------


## dikos

Κατάλαβα...
Τη συγκεκριμένη κατασκευή την έχω βάλει στο μάτι πολύ καιρό και όλο λέω να την φτιάξω και όλο το αναβάλω.
Λές να μην δουλέψει τελικά;

----------


## DT200

> ναι... αλλα η οθονη αυτη αποτελειτε απο 6 "σελιδες" των 84byte... φαντασου μονο για να κανεις μια εικονα στην οθονη τη χρειαζετε... ποσο μαλλον να κανεις κατι σαν αναλογικη μπαρα οπως εχει το θερμορετρο και να αναζει αναλογα με την θερμοκρασια... εγω που εχω κανει κατι αναλογο με μια 
> lcd2x16 μου πειρε 2kb... δεν ξερω ποσο μπορει να μου παρει για μια οθονη σαν του nokia...




και εγώ που έφτιαξα το ίδιο με τον φίλο  Nemmesis  το έχω φτάσει με το ζόρι 1,38 KB 
με μία αναλογική μπάρα , μία ένδειξη τάσης τριών αριθμόν και εννιά σταθερούς χαρακτήρες (_._ _ DCv  και   DT200)

----------


## Nemmesis

ε δεν πιστευω να μην δουλεψει... αλλα μου φενεται πολυ παραξενο... δλδ θελει 504 byte Μονο και μονο για να κανει μια εικονα... χωρις καμια αλλη εντολη...

----------


## eebabs2000

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

----------


## Nemmesis

> Συνήθως σε τέτοιες περιπτώσεις, φτιαχνουν τη μία εικόνα, και κάθε φορά που μεταβάλλεται στέλνουν τις διαφορές και όχι ξανα ολόκληρη την εικόνα, ενώ η πρώτη παραμένει αποθηκευμενη στον controller της lcd.



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

----------


## gsmaster

Είναι θέμα του πόσο μπορεί να απλοποιηθεί ο κώδικας. 

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

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

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

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

----------


## Nemmesis

και επειδη εσκασα να δω ποσο θα μου παρει εμενα για κατι αντιστιχο... και μετα απο λιγο διαβασμα μπορεσα και εστειλα μια εικονα στην οθονη... αλλα μου πειρε 0,76kb... εγω σε καμια περιπτωση δεν θα μπουρουσα να κανω οτι εκανε ο τυπος με μονο 1kb μνημη...αλλα τι με νιαζει? θα εβαζα καναν ποιο μεγαλο πικ και ολα οκ   :Cool:   :Cool:   :Cool:  τεσπα... αρκετα ειπα... οριστε και μια εικονουλα..

----------


## dikos

Πολύ καλό μπράβο.

----------


## DT200

σε "πάω" γιατί ψάχνεσαι και τα καταφέρνεις !

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

----------


## Nemmesis

tnks tnks  :Ψώνιο:   :Ψώνιο:   :Ψώνιο:  αλλα το 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&#91;460&#93; =
&#40;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 , ' &#40;
0x00, 0x41, 0x22, 0x1c, 0x00 , ' &#41;
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 , ' &#58;
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 - 4 :Cool:   ειναι στη πραγρατικοτητα  m = (symlcd - 48 ) χωρις το κενο αναμεσα στο "8" και ")"

----------


## DT200

ρε φίλε τα έβαλες όλα χύμα και με μπέρδεψε, χάνομαι μέσα στον πανικό.

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

----------


## Nemmesis

καλητερα ετσι?

----------


## DT200

ναι ευχαριστώ .
εγώ πάντως θα το έσπαγα σε περισσότερα module (3 ή 4)
για να δουλεύετε ποιο εύκολα.

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

----------


## pl4tonas

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

----------


## Nemmesis

δεν νομιζω να φταει αυτο...  οι οθονες ειναι πολυ ευαισθητες... και να ξερεις οτι εμενα δεν μου δουλευε με 3βολτ απο 2 μπαταριουλες... χρειαστηκε να δωσω 3.7 βολτ απο μπαταρια κινητου για να δουλεψει...

----------


## pl4tonas

Αχα..  Εγώ της δίνω μέσω διόδου από μπαταρία λιθίου των 3.7V μόνο τα 3V.  Ίσως δηλαδή το πρόβλημα να είναι η δίοδος.
Θα την αφαιρέσω για να δω τι θα συμβεί.

----------


## Nemmesis

περιμενω νεα

----------


## pl4tonas

Δεν δούλεψε ακόμη.  Θα παραγγείλω άλλο PIC.  Σε μια βδομάδα περόπυ θα έχω νέα.

----------


## BOOMER

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

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

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

----------


## Nemmesis

και εγω το ειχα παλεψει λιγο αυτο αλλα καταλαβα και πολλα τοτε αλλα δεν μου εκαιγε κιολας απλα δοκιμες εκανα τοτε η οθονη εσπασε πριν τελικα ολοκληροθει το project  :Unsure:

----------


## BOOMER

Έχω καταφέρει και έχω δημιουργήσει εικόνα στην οθόνη, αλλά με έχει φάει η περιέργια τι κάνει αυτή η παράμετρος (MUX RATE)

----------


## BOOMER

Μην γελάσετε με τις ζωγραφικές μου ικανότητες   :Smile:

----------


## Nemmesis

ωραιος φιλε  :Rolleyes:

----------


## BOOMER

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



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

----------


## KOKAR

ποιον PIC έχεις βάλει ?
Μπορείς να ανεβάσεις το ΗΕΧ file ?

----------


## BOOMER

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

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

----------


## El_Kei

> ποιον PIC έχεις βάλει ?
> Μπορείς να ανεβάσεις το ΗΕΧ file ?



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

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

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

----------


## KOKAR

εγώ έβαλα τον 12F675 και έκανα και μια αλλαγή στο HEX.
η αλλαγή διόρθωνε το contrast της οθόνης και η τιμη που εβαλα ειναι C9

φόρτωσα το HEX και στην σειρα 00D0 άλλαξα το Α9 σε C9
φυσικά κατέβασα το ΗΕΧ που ειναι για τον 12F675 !
το αρχείο με την αλλαγή για τον PIC 12F675 είναι το
παρακάτω...

----------


## BOOMER

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

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

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

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

----------


## VaGyver

Boomer καλημέρα,


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

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

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

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

Φιλικά

----------


## BOOMER

Όταν ο pic βρίσκεται σε sleep, η οθόνη παραμένει ανναμένη.

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

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

----------


## Stergios_[.gr]

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



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

----------


## Nemmesis

στην απλη ειναι... εκδοση δεν θυμαμε ομως

----------


## Stergios_[.gr]

Ευχαριστώ Παναγιώτη!

----------


## giannhssdra

καλησπερα 
αυτη η οθονη του 3310 βγαινει μονο με εναν επεξεργαστη τον PCD8544 η και με αλλους? απλα για να ξερω πριν παραγγειλω να ρωτησω ποιον εχει ηα ειναι σιγουρο οτι εχει τον PCD8544?
ευχαριστω

----------


## El_Kei

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

----------

