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 , ' [
0x55, 0x2A, 0x55, 0x2A, 0x55 , ' /
0x00, 0x41, 0x41, 0x7F, 0x00 , ' ]
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) ' horiz lines
' h eikona moy
const Start_Logo as byte[504] = (
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
)
'15x24 megala gramata mono ari8moi akoma
const font2 as byte[450]=(
'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)
sub procedure NOK_Write (dim data as byte, dim mode as byte)
dim i as short
' 1 gia DATA or 0 gia COMMAND
If TestBit(mode,0) = 1 then
SetBit(dataor)
end if
If TestBit(mode,0) = 0 then
ClearBit(dataor)
end if
ClearBit(chipsel) ' CS = 0
' Clock in 8 bits of data - Highst bit first
for i = 7 to 0 step -1
ClearBit(serialclk) ' SCLK = low
If TestBit(Data,i) = 0 then
ClearBit(serialdata) ' SDA = low
else
SetBit(serialdata) ' SDA = high
end if
SetBit(serialclk) ' SCLK = high
next i
SetBit(chipsel) ' CS = high
end sub
' Draws a character on screen at current possition
sub procedure NOK_Chr(dim symlcd as byte)
dim l as byte
dim m as word
NOK_Write(0x00,1) ' Space between characters
for l = 1 to 5
m = (symlcd - 32)
m = m * 5
m = m + l
m = m - 1
NOK_Write(Font1[m],1)
next l
end sub
' Set the current position for data (0<= x <= 84, 0<= y <= 5)
sub procedure NOK_GotoXY(dim x as byte, dim y as byte)
dim n as byte
dim o as byte
n = x
o = y
SetBit(n,7)
SetBit(o,6)
NOK_Write (o,0)
NOK_Write (n,0)
end sub
sub procedure NOK_Chr2(dim symlcd as byte,dim x as byte, dim y as byte)
dim l as byte
dim m as word
NOK_GotoXY(x,y)
for l = 1 to 15
m = (symlcd - 48)
m = m * 45
m = m + l
m = m - 1
NOK_Write(Font2[m],1)
next l
inc(y)
NOK_GotoXY(x,y)
for l = 1 to 15
m = (symlcd - 48)
m = m * 45
m = m + l+15
m = m - 1
NOK_Write(Font2[m],1)
next l
inc(y)
NOK_GotoXY(x,y)
for l = 1 to 15
m = (symlcd - 48)
m = m * 45
m = m + l+30
m = m - 1
NOK_Write(Font2[m],1)
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(0x0D,0)
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(0,0)
ClearBit(serialdata) ' SDA = low - Data bit is low
SetBit(dataor) ' DC = high - Data mode
ClearBit(chipsel) ' 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 (8 bits)
ClearBit(serialclk) ' SCLK = low - Serial Clock Input
SetBit(serialclk) ' SCLK = high - Serial Clock Input
next r
next q
next p
end sub
' Writes a string at x, y position (maks 14 char per row) (0 <= x <= 84 , 0 <= y <= 5)
sub procedure NOK_Out(dim x as byte, dim y as byte,
dim byref sentance as char[14])
dim v as byte
NOK_GotoXY(x,y)
for v = 0 to length(sentance)
NOK_Chr(sentance[v])
next v
end sub
' 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.
και το κυριος προγραμμα...
program nokia
include NOKIA_Nem
main:
INTCON = 0
ANSEL = 0
TRISB = 0
NOK_Init
NOK_Clear
picture
end.
για οτι αποριες περιμενω... νομιζω το library ειναι αρκετα ευκολο στο να το καταλαβει κανεις...
και ξαναλεω... το library δεν ειναι δικο μου απλα το συμαζεψα λιγο αν και ακομα εχει καπια λαθακια :hammer:
κατι εγινε με τα εμοτιονς και το library...
οπου βλεπετε
m = (symlcd - 48) ειναι στη πραγρατικοτητα m = (symlcd - 48 ) χωρις το κενο αναμεσα στο "8" και ")"
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.