Karakteres LCD vertical scroll
Pal Lukacs
ekegep at yahoo.com
Sat Sep 30 18:38:28 CEST 2006
charles hoss <dexter at bekesnet.hu> wrote:
a digaram szerint hozzaferheto - akkoriban a diagram nem volt
hozzaferheto :)
annak idejen csak ugy kiserleteztem es probalgattam ertelmet adni a
regisztereknek - kozben futottam bele
bye
dexter
Vegulis akkor hozzaferheto?
SIkerult leprogramoznia 'scroll' -t!
Laza:-)
Itt a C fv. avr-re
//vertical scroll (C) P. Lukacs
typedef uint8_t matrix[8][8];
/*
*lcd_vertical_scroll
* __custom_chars: custom chars array
* __NUM: number of chars
* __x_delay_ms: vertical and horizontal delay
* __clear: 1: set CGRAM clear mode; 0: no CGRAM clear
*/
void
lcd_vertical_scroll (matrix __custom_chars, uint8_t __NUM,
uint16_t __verti_delay_ms,uint16_t __horiz_delay_ms, uint8_t __clear)
{
register uint8_t i, j, n;
uint8_t cgram_addr = 0x00;
uint8_t d, block_line = 7;
__clear ? lcd_clear_CRGAM () : 0;
for (n = 1; n <= 8; n++)
{
for (i = 0; i < __NUM; i++)
{ //CGRAM cimbeallitas
lcd_set_CGRAM_addr (cgram_addr + block_line);
for (j = 0; j < n; j++)
{
lcd_putch (__custom_chars[i][j]); //irunk cgramba n byteot
}
cgram_addr = (i + 1) * 8; //kov. 8byte cime a GCRAMban
//megjelenitjuk a CGRAM tartalmat:
lcd_set_DDRAM_addr (LCD_SECND_LN_ADDR + i);
lcd_putch (i);
lcd_delay_ms(__horiz_delay_ms);
}
cgram_addr = 0x00;
block_line--;
//varunk:
lcd_delay_ms(__verti_delay_ms);
}
}
//use : lcd_vertical_scroll (array2d, ROWS, 15,0 /*delay ms */ , 1);
Alabbi modon probaltam idoosztassal osszehozni egy mozgo figurat es a scrollt.Addig animal is
amig a scrollozas el nem kezdodik.
Ha torles modban hivom a scrollt,akkor nyilvan letorli az animaciot,
ha meg nem torles modban hivomakkor ott marad az utolso poziciojaba,de nem animal.
Pedig ket scroll kozott lenne ra 'lehetosege',direkt jo nagy idokozt hagytam..
Erdekes...eskudni mertem volna ra,hogy igy idoosztassal a ketto egyszerre mukodik.
Ebben a formaban tobb animaciot mar mukodtettem es OK.
Nem ertem, mi lehet..?
.....
//cnt1,2 kuszobertekei
#define CNT1_THRESHOLD 80
#define CNT2_THRESHOLD 7
.....main loop....
for (;;)
{
if (cnt1 == CNT1_THRESHOLD)
{
cnt1 = 0;
/*
* array2d: custom chars array
* ROWS: number of chars
* 15: delay
* 1: set CGRAM clear mode; 0: no CGRAM clear
*/
//nem clear modban erdekes hatast kelt;-)
lcd_vertical_scroll (array2d, ROWS, /*vdelay*/15,/*hdelay*/0 /*delay ms */ , 1);
}
if (cnt2 == CNT2_THRESHOLD)
{
cnt2 = 0;
if (i > 1)
{
i = 0;
}
//7. karakter helye a CGRAMban
lcd_put_custom_char (7, man[i++]);
lcd_set_DDRAM_addr (LCD_FIRST_LN_ADDR + 6);//itt jelenitjuk meg
lcd_putch (0x07); //ezt.
}
}
Udv mindenkinek aki foglalkozott ezzel a temaval!
---------------------------------
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail.
More information about the Elektro
mailing list