|
|
View previous topic :: View next topic |
Author |
Message |
jruibarroso
Joined: 07 Jan 2006 Posts: 64 Location: Braga
|
Help for graphics on a normal 2 X 20 display |
Posted: Sat Jan 21, 2006 11:35 am |
|
|
How can I have an array of some graphics made by me, and print then during the program on LCD ?
Ex.:
Code: |
printf(lcd_putc, "Some text\n");
lcd_gotoxy(1,2);
printf(lcd_putc, mygraphic[x] );
|
Thank you ALL !! |
|
|
rwyoung
Joined: 12 Nov 2003 Posts: 563 Location: Lawrence, KS USA
|
Re: Help for graphics on a normal 2 X 20 display |
Posted: Sat Jan 21, 2006 11:47 am |
|
|
jruibarroso wrote: | how can i have a array of some graphics made by me, and print then during the program on LCD
Ex.:
printf(lcd_putc, "Some text\n");
lcd_gotoxy(1,2);
printf(lcd_putc, mygraphic[x] );
Thank you ALL !! |
You build up your characters in the ram of the display (consult your display's data sheet). Then when you need them they occupy low addresses not normally used by the ASCII table so just access them like regular characters.
I can't release the entire project file to you as it was done for a paying client but I can show you a couple of key lines that should move things along. However the BIGGEST issue is that you read and understand the data sheet for your display. If your data sheet doesn't have a good explanation of how the character ram works, download some other data sheets for similar parts from different vendors. I have found the Noritake data sheets pretty good but I think you have to register on their web site to get them.
Partial example using the lcd functions found in the CCS example code:
Code: |
// create icons
const int8 lcd_characters[] =
{
0x04,0x0E,0x0A,0x0A,0x0A,0x0E,0x0E,0x00,//25%
0x04,0x0E,0x0A,0x0A,0x0E,0x0E,0x0E,0x00,//50%
0x04,0x0E,0x0A,0x0E,0x0E,0x0E,0x0E,0x00,//75%
0x04,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x00,//100%
0x04,0x0E,0x0A,0x0A,0x0A,0x0A,0x0E,0x00,//LOW
0x04,0x0A,0x15,0x04,0x04,0x04,0x04,0x04,//UP
0x1C,0x14,0x1C,0x07,0x04,0x06,0x04,0x00,//degF
0x1C,0x14,0x1C,0x07,0x04,0x04,0x07,0x00
}; //degC
// load table into LCD RAM as part of display initialization routine
// this is done only once after Power-On-Reset
lcd_send_byte(0,0x40);
for(i=0; i<64; i++)
{
delay_us(100);
lcd_send_byte(1,lcd_characters[i]);
}
// ... other code happens here
lcd_putc(0x00); // display the 25% battery symbol at current character position
|
_________________ Rob Young
The Screw-Up Fairy may just visit you but he has crashed on my couch for the last month! |
|
|
fredddd Guest
|
|
|
VanHauser
Joined: 03 Oct 2005 Posts: 88 Location: Ploiesti, Romania
|
|
Posted: Sat Jan 28, 2006 8:10 pm |
|
|
Put this somewhere at the beginning of your code:
Code: |
// Custom characters
// First one cannot be displayed in strings (0x00 is string terminator...)
#define LCD_CUST_CHARS 4 // Maximum 8
const int8 lcd_chars[8][LCD_CUST_CHARS] = {
{0b00000000,0b00001100,0b00000000,0b00011100},
{0b00000000,0b00010010,0b00000000,0b00000010},
{0b00000000,0b00010010,0b00000000,0b00001100},
{0b00000000,0b00001100,0b00001100,0b00000010},
{0b00000000,0b00000000,0b00010010,0b00011100},
{0b00000000,0b00000000,0b00000100,0b00000000},
{0b00000000,0b00000000,0b00001000,0b00000000},
{0b00000000,0b00000000,0b00011110,0b00000000}
};
#define LCD_CH_BLANK 0
#define LCD_CH_DEGREE 1
#define LCD_CH_2UNDER 2
#define LCD_CH_3RDPOW 3
#separate
void lcd_init_chars() {
int8 ch, line;
lcd_send_byte(0, 0x40);
for (ch=0; ch<LCD_CUST_CHARS; ch++)
for (line=0; line<8; line++) {
lcd_send_byte(1, lcd_chars[line][ch]);
}
lcd_send_byte(0, 0x80);
} |
This example creates 4 custom characters, which can be easily seen by looking at the code. To load them, call lcd_init_chars() right after calling lcd_init(). For printing write something like:
Code: | lcd_putc("\fFlow: 50 m\x03/h H\x02O\nTemp: 70\x01 C"); |
Notice the custom character codes matching the position in the graphics array. Have fun! |
|
|
jruibarroso
Joined: 07 Jan 2006 Posts: 64 Location: Braga
|
|
Posted: Sun Jan 29, 2006 8:00 am |
|
|
thank you for help |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|