eeris43
Üye
- Katılım
- 2 Ocak 2011
- Mesajlar
- 22
- Puanları
- 1
- Yaş
- 32
Arkadaşlar konuyu daha önce açtım.Bunu bilenler kızmasın ama bi türlü yapamadım.. devrede herşey çalışıyo bi lcd çalışmıyor nolur yardım edin.sorun nedir. bağlantılarım doğru gerilimler gidiyor.kobupluk yok dirençleri doğru bağladıom.ama bi türlü çalışmadı bi yardımcı ollun lütfen
kodları ise
İlgilenen arkadaşlar nolur yardım etsin
kodları ise
Kod:
/******************************************************
PIC16F877 ile Step Motor Uygulaması
Erhan HARMANKAYA
[EMAIL="[email protected]"][email protected][/EMAIL]
17 Haziran 2008
*******************************************************/
#include <16f877.h> // Ben 16f877 kullandım siz kendinize göre düzeltebilirsiniz
//Not: 16f628 de ADC modülü mevcut DEĞİL!
#device ADC=10 // 10 bitlik ADC kullanılacağız
// ayarlar
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) //Kullandığımız Osilatörün Clock frekansı
#define use_portb_lcd TRUE // LCD B portunda
#include <lcd.c> //lcd yi kullanacağız
#define buton_ileri pin_c4
#define buton_geri pin_c5
signed int8 ADIM=0;
int16 Vref,Vcikis;
float filtre;
unsigned int8 sayac;
char durum;
#int_timer1 // Timer1 kesmesi
void timer1_kesme ()
{
set_timer1(63036);
switch(durum)
{
case 1 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: -->>", ADIM,Vcikis); break;
case 2 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: <<--", ADIM,Vcikis); break;
case 3 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: ----", ADIM,Vcikis); break;
case 4 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: #HATA#", ADIM,Vcikis); break;
}
delay_ms(10);
if(Vcikis<10){ //10ms dweğerinden küçük beklemelerde ikaz ver.! (:
lcd_gotoxy(14,2);
lcd_putc("-!-");
delay_ms(5);
}else{
delay_ms(6);
}
}
void main ( )
{
lcd_init();
delay_ms(10);
printf(lcd_putc,"\fCCP-Timer-ADC\n Ayarlaniyor...");
delay_ms(1500);
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
//setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(63036);
setup_adc_ports( ALL_ANALOG);
setup_adc(adc_clock_internal);
set_adc_channel(2);
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
printf(lcd_putc,"\fPortD Ayarlaniyor...");
delay_ms(1500);
output_d(0x00);
printf(lcd_putc,"\fTimer1 Kesmesi\nAyarlaniyor...");
delay_ms(1500);
enable_interrupts(INT_timer1); // int_timer1 kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
printf(lcd_putc,"\fHazir...");
delay_ms(5);
while(1) //herzaman burada kal
{
set_adc_channel(2);
Vref = read_adc(); //potansiyometreden alınan gerilim
delay_us(50);
Vcikis=Vref/16;
if (input(buton_ileri)) // İLERİ Butonuna basıldı ise
{
delay_ms(Vcikis);
ADIM = ADIM+1;
if( ADIM == 9)
{
ADIM=1;
durum=1;
}
}
if (input(buton_geri)) // GERİ Butonuna basıldı ise
{
delay_ms(Vcikis);
ADIM = ADIM-1;
if( ADIM < 1)
{
ADIM=8;
//! printf(lcd_putc,"\fADIM=%d\nKonum: -->>", ADIM);
//! delay_ms(10);
durum=2;
}
}
if (input(buton_geri)&input(buton_ileri)) // İki butona da basılıyor ise;
{
durum=3;
}
//Bu koşul iki butona da basıldığında HATA durumunun oluşacağını bilgirir.
if (!input(buton_geri)&!input(buton_ileri)) // İki butona da basılmıyor ise;
{
durum=4;
}
delay_ms(Vcikis);
switch(ADIM)
{
case 1 : output_d(0b00000001); break;
case 2 : output_d(0b00000011); break;
case 3 : output_d(0b00000010); break;
case 4 : output_d(0b00000110); break;
case 5 : output_d(0b00000100); break;
case 6 : output_d(0b00001100); break;
case 7 : output_d(0b00001000); break;
case 8 : output_d(0b00001001); break;
}
}
}
İlgilenen arkadaşlar nolur yardım etsin