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;
}
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.
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
u8glib anahtar kelime