And you do use compiler version jal 2.4m (compiled Dec 26 2009), right? 2010/2/22 Joep Suijs <[email protected]>: > 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.
