25 Ekim 2021, 13:08:39

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


128x64 GLCD de menü

Başlatan berkay_91, 08 Haziran 2015, 20:53:40

berkay_91

08 Haziran 2015, 20:53:40 Son düzenlenme: 08 Haziran 2015, 20:56:04 berkay_91
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

/*
 * 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_Bks0108ReadFontDataBLACK); // Select a font
	

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

	
ks0108SelectFont(arial_10ks0108ReadFontDataBLACK); // Select a font
	

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

	
	
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(0satir1278WHITE); // 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(0satir1278WHITE); // 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;
	
	

	

}



Kabil ATICI

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.
ambar7

berkay_91

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

muhittin_kaplan

www.ictr.club
www.muhittinkaplan.com

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.