Hi Richard, What does work and what does not? Can you supply me with the full source code of both?
Joep 2010/2/22 <[email protected]>: > Revision: 1698 > Author: [email protected] > Date: Mon Feb 22 13:08:58 2010 > Log: Nice small graphic display unfortunately I don’t get it work with > print.jal some how the pseudo var does not work, it needs the real > procedure. > > Joep do you have any idea why it does not work with print jal and if a > create the same type of procedure in the library of nokia3310 it works? > > > Greetz > > Richard > > http://code.google.com/p/jallib/source/detail?r=1698 > > Added: > /trunk/include/external/lcd/lcd_nokia3310.jal > > ======================================= > --- /dev/null > +++ /trunk/include/external/lcd/lcd_nokia3310.jal Mon Feb 22 13:08:58 > 2010 > @@ -0,0 +1,286 @@ > +-- > ----------------------------------------------------------------------------- > +-- Title: library for GLCD with pcd8544 controller used in Nokia 3310 > +-- Author: Andre Miller Copyright (c) 2008..2010, all rights reserved. > +-- Adapted-by: Richard Zengerink > +-- Compiler: >=2.4n > +-- > +-- This file is part of jallib (http://jallib.googlecode.com) > +-- Released under the ZLIB license > (http://www.opensource.org/licenses/zlib-license.html) > +-- > +-- Sources: http://www.amontec.com/lcd_nokia_3310.shtml > +-- > +-- Description: library for Nokia 3310 display with pcd8544 controller > +-- > +-- Dependencies: delay.jal > +-- > +-- > + > + > +include delay > + > + > +const byte FontLookup[] = > + { > + 0x00, 0x00, 0x00, 0x00, 0x00, -- sp > + 0x00, 0x00, 0x2f, 0x00, 0x00, -- ! > + 0x00, 0x07, 0x00, 0x07, 0x00, -- " > + 0x14, 0x7f, 0x14, 0x7f, 0x14, -- # > + 0x24, 0x2a, 0x7f, 0x2a, 0x12, -- $ > + 0xc4, 0xc8, 0x10, 0x26, 0x46, -- % > + 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, 0x50, 0x30, 0x00, -- , > + 0x10, 0x10, 0x10, 0x10, 0x10, -- - > + 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, 0x14, 0x14, 0x14, 0x14, -- = > + 0x00, 0x41, 0x22, 0x14, 0x08, -- > > + 0x02, 0x01, 0x51, 0x09, 0x06, -- ? > + 0x32, 0x49, 0x59, 0x51, 0x3E, -- @ > + 0x7E, 0x11, 0x11, 0x11, 0x7E, -- 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, -- 55 > + 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 > + 0x0C, 0x52, 0x52, 0x52, 0x3E, -- g > + 0x7F, 0x08, 0x04, 0x04, 0x78, -- h > + 0x00, 0x44, 0x7D, 0x40, 0x00, -- i > + 0x20, 0x40, 0x44, 0x3D, 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 > + 0x7C, 0x14, 0x14, 0x14, 0x08, -- p > + 0x08, 0x14, 0x14, 0x18, 0x7C, -- 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 > + 0x0C, 0x50, 0x50, 0x50, 0x3C, -- y > + 0x44, 0x64, 0x54, 0x4C, 0x44 -- z > + } > + > + > + > +procedure _lcd_write (byte in value) is > +-- Clock in 8 bits of data > + for 8 loop > + nok_sclk = low > + if ( (value & 0x80) == 0 )then > + nok_sda = low > + else > + nok_sda = high > + end if > + nok_sclk = high > + value = value << 1 > + delay_1us -- max dataspeed is 4Mhz so delay for safety > + end loop > +end procedure > + > + > +-- Write a data byte to the LCD > +procedure _lcd_write_data (byte in value) is > + nok_dc = high -- d/c line high for data > + _lcd_write (value) > +end procedure > + > + > + > +-- Write a command byte to the LCD > +procedure _lcd_write_command (byte in value) is > + nok_dc = low -- d/c line low for command > + _lcd_write (value) > + nok_dc = high -- set d/c to data > +end procedure > + > + > + > + > +-- Set the current position for data (x = 0->83, y = 0->5) > +procedure lcd_gotoxy (byte in xnokia, byte in ynokia) is > + _lcd_write_command ( 0x40 | ( ynokia & 0x07 )) > + _lcd_write_command ( 0x80 | ( xnokia & 0x7f )) > +end procedure > + > + > + > + > +--Clear the LCD data memory > +procedure lcd_clear_screen() is > + nok_sda = low ;; Data bit is low > + nok_dc = high ;; Data mode > + nok_cs = low > + for 6 loop -- 6 rows > + for 84 loop -- 84 columns or 'pages' > + for 8 loop --Clock for the 8 bits of the 'page' > + nok_sclk = low > + nok_sclk = high > + end loop > + end loop > + end loop > +end procedure > + > +-- Send LCD Initialization > +procedure lcd_Init() is > +-- Set initial status of LCD pins > + nok_sclk = low > + nok_sda = low > + nok_dc = low > + nok_cs = low > + nok_res = low > +-- Toggle LCD Reset > + delay_1ms (10) > + nok_res = low > + delay_1ms (250) > + nok_res = high > +-- nok_cs = high > + _lcd_write_command (0x21) -- Extended commands > + _lcd_write_command (0xc5) -- LCD Vop > + _lcd_write_command (0x06) -- Temp coef > + _lcd_write_command (0x13) -- LCD Bias 1:48 > + _lcd_write_command (0x20) -- Standard commands > + _lcd_write_command (0x0c) -- Normal Mode > +-- Clear and position at top of LCD > + lcd_clear_screen() > + lcd_gotoxy (0,0); > +end procedure > + > + > + > +-- Writes a character to the display > +procedure print_char_5x7 (byte in letter) is > + var word index = 0 > + var byte offset > + var byte x > + > + offset = letter - 32 ;; Fix for ascii value > + > + for offset loop > + index = index + 5 > + end loop > + > + for 5 loop > + x = FontLookup[index] > + _lcd_write_data (x) > + index = index + 1 > + end loop > + > + _lcd_write_data (0) ; Add blank space between characters > +end procedure > + > + > + > + > +-- Writes an inverted character to the display > +procedure print_char_5x7_i (byte in letter) is > + var word index = 0 > + var byte offset > + var byte x > + > + offset = letter - 32 ;; Fix for ascii value > + > + for offset loop > + index = index + 5 > + end loop > + > + for 5 loop > + x = FontLookup[index] > + x = x ^ 0xFF > + _lcd_write_data (x) > + index = index + 1 > + end loop > + > + _lcd_write_data (0xFF) ; Add blank space between characters > +end procedure > + > + > +-- print string to lcd > +-- same idea as print_string in print.jal library only this one works > +-- and with print.jal unfortunately not > + > +procedure char_string_to_nokia( byte in str[]) is > + var word len = count(str) > + var byte i > + > + for len using i loop > + print_char_5x7 (str[i]) > + end loop > + > +end procedure > + > +-- prints any bitmap graphics (for instance created with fastLCD > +-- http://www.amontec.com/lcd_nokia_3310.shtml) to lcd > +-- just create: const byte graphic[] = { graphic max 504 bytes} and call > +-- graphic_to_nokia( graphic) > + > +procedure graphic_to_nokia( byte in graph[]) is > + var word len = count(graph) > + var word i > + > + for len using i loop > + _lcd_write_data(graph[i]) > + end loop > + > +end procedure > + > +-- > ---------------------------------------------------------------------------- > +-- lcd'put - write one char to screen (pseudo var, enables streams) > +-- > ---------------------------------------------------------------------------- > +procedure lcd'put(byte in data) is > +; pragma inline -- disabled due to complier bug with inline + > pseudovar/arrays. > + _lcd_write_data(data) > +end procedure > > -- > You received this message because you are subscribed to the Google Groups > "jallib" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/jallib?hl=en. > > -- You received this message because you are subscribed to the Google Groups "jallib" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/jallib?hl=en.
