Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Graphic LCD 96x64 w/ SED1565 Controller

Status
Not open for further replies.
I just got mine in the mail. I only have 5 and 12V regulators, do you think it would do ok with 5v?
 
if you check my ebay listing it says yes :D I have some for sale too :D

I have been using it on 5v for a while now and no issue. Im not 100% sure of the long term use but it seems to be fine on 5v.
 
Hey guys this might be a dumb question but is ROM editable?
Like if i use :
Code:
unsigned rom char someVar[20];

Can i edit these values?
 
Last edited:
Hey guys this might be a dumb question but is ROM editable?
Like if i use :
Code:
unsigned rom char someVar[20];
Can i edit these values?

I am not sure what you mean by editable?

You can set their value at compile time. (In the source code)
You can not change their value during run time.

The values are stored in flash.
 
Last edited:
Can someone help me create a 800 byte buffer lol its for a 18F2525

This is my usage so far:
usage-jpg.31126
 

Attachments

  • usage.jpg
    usage.jpg
    16 KB · Views: 606
Last edited:
You can reflash pages within your program, same way you do with a boot loader or serial programmer, but that's really meant for permanent storing variables that you don't want lost in a power down.

If you want RAM, you can use SRAM rather than EEPROM, which is faster, but obviously you lose everything on power down.
 
You just want a FIFO buffer? If you search 'ring buffer' and 'C library' and combinations, there's lots of example code for it out there.
 
If you are getting the error
Error [1300] stack frame too large

A simple way to fix it is to make the variable global.
If you put it inside main or any other function it will allocate memory from the stack. If you make it global it does not.

Give it a try.

3v0
 
im getting this:
Code:
MPLINK 4.31, Linker
Copyright (c) 2009 Microchip Technology Inc.
Error - section '.udata_nokia7110.o' can not fit the section. Section '.udata_nokia7110.o' length=0x00000304
Errors    : 1

Im trying to create:
Code:
unsigned char ScreenBuff[770];
 
You could make up a scheme to code everything. It's complex, but since there's mostly blank columns your buffer could be encoded sort of like RLE (run length encoding), but modified. I can envision what it would take, but it would be complicated to maintain. Your buffer would be dynamic and data would need to be moved around a lot. It would also mean that you couldn't have too much data on the screen or your buffer would have the potential to grow larger than a straight dedicated buffer.
 
The only fix i know of is :
Code:
#pragma idata bigdata
    unsigned char ScreenBuff[770];
#pragma idata

Linker Modification :
Code:
DATABANK   NAME=gpr10      START=0xA00          END=0xDFF	//END=0xAFF
//DATABANK   NAME=gpr11      START=0xB00          END=0xBFF
//DATABANK   NAME=gpr12      START=0xC00          END=0xCFF
//DATABANK   NAME=gpr13      START=0xD00          END=0xDFF
....
.....
.......
SECTION    NAME=bigdata    RAM=gpr10
 
Last edited:
Thanks guys here are some of the functions i have working.

Code:
void LCDCircle(char top, char left, char radius);
void SetPixel(unsigned char top, unsigned char left);
void LCDRect(char x0, char y0, char width, char height);
void LCDImage(rom unsigned char *image,char left, char top);
void LCDLine(char top0, char left0, char top1, char left1);
void LCDChar(unsigned char letter,unsigned char font,unsigned char style,unsigned char top, unsigned char left);
void LCDString(rom unsigned char *str,unsigned char font,unsigned char style,unsigned char top, unsigned char left);

All working 100% so far. Will release in a week or so :D
 
heh look :
[embed]http://www.youtube.com/v/FZmpXWFuLyQ[/embed]

Main Code:
Code:
#include <p18f2525.h>
#include "nokia7110.h"

#pragma config WDT = OFF, LVP = OFF, OSC = INTIO67, XINST = OFF

unsigned rom char foot[770] = { 96,64,
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  128,  128,  128,  192,  192,  128,  128,  128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  192,  224,  240,  240,  248,  248,  252,  252,  252,  252,  252,  248,  248,  240,  240,  224,  192,  128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  128,  224,  240,  248,  252,  254,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  252,  0,  0,  56,  124,  124,  252,  252,  252,  252,  252,  248,  248,  112,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  31,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  254,  254,  252,  248,  248,  240,  240,  224,  224,  192,  192,  192,  128,  128,  128,  128,  128,  128,  128,  128,  128,  192,  192,  224,  224,  240,  240,  248,  252,  254,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  127,  31,  7,  3,  0,  0,  48,  112,  248,  248,  248,  240,  240,  97,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  3,  3,  7,  7,  15,  15,  15,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  63,  63,  63,  63,  127,  127,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  127,  15,  0,  128,  128,  196,  142,  158,  158,  30,  62,  30,  28,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  3,  3,  3,  7,  7,  7,  15,  15,  31,  31,  31,  63,  63,  63,  127,  127,  127,  127,  127,  127,  127,  127,  63,  63,  31,  31,  15,  3,  49,  112,  240,  240,  243,  227,  71,  7,  7,  7,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
};
void main(void);

void main(void){
    char a,b,c,d;

	OSCCON = 0x72;      			//8MHz clock
	while(!OSCCONbits.IOFS);		//wait for osc stable

	LCD_Init();
    ClearBuff();

	while(1){
	    CLS();
        LCDString((unsigned rom char*)"AtomSoftTech    ",0,None,0,0);
        LCDString((unsigned rom char*)"   .info        ",0,None,1,0);
        LCDString((unsigned rom char*)" Nokia 7110 LCD ",0,None,3,0);
        LCDString((unsigned rom char*)"Author:",1,Underline,5,0);
        LCDString((unsigned rom char*)"Jason Lopez     ",0,None,7,0);
        while(bitchk(LCD_PORT,BTN));
        Delay10KTCYx(10);

	    CLS();
	    LCDImage(foot,0,0);
        while(bitchk(LCD_PORT,BTN));
        Delay10KTCYx(10);

	    CLS();
        for(d=0;d<8;d++){
            b=0;
            for(a=0;a<96;a++){
                SetPixel(b+(d*8),a);
                b++;
                if(b==8)b=0;
            }
        }
        SendBuff();
        ClearBuff();
        while(bitchk(LCD_PORT,BTN));
        Delay10KTCYx(10);

	    CLS();
        LCDLine(5,10,5,80);
        SendBuff();
        ClearBuff();
        while(bitchk(LCD_PORT,BTN));
        Delay10KTCYx(10);

	    CLS();
        LCDCircle(20,20,10);
        LCDCircle(30,30,10);
        LCDCircle(36,36,10);
        SendBuff();
        ClearBuff();
        while(bitchk(LCD_PORT,BTN));
        Delay10KTCYx(10);

	    CLS();
        LCDRect(20,20,40,20);
        SendBuff();
        ClearBuff();
        while(bitchk(LCD_PORT,BTN));
        Delay10KTCYx(10);

    }
}
 
Last edited:
New cube function:
Code:
void LCDCube(char Sq0T,char Sq0L,char Sq1T,char Sq1L,char width, char height) {
unsigned char x,y;
unsigned char a,b;

        x = Sq0L + width;
        y = Sq1L + width;
        a = Sq0T + height;
        b = Sq1T + height;

        LCDRect(Sq0T,Sq0L,width,height);
        LCDRect(Sq1T,Sq1L,width,height);
        LCDLine(Sq0T,Sq0L,Sq1T,Sq1L);
        LCDLine(Sq0T,x,Sq1T,y);
        LCDLine(a,Sq0L,b,Sq1L);
        LCDLine(a,x,b,y);
}

Testing:
[embed]http://www.youtube.com/v/ndN85VYCu9M[/embed]
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top