All pastes #632735 Raw Edit

gannon

public text v1 · immutable
#632735 ·published 2007-07-25 03:29 UTC
rendered paste body
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20000000)
#define nok_sclk PIN_B0
#define nok_sda PIN_B1
#define nok_dc PIN_B2
#define nok_cs PIN_B3
#define nok_res PIN_B4
int bytefornokia;
int charsel;
/*
 ________________
/    12345678     \
|                 |
|      lcd        |
|      back       |
|                 |
|                 |
\________________/
1: VDD - 3.3V
2: SCLK
3: SDA
4: DC
5: CS
6: GND---------
7: Vout---||--^ 4.7uF
8: RES
*/

void nokia_write_command(void) {
   nok_dc=0;
   nok_cs=0;
   nokia_write_dorc();
   nok_cs=1;
}

void nokia_write_data(void) {
   nok_dc=1;
   nok_cs=0;
   nokia_write_dorc();
   nok_cs=1;
}

void nokia_write_dorc(void) {
   for (int c=8; c>0; c--) {
      nok_sclk=0;
      if ((bytefornokia&0x80)==0) {
         nok_sda=0;
      } else {
         nok_sda=1;
      }
      nok_sclk=1;
      bytefornokia=bytefornokia<<1;
   }
}

void nokia_gotoxy (int xnokia, int ynokia) {
   bytefornokia=(0x40|(ynokia&0x07));
   nokia_write_command();
   bytefornokia=(0x80|(xnokia&0x7f));
   nokia_write_command();
}

void nokia_printmessage(const char* message) {
   while (*message)
      nokia_printchar(*message++);
}

void nokia_printchar(int c) {
   charsel=c;
   nokia_char();
}

void nokia_char() {
    //if ((charsel < 0x20) || (charsel > 0x7b)) {
    if ((charsel < 0x30) || (charsel > 0x5b)) {
        //charsel = 92;
        charsel = 62;
    }
    for (int i=0; i<5; i++) {
      //bytefornokia=FontLookup[charsel - 32][i] << 1;
     // bytefornokia=read_eeprom(((charsel - 32) * 5)+i) << 1;
      bytefornokia=read_eeprom(((charsel - 48) * 5)+i) << 1;
      nokia_write_data();
    }
}

void nokia_clear() {
   nok_sda=0;
   nok_dc=1;
   nok_cs=1;
   for (int z=504; z>0; z--) {
      for (int x=8; x>0; x--) {
         nok_sclk=0;
         nok_sclk=1;
      }
   }
}

void nokia_init() {
   nok_sclk=0;
   nok_sda=0;
   nok_dc=0;
   nok_cs=0;
   nok_res=0;
   delay_ms(10);
   nok_res=0;
   delay_ms(250);
   nok_res=1;
   nok_cs=1;
   bytefornokia=0x21;
   nokia_write_command();
   bytefornokia=0xc5;
   nokia_write_command();
   bytefornokia=0x06;
   nokia_write_command();
   bytefornokia=0x13;
   nokia_write_command();
   bytefornokia=0x20;
   nokia_write_command();
   bytefornokia=0x0c;
   nokia_write_command();
   nokia_clear();
   nokia_gotoxy(0,0);
}

void nokia_test_1() {
   nokia_gotoxy(0,0);
   for (int z=42; z>0; z--) {
      for (int x=6; x>0; x--) {
         bytefornokia=0b_1010_1010;
         nokia_write_data();
         bytefornokia=0b_0101_0101;
         nokia_write_data();
      }
   }
}

void nokia_test_2() {
   nokia_gotoxy(0,0);
   bytefornokia=0b_1111_1111;
   nokia_write_data();
   for (int z=82; z>0; z--) {
      bytefornokia=0b_0000_0001;
      nokia_write_data();
   }
   bytefornokia=0b_1111_1111;
   nokia_write_data();
   for (int x=4; x>0; x--) {
      bytefornokia=0b_1111_1111;
      nokia_write_data();
      for (int y=82; y>0; y--) {
         bytefornokia=0b_0000_0000;
         nokia_write_data();
      }
      bytefornokia=0b_1111_1111;
      nokia_write_data();
   }
   bytefornokia=0b_1111_1111;
   nokia_write_data();
   for (int a=82; a>0; a--) {
      bytefornokia=0b_1000_0000;
      nokia_write_data();
   }
   bytefornokia=0b_1111_1111;
   nokia_write_data();
}

void main() {
   nokia_init();
   delay_ms(100);
   //nokia_printchar('@');
   nokia_test_1();
   delay_ms(10000);
   nokia_test_2();
   //nokia_printmessage('Seize the day');
}