here's the sample main code:
Code:
#include <16F73.h>
#device adc=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NOBROWNOUT
#use delay(clock=10M)
#byte lcdport = 0x06 // PORTB
#byte lcdport_tris = 0x86 // PORTB tris
#bit nok_sclk = lcdport.4 // RB5
#bit nok_sda = lcdport.3 // RB6
#bit nok_dc = lcdport.2 // RB7
#bit nok_cs = lcdport.1 // RB0
#bit nok_res = lcdport.0 // RB1
#include "3310.c"
const unsigned char image1[252] = {0x00, 0x00, 0x00, 0x7C, 0x83, 0x03, 0x03, 0x3F, 0x3F, 0xFC, 0xF0, 0xC0, 0x70, 0x0C, 0x03, 0x03, 0x03, 0x83, 0xFC, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC0, 0xFC, 0x03, 0x03, 0x03, 0x03, 0xFC, 0xC0, 0xF0, 0x0C, 0x0C, 0x0C, 0x0C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x40, 0x80, 0x00, 0x0C, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x0C, 0x00, 0x00, 0x80, 0x80, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xC0, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x00, 0xC0, 0xF0, 0xF0, 0xF8, 0x07, 0x01, 0x00, 0x00, 0x38, 0x38, 0x38, 0x01, 0x07, 0xFE, 0xC0, 0x00, 0x00, 0x07, 0x07, 0x07, 0xC0, 0xF0, 0xF8, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC6, 0x06, 0x08, 0x08, 0x30, 0x30, 0x31, 0x06, 0xC8, 0x30, 0x08, 0x08, 0x08, 0x06, 0x36, 0x06, 0x36, 0x06, 0x06, 0x06, 0x08, 0x08, 0x30, 0xC8, 0x06, 0x31, 0x31, 0x30, 0x08, 0x08, 0x06, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFC, 0xF8, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF8, 0xFC, 0x7F, 0x7F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x87, 0x63, 0x63, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0xFC, 0x03, 0x00, 0x78, 0x80, 0x80, 0x1C, 0x63, 0x63, 0x63, 0x63, 0x1C, 0x1C, 0x80, 0x78, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x60 };
const unsigned char image2[252] = {0x00, 0x00, 0x00, 0x00, 0xC0, 0xB0, 0x30, 0x33, 0x33, 0x3C, 0x3C, 0x7F, 0xFF, 0x0F, 0x0F, 0x0F, 0x3C, 0x3C, 0x8F, 0x8F, 0x8F, 0x7F, 0x7F, 0x33, 0x03, 0xC3, 0xC3, 0x0F, 0x3F, 0x3F, 0xFC, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x30, 0xF0, 0xC0, 0xC0, 0xC0, 0x30, 0x30, 0xF0, 0xCC, 0x0C, 0x0C, 0x0C, 0x80, 0x0F, 0x70, 0x80, 0x00, 0x0F, 0x0F, 0x3F, 0x7C, 0x7C, 0x7C, 0x7C, 0x3F, 0x3F, 0x0F, 0x00, 0x80, 0x70, 0x0F, 0x80, 0x80, 0x0C, 0x0C, 0x0C, 0x30, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x37, 0x0F, 0x0E, 0xCE, 0xCE, 0xC0, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x01, 0x38, 0x38, 0xF8, 0xF0, 0xF1, 0xF1, 0xF0, 0xF8, 0xF8, 0x3F, 0x0F, 0x00, 0x07, 0x0E, 0x0E, 0x0E, 0x07, 0x0E, 0x0E, 0x07, 0x0E, 0x0E, 0x0E, 0x0F, 0x30, 0xC0, 0xC7, 0x0F, 0x0F, 0x0F, 0x00, 0xC0, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x01, 0xC0, 0x30, 0x01, 0x06, 0xC6, 0xC6, 0x08, 0x08, 0xC8, 0x08, 0x08, 0xC8, 0xC8, 0x06, 0x06, 0x01, 0x30, 0xC0, 0x01, 0x01, 0x06, 0x06, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xF8, 0xE0, 0xE0, 0xE3, 0xE3, 0xE3, 0xF8, 0x78, 0xE3, 0xE3, 0xFC, 0xFC, 0x78, 0x78, 0x7F, 0x1F, 0x78, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x7F, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x84, 0x87, 0x83, 0xE0, 0xF8, 0xF8, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x03, 0x03, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 };
void init() {
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
lcdport_tris = 0x00; // lcdport all bits are outputs
port_b_pullups(TRUE);
nokia_init();
}
void main()
{
char i;
init();
nokia_gotoxy(0,0);
for(i=0; i<252; i++) nokia_write_data(image1[i]);
for(i=0; i<252; i++) nokia_write_data(image2[i]);
}
and just in case wala pa kayo nung 3310 LCD code library:
Code:
////////////////////////////////////////////////////////////////////////////////
/*
LPH7779-LCD(Nokia 3310) library
*/
////////////////////////////////////////////////////////////////////////////////
char CONST TABLE5 [240] = { // ASCII table for NOKIA LCD: 96 rows * 5 bytes= 480 bytes
0x00,0x00,0x00,0x00,0x00, // 20 space
0x00,0x00,0x5f,0x00,0x00, // 21 !
0x00,0x07,0x00,0x07,0x00, // 22 "
0x14,0x7f,0x14,0x7f,0x14, // 23 #
0x24,0x2a,0x7f,0x2a,0x12, // 24 $
0x23,0x13,0x08,0x64,0x62, // 25 %
0x36,0x49,0x55,0x22,0x50, // 26 &
0x00,0x05,0x03,0x00,0x00, // 27 '
0x00,0x1c,0x22,0x41,0x00, // 28 (
0x00,0x41,0x22,0x1c,0x00, // 29 )
0x14,0x08,0x3e,0x08,0x14, // 2a *
0x08,0x08,0x3e,0x08,0x08, // 2b +
0x00,0x50,0x30,0x00,0x00, // 2c ,
0x08,0x08,0x08,0x08,0x08, // 2d -
0x00,0x60,0x60,0x00,0x00, // 2e .
0x20,0x10,0x08,0x04,0x02, // 2f /
0x3e,0x51,0x49,0x45,0x3e, // 30 0
0x00,0x42,0x7f,0x40,0x00, // 31 1
0x42,0x61,0x51,0x49,0x46, // 32 2
0x21,0x41,0x45,0x4b,0x31, // 33 3
0x18,0x14,0x12,0x7f,0x10, // 34 4
0x27,0x45,0x45,0x45,0x39, // 35 5
0x3c,0x4a,0x49,0x49,0x30, // 36 6
0x01,0x71,0x09,0x05,0x03, // 37 7
0x36,0x49,0x49,0x49,0x36, // 38 8
0x06,0x49,0x49,0x29,0x1e, // 39 9
0x00,0x36,0x36,0x00,0x00, // 3a :
0x00,0x56,0x36,0x00,0x00, // 3b ;
0x08,0x14,0x22,0x41,0x00, // 3c <
0x14,0x14,0x14,0x14,0x14, // 3d =
0x00,0x41,0x22,0x14,0x08, // 3e >
0x02,0x01,0x51,0x09,0x06, // 3f ?
0x32,0x49,0x79,0x41,0x3e, // 40 @
0x7e,0x11,0x11,0x11,0x7e, // 41 A
0x7f,0x49,0x49,0x49,0x36, // 42 B
0x3e,0x41,0x41,0x41,0x22, // 43 C
0x7f,0x41,0x41,0x22,0x1c, // 44 D
0x7f,0x49,0x49,0x49,0x41, // 45 E
0x7f,0x09,0x09,0x09,0x01, // 46 F
0x3e,0x41,0x49,0x49,0x7a, // 47 G
0x7f,0x08,0x08,0x08,0x7f, // 48 H
0x00,0x41,0x7f,0x41,0x00, // 49 I
0x20,0x40,0x41,0x3f,0x01, // 4a J
0x7f,0x08,0x14,0x22,0x41, // 4b K
0x7f,0x40,0x40,0x40,0x40, // 4c L
0x7f,0x02,0x0c,0x02,0x7f, // 4d M
0x7f,0x04,0x08,0x10,0x7f, // 4e N
0x3e,0x41,0x41,0x41,0x3e}; // 4f O
char CONST TABLE6 [240] = {
0x7f,0x09,0x09,0x09,0x06, // 50 P
0x3e,0x41,0x51,0x21,0x5e, // 51 Q
0x7f,0x09,0x19,0x29,0x46, // 52 R
0x46,0x49,0x49,0x49,0x31, // 53 S
0x01,0x01,0x7f,0x01,0x01, // 54 T
0x3f,0x40,0x40,0x40,0x3f, // 55 U
0x1f,0x20,0x40,0x20,0x1f, // 56 V
0x3f,0x40,0x38,0x40,0x3f, // 57 W
0x63,0x14,0x08,0x14,0x63, // 58 X
0x07,0x08,0x70,0x08,0x07, // 59 Y
0x61,0x51,0x49,0x45,0x43, // 5a Z
0x00,0x7f,0x41,0x41,0x00, // 5b [
0x02,0x04,0x08,0x10,0x20, // 5c \
0x00,0x41,0x41,0x7f,0x00, // 5d ñ
0x04,0x02,0x01,0x02,0x04, // 5e ^
0x40,0x40,0x40,0x40,0x40, // 5f _
0x00,0x01,0x02,0x04,0x00, // 60 `
0x20,0x54,0x54,0x54,0x78, // 61 a
0x7f,0x48,0x44,0x44,0x38, // 62 b
0x38,0x44,0x44,0x44,0x20, // 63 c
0x38,0x44,0x44,0x48,0x7f, // 64 d
0x38,0x54,0x54,0x54,0x18, // 65 e
0x08,0x7e,0x09,0x01,0x02, // 66 f
0x0c,0x52,0x52,0x52,0x3e, // 67 g
0x7f,0x08,0x04,0x04,0x78, // 68 h
0x00,0x44,0x7d,0x40,0x00, // 69 i
0x20,0x40,0x44,0x3d,0x00, // 6a j
0x7f,0x10,0x28,0x44,0x00, // 6b k
0x00,0x41,0x7f,0x40,0x00, // 6c l
0x7c,0x04,0x18,0x04,0x78, // 6d m
0x7c,0x08,0x04,0x04,0x78, // 6e n
0x38,0x44,0x44,0x44,0x38, // 6f o
0x7c,0x14,0x14,0x14,0x08, // 70 p
0x08,0x14,0x14,0x18,0x7c, // 71 q
0x7c,0x08,0x04,0x04,0x08, // 72 r
0x48,0x54,0x54,0x54,0x20, // 73 s
0x04,0x3f,0x44,0x40,0x20, // 74 t
0x3c,0x40,0x40,0x20,0x7c, // 75 u
0x1c,0x20,0x40,0x20,0x1c, // 76 v
0x3c,0x40,0x30,0x40,0x3c, // 77 w
0x44,0x28,0x10,0x28,0x44, // 78 x
0x0c,0x50,0x50,0x50,0x3c, // 79 y
0x44,0x64,0x54,0x4c,0x44, // 7a z
0x00,0x08,0x36,0x41,0x00, // 7b {
0x00,0x00,0x7f,0x00,0x00, // 7c |
0x00,0x41,0x36,0x08,0x00, // 7d }
0x10,0x08,0x08,0x10,0x08, // 7e ~
0x78,0x46,0x41,0x46,0x78}; // 7f ¦
// 7e,43,40,43,7e --> Ü
// 7e,43,42,43,7e --> Ö
// 1e,21,21,71,21 --> Ç
// 3c,42,53,53,72 --> Ð
//function prototypes
void nokia_init();
void nokia_write_command(char bytefornokia_command);
void nokia_write_data(char bytefornokia_data);
void nokia_write_dorc(char bytefornokia);
void nokia_gotoxy(char xnokia, char ynokia);
void nokia_contrast (byte contrast);
void nokia_printchar(char cvar);
void nokia_clean_ddram();
void table_to_nokialcd();
void LcdPixel (char x, char y);
void show_image(void);
char char_row,charsel,charpos,chardata;
int16 ddram;
void nokia_init() {
nok_dc=1; // bytes are stored in the display data ram, address counter, incremented automatically
nok_cs=1; // chip disabled
delay_us(200);
nok_res=0;
delay_ms(10);
nok_res=1;
nokia_write_command(0x21); // set extins extended instruction set
nokia_write_command(0xc8); // Vop v1: 0xc8 (for 3V), v2: 0xa0 (for 3V)
nokia_write_command(0x13); // bias
nokia_write_command(0x20); // horizontal mode from left to right, X axe are incremented automatically,
// 0x22 for vertical addressing, back on normal instruction set too
nokia_write_command(0x09); // all on
delay_ms(50);
nokia_clean_ddram(); // reset DDRAM, otherwise the lcd is blurred with random pixels
delay_ms(10);
nokia_write_command(0x08); // mod control blank change (all off)
delay_ms(10);
nokia_write_command(0x0c); // mod control normal change
}
void nokia_clean_ddram() {
nokia_gotoxy(0,0); // 84*6=504 clear LCD
for (ddram=504; ddram>0; ddram--)
nokia_write_data(0x00);
}
void nokia_write_command(char bytefornokia_command)
{
nok_dc=0; // byte is a command it is read with the eight SCLK pulse
nok_cs=0; // chip enabled
nokia_write_dorc(bytefornokia_command);
nok_cs=1; // chip disabled
}
void nokia_write_data(char bytefornokia_data)
{
nok_dc=1;
nok_cs=0; // chip enabled
nokia_write_dorc(bytefornokia_data);
nok_cs=1; // chip disabled
}
void nokia_write_dorc(char bytefornokia) { // serial write data or command subroutine
char caa;
for (caa=8;caa>0;caa--)
{
nok_sclk=0;
delay_us(2);
if ((bytefornokia&0x80)==0)
nok_sda=0;
else
nok_sda=1;
nok_sclk=1;
delay_us(2);
bytefornokia = bytefornokia << 1;
}
}
void nokia_gotoxy(char xnokia, char ynokia) { // Nokia LCD 3310 Position cursor
nokia_write_command(0x40|(ynokia&0x07)); // Y axe initialisation: 0100 0yyy
nokia_write_command(0x80|(xnokia&0x7f)); // X axe initialisation: 1xxx xxxx
}
void nokia_contrast (char contrast) {
nokia_write_command(0x21); // LCD Extended Commands.
nokia_write_command(0x80 | contrast); // Set LCD Vop (Contrast).
nokia_write_command(0x20); // LCD Standard Commands, horizontal addressing mode.
}
void nokia_printchar(char cvar) { // Write 1 character to LCD
charsel=cvar;
table_to_nokialcd();
}
void table_to_nokialcd() { // extract ascii from tables & write to LCD
if (charsel<0x20) return;
if (charsel>0x7f) return;
for (char_row=0;char_row<5;char_row++)
{
if (charsel<0x50){charpos=(((charsel&0xff)-0x20)*5);chardata=TABLE5[(charpos+char_row)];} // use TABLE5
if (charsel>0x4f){charpos=(((charsel&0xff)-0x50)*5);chardata=TABLE6[(charpos+char_row)];} // use TABLE6
nokia_write_data(chardata); // send data to nokia
}
nokia_write_data(0x00); // 1 byte (always blank)
}
void LcdPixel (char x, char y) {
char offset;
byte data;
if (x > 84) return;
if (y > 48) return;
offset = y % 8;
data = (0x01<<offset);
nokia_gotoxy(x, (y/8));
nokia_write_data(data);
}
Sir pano ko po magagawang library tong codes na ito? Ecocompile ko po ba siya then esesave ko po ba siya as 3310.c para magamit ko po siya sa main program? Hitech C po ba to or CCS C? Thanks.