sadoazb
Üye
- Katılım
- 26 Ara 2009
- Mesajlar
- 159
- Puanları
- 1
- Yaş
- 52
Kod:
#include "F:\elektronik+\pic\ccs_c\ccs_uygulamalar\keypad\uzun\pB\877_keypad.h"
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) //gecikme için kullanılacak osilatör frekansını belirle
void lcd_calis (void);
//****************LCD TANIMLAMALARI********************************************
#use fast_io(d) //port yönlendirme komutlar B portu için
#define use_portd_lcd TRUE //lcd b portuna bağlı
#include <lcd.c> //lcd.c dosyasını programa tanıt
//***************KEYPAD TANIMLALAMLARI*******************************************
#use fast_io(b) //port yönlendirme komutu portD
#define use_portb_kbd TRUE
#include <kbd.c>
//tanımlalamalar______________________________________________________________-
#define sut1 pin_b0 //sutun1 ifadesi pin_d0 ifasesine eşitleniyor
#define sut2 pin_b1 //sutun1 ifadesi pin_d1 ifasesine eşitleniyor
#define sut3 pin_b2 //sutun1 ifadesi pin_d2 ifasesine eşitleniyor
#define sut4 pin_b3 //sutun1 ifadesi pin_d3 ifasesine eşitleniyor
#define sat1 pin_b4 //sat1 ifadesi pin_d4 ifasesine eşitleniyor
#define sat2 pin_b5 //sat1 ifadesi pin_d5 ifasesine eşitleniyor
#define sat3 pin_b6 //sat1 ifadesi pin_d6 ifasesine eşitleniyor
#define sat4 pin_b7 //sat1 ifadesi pin_d7 ifasesine eşitleniyor
char tus=0; //karekter tipinde değişken tanımlanıyor
//******************************************************************************
void lcd_calis (void)
{
lcd_gotoxy(1,1);
printf(lcd_putc, "basılan Tus:");
lcd_gotoxy(1,2);
printf(lcd_putc,"%d",tus);
delay_ms(20);
}
char keypad_oku() //fonksiyon
{
output_d(0x00); //d portu sıfırla
//______________________________________
output_high(sat1); //satır1 1 yap
if (input(sut1)) //sutun1 oku
{delay_ms(20); tus=1;} //eger sutun1 1 ise tus=1 yani 1 basılı
if (input(sut2)) //sutun2 oku
{delay_ms(20); tus=2;}
if (input(sut3)) //sutun3 oku
{delay_ms(20); tus=3;}
if (input(sut4)) //sutun4 oku
{delay_ms(20); tus=0xA;}
output_low(sat1); //satır 1 low yap
//______________________________________
output_high(sat2); //satır2 1 yap
if (input(sut1))
{delay_ms(20); tus=4;}
if (input(sut2))
{delay_ms(20); tus=5;}
if (input(sut3))
{delay_ms(20); tus=6;}
if (input(sut4))
{delay_ms(20); tus=0xB;}
output_low(sat2);
//______________________________________
output_high(sat3); //satır3 1 yap
if (input(sut1))
{delay_ms(20); tus=7;}
if (input(sut2))
{delay_ms(20); tus=8;}
if (input(sut3))
{delay_ms(20); tus=9;}
if (input(sut4))
{delay_ms(20); tus=0xC;}
output_low(sat3);
//______________________________________
output_high(sat4); //satır4 1 yap
if (input(sut1))
{delay_ms(20); tus=0xE;}
if (input(sut2))
{delay_ms(20); tus=0;}
if (input(sut3))
{delay_ms(20); tus=0XF;}
if (input(sut4))
{delay_ms(20); tus=0xD;}
output_low(sat4);
return tus; //fonksiyon tuş değeri ile geri döner
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
// TODO: USER CODE!!
set_tris_d(0x00); //B portu LCD için komple çıkış
set_tris_b(0x0F); //D portu 4 bit çıkış 00001111 4 bit giriş
output_b(0x00); //B portu temizle
lcd_init(); //lcd hazırlanıyor
while(1)
{
keypad_oku(); //basılan tuş değerini portb ye gönder
lcd_calis();
}
}
yukarıdaki kod çalışmaktadır fakat 0-9 arası rakamları giriyorum Lcd de ğörünüyor ama şifre için daha uzun numaraları nasıl gireceğim
örneğin 456 yı sırayla girip lcd ekranda 456 yazmasını nasıl sağlarız..
teşekkürler