Ana Sayfa Elektronik Öğrenin Programlama genel C ile programlama uygulamaları-14

C ile programlama uygulamaları-14

0

Tuş Takımı Uygulaması-1

AMAÇ:

Mikrodeneleyicilerin çalışma sistemini öğrenmek, C dili ile program yazabilme ve 16F877A entegresini programlayabilme yeteneğini kazanmak.

YAPILACAK İŞ:

Tuş takımında bir tuşa basıldığında tuşun değeri B portuna bağlı ledlerde görünmesi sağlanacak.

DENEYİN BAĞLANTI ŞEMASI

    PROGRAM KODU:

#include <16f877a.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli

#use fast_io(d) //Port yönlendirme komutları C portu için geçerli

#byte portb=0x06 // B portu “tus” ismine eşitleniyor.

#define sut1 pin_d0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor

#define sut2 pin_d1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor

#define sut3 pin_d2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor

#define sut4 pin_d3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor

#define sat1 pin_d4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor

#define sat2 pin_d5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor

#define sat3 pin_d6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor

#define sat4 pin_d7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor

char tus=0; // karakter tipinde değişken tanımlanıyor

//*********** Keypad Tarama Fonksiyonu *********

char keypad_oku() // Fonksiyon ismi

{

output_d(0x00); // D portu çıkışı sıfırlanıyor

output_high(sat1); // 1. satır lojik-1 yapılıyor

if (input(sut1)) // 1. sütun okunuyor

{ delay_ms(20); tus=1; }

if (input(sut2)) // 2. sütun okunuyor

{ delay_ms(20); tus=2; }

if (input(sut3)) // 3. sütun okunuyor

{ delay_ms(20); tus=3; }

if (input(sut4)) // 4. sütun okunuyor

{ delay_ms(20); tus=0xA; }

output_low(sat1); // 1. satır lojik-0 yapılıyor

output_high(sat2); // 2. satır lojik-1 yapılıyor

if (input(sut1)) // 1. sütun okunuyor

{ delay_ms(20); tus=4; }

if (input(sut2)) // 2. sütun okunuyor

{ delay_ms(20); tus=5; }

if (input(sut3)) // 3. sütun okunuyor

{ delay_ms(20); tus=6; }

if (input(sut4)) // 4. sütun okunuyor

{ delay_ms(20); tus=0xB; }

output_low(sat2); // 2. satır lojik-0 yapılıyor

output_high(sat3); // 3. satır lojik-1 yapılıyor

if (input(sut1)) // 1. sütun okunuyor

{ delay_ms(20); tus=7; }

if (input(sut2)) // 2. sütun okunuyor

{ delay_ms(20); tus=8; }

if (input(sut3)) // 3. sütun okunuyor

{ delay_ms(20); tus=9; }

if (input(sut4)) // 4. sütun okunuyor

{delay_ms(20); tus=0x0C; }

output_low(sat3); // 3. satır lojik-0 yapılıyor

output_high(sat4); // 3. satır lojik-1 yapılıyor

if (input(sut1)) // 1. sütun okunuyor

{ delay_ms(20); tus=0xE; }

if (input(sut2)) // 2. sütun okunuyor

{ delay_ms(20); tus=0; }

if (input(sut3)) // 3. sütun okunuyor

{ delay_ms(20); tus=0xF; }

if (input(sut4)) // 4. sütun okunuyor

{delay_ms(20); tus=0xD; }

output_low(sat4); // 3. satır lojik-0 yapılıyor

return tus; // Fonksiyon “tus” değeri ile geri döner

}

/********* ANA PROGRAM FONKSİYONU********/

void main ( )

{

setup_psp(PSP_DISABLED); setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF);

set_tris_b(0x00); // B portu komple çıkış

set_tris_d(0x0F); // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş

output_b(0x00); // İlk anda B portu çıkışı sıfırlanıyor

while(1) // Sonsuz döngü

{

portb=keypad_oku(); // Basılan tuş değerini B portuna aktar

}

}

İŞLEM BASAMAKLARI

1.Devreyi bord üzerine kurunuz.

2. Kodu yazıp derleyiniz.Hex kodunu Pice yükleyiniz.

3.Devrenin çalışmasını inceleyiniz.

YORUM YOK

CEVAP VER

Please enter your comment!
Please enter your name here

Exit mobile version