Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Caner Şahan
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
24 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Caner Şahan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : İleri
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 31.3.2004
Okunma Sayısı : 25774
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C# ile Yapılmış Bir Çeşit LCD Simulatorü...
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
LCD’ler elektronikte karakterlerin gösterilmesinde kullanılırlar.LCD’lerin üstünde ekran kartları gibi ekrana yazılan bilgilerin sürekli görünebilmeleri için tarama işlemini yapan entegrelerle birlikte üretilip satılırlar.Bu entegreler ekranın her yanını tarayarak kendini sürekli günceller.Neyse bu kadar elektronik bize yeter.Elektronik demişken yapacağımız uygulamanın lcd’ye bağlayıpta yapacağımız birebir uygulama değil(ama onuda yapacam.ilk önce 20$ bulup bir lcd aldıktan sonra:)).Lcd’yi bir anlamda simule edeceğiz.LCD’lerin yapısını tam anlamak için bir kareli defteri düşünün.Bu defter içindeki kareler LCD içindeki her noktayı yani bir led’i (noktayı)temsil etsin.Karakterlerde bellirli bir binary dağılım göstererek ledleri yakar ve ortaya insanların anlayabileceği bir şekil gelirki bunlar karakter olarak isimlendirilir.

Programın Amacı: Yapacağımız programla textboxtan girilen bir yazı sanki bir Lcd üzerindeymiş gibi bitlerine ayrışacak ve biz insanlara anlaşır bir karakter sunacak.Gireceğimiz string veri haliyle karakterlere ayrılacak ve ayrılan her karakter binary olarak sanal Lcd’mize yayılacak ve bize güzel bir sonuç ile dönecek.

ALGORİTMA:

Ve programıza başlıyoruz.LCD’ye yaz butonuna basınca yaz() isimli master metotu çağırıyoruz. Butonlara ne kadar az kod yazarsak o kadar iyi olacağı inancındayım. yaz() metotuna gelirsek burda şöyle bir yapı söz konusu: Karakter dizisine ayrılan string verimizin her karakteri  kodlama için harfyaz() metotuna gider. Kodları incelersek bu rahatlıkla gözükecektir. Birde gonder isimli değişken var. Bu "gonder"in anlamı ise aşadaki şekille pekiştirilmeye çalışılmıştır.



Ve yukarıda geçen yaz() metotu aşada verilmiştir....

public void yaz()
{
    int gonder=0;
    int i,j;
    char[]gelen=textBox1.Text.ToUpper().ToCharArray();
    for(i=0,j=0;i<gelen.Length && j<gelen.Length;i++,j++)
    {
        harfyaz(gonder,gelen[j]);
        gonder+=8;
    }
}
yaz() metodunun istediği harfyaz metodunda ise temel mantık yaz() metotundan gelen karakter dizisinin elemanlarını alarak harfsec isimli metota yollar. Harfsec ise; genel bildirim yaptıdığımız A isimli iki boyutlu karakterlerimizin binary formatının tutulacağı matrisi harfe göre doldurmaktır. Harfyaz metotu gelen A matrisindeki verileri 8’li gruplar halinde kaydırarak ekransatir[8,80]isimli LCD ekran kabul ettiğimiz matrisin bulunduğu satir ve sutuna göre ledleri yakar. Ledler yandığı zaman led1.image, söndüğünde ise led0.image gözükecektir.Aşadaki yapıyı dikkatle incelerseniz neler olup bittiğini daha iyi anlayacaksınız.

public void harfyaz(int a,char c)
{
    int x=a;
    harfsec(c);
    for(int i=0;i<8;i++)
    {
        x=a;
        for(int j=0;j<8;j++)
        {
            if(A[i,j]==1)
            {
                ekransatir[i,x].Image=led1.Image;

            }
            else if(A[i,j]==0)
            {
                ekransatir[i,x].Image=led0.Image;

            }
            x++;
        }
    }
matristemizle();//A matrisinin tüm elemanlarını sıfırlayan metotdur. }
harfsec() metotuna kısaca değinirsek:Gelen karaktere göre A matrisini 1 ve 0 ile doldurur. Geriye dönüş değeri yoktur ve olmamasıda çok doğaldır. Bu metotta bütün karakterler binary olarak kodlandığı için sadece birini inceleyim...

int[,]A;
public void harfsec(char karakter)
{
    switch(karakter)
    {         case ’ ’:
            A=new int[8,8];
            break;
        case ’A’:
            A=new int[8,8]{{0,0,1,1,1,1,0,0},
                         {0,1,0,0,0,0,1,0},
                         {0,1,0,0,0,0,1,0},
                         {0,1,0,0,0,0,1,0},
                         {0,1,1,1,1,1,1,0},
                         {0,1,0,0,0,0,1,0},
                         {0,1,0,0,0,0,1,0},
                         {0,1,0,0,0,0,1,0}};
            break;

NOT: Rakamlar ve bazı özel karakterleri ben koymadım.isterseniz koyabilirsiniz.Sadece temel alfabe ve ünlem işaretleri var.

Evet nerde kaldık. Birde sağa sola kaydırma işlemleri var. Bu işlemleri kontrol altında tutmak için timer controlüne koymak daha anlamlı. Örnek olarak sola kaydırma işlemini ele alalım.Bu işlemle iki döngü ile tüm sanal Lcd ekranını tarayarak sola doğru bir öteleme yapıyoruz. ekransatir[i,j].Image=ekransatir[i,j+1].Image; bu kadar basit.....

private void timer1_Tick(object sender, System.EventArgs e)
{
    for(int i=0;i<8;i++)
    {
        for(int j=0;j<79;j++)
        {
            ekransatir[i,j].Image=ekransatir[i,j+1].Image;
        }
    } }

Son olarak formun load event’ ına bakmakta yarar var. Burada ekransatir isimli sanal Lcd panel belirtiliyor ve dizi olarak  formun kontollerine ekleniyor ve düzenli artışla formda gösteriliyor. Birde programda her defasında textbox’ tan veri yollamadan önce Lcd temizle butonu ile matrisleri boşaltmamız gerekir.

PictureBox[,]ekransatir;
private void Form1_Load(object sender, System.EventArgs e)
{
    ekransatir=new PictureBox[8,80];
    int xpos=0;
    int ypos=20;
    int width=8;
    int height=8;
    for(int i=0;i<8;i++)
    {
        for(int j=0;j<80;j++)
        {
            ekransatir[i,j]=new PictureBox();
            this.Controls.Add(ekransatir[i,j]);
            ekransatir[i,j].Image=led0.Image;
            ekransatir[i,j].SetBounds(xpos,ypos,width,height);
            ekransatir[i,j].Show();
            xpos+=8;   
        }
        xpos=0;
        ypos+=8;
    }
}
SON SÖZ: Bazılarınız makaleyi okuduktan sonra bu olayın GDI+ ile yapılabileceğini fark etmişsinizdir heralde. Ama bu yapı elektronikle tam olarak örtüşmediği için tercih edilmemiştir. Nede olsa Elektronik her zaman 1-0 ların dünyası değil mi? Umarım yararlı olmuştur.



Caner ŞAHAN University of Istanbul Dep.  Electronic Engineering

[email protected]

kaynak kodlar için>>>>

Makale:
C# ile Yapılmış Bir Çeşit LCD Simulatorü... C#, Visual C# ve .NET Caner Şahan
  • Yazılan Yorumlar
  • Yorum Yaz
EKİ
1
2005
Güzel bir döküman olmuş, elinize sağlık
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor