Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: berkay_91 - 08 Haziran 2015, 17:53:40

Başlık: 128x64 GLCD de menü
Gönderen: berkay_91 - 08 Haziran 2015, 17:53:40
merhaba, atmega 8 kullanarak KS0108 kütüphanesiyle basit bir menü yapmaya çalıştım ama bazı sorunlar çıktı, alt satırlara inip çıkarken  "menü 4" yazısının gidip gelmesi gibi bendeki proteus 8.0 simülasyonda arıza verdiği için simülasyonda daha fazla sorun çıkıyo ve kapanıyo ama devreyi çizdim proteus dosyasını ve atmel studio 6.0 derleyicisinde programı ekledim yardımcı olursanız sevinirim

http://www.dosya.tc/server/usgwmk/GLCD_2.rar.html (http://www.dosya.tc/server/usgwmk/GLCD_2.rar.html)

/*
* GLCD_2.c
*
* Created: 22.12.2014 11:02:39
*  Author: BERKAY
*/

#define F_CPU 1000000UL
#include <inttypes.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include "ks0108.h"
#include "times_new_romen_10_B.h"
#include "arial_10.h"

void menu_isimleri_init();

volatile int satir=11,j=0;

struct menuler{

char *menu_isimi;

} menu[5];

void menu_isimleri_init(){

menu[0].menu_isimi="Menu 1";
menu[1].menu_isimi="Menu 2";
menu[2].menu_isimi="Menu 3";
menu[3].menu_isimi="Menu 4";
menu[4].menu_isimi="Menu 5";

}


int main(void) {

int y=12;

_delay_ms(10);

ks0108Init(0);

menu_isimleri_init();

ks0108ClearScreen();

ks0108SelectFont(times_new_romen_10_B, ks0108ReadFontData, BLACK); // Select a font

ks0108GotoXY(38,0);
ks0108Puts("AYARLAR");

ks0108SelectFont(arial_10, ks0108ReadFontData, BLACK); // Select a font

for(int i=0; i<5; i++){

ks0108GotoXY(1,y);
ks0108Puts(menu[i].menu_isimi); 

y+=10;

}

//ks0108InvertRect(0,satir,127,8);

while(1){

if(bit_is_set(PINB,1)){ // aşağı inme

if(satir<=41){

    ks0108FillRect(0, satir, 127, 8, WHITE); // seçilen satırı silmek için

ks0108GotoXY(1,satir+1);
ks0108Puts(menu[j].menu_isimi);

    satir+=10;
j++;

    ks0108InvertRect(0,satir,127,8);

}
}

else if(bit_is_set(PINB,0)){ // yukarı çıkma

     if(satir>=21){

  ks0108FillRect(0, satir, 127, 8, WHITE); // seçilen satırı silmek için
 
  ks0108GotoXY(1,satir+1);
  ks0108Puts(menu[j].menu_isimi);

  satir-=10;
  j--;
 
  ks0108InvertRect(0,satir,127,8);

      }

    }
   

}

return 0;

}


Başlık: Ynt: 128x64 GLCD de menü
Gönderen: Kabil ATICI - 08 Haziran 2015, 20:03:23
bana kalırsa sıkıntın butona bastığın zaman sen butonu bırakana kadar birkaç kez menünün tur atması.
Gerçek devrede bunu dana kolay görebilirsin.
Başlık: Ynt: 128x64 GLCD de menü
Gönderen: berkay_91 - 08 Haziran 2015, 21:21:34
delay koymadım farkındayım ama gerçek devrede böyle bi şey olmadı GLCD lerde pixel leri basması biraz daha uzun sürüyor
Başlık: Ynt: 128x64 GLCD de menü
Gönderen: muhittin_kaplan - 08 Haziran 2015, 21:31:12
u8glib anahtar kelime