Projenin Dosyaları isis simülasyon ve pic c dosyaları (.cod .c .LST .hex vb.) encoder-lcd-picc Emeği geçen Kişilere Teşekkürler
PIC16F877 Mikrokontrolör ile motor hızını lcd de gösteren encoder devresi
Program ve devre hakkında açıklamalar
Projenin akış şeması iki bölümden meydana gelmektedir. Bunlar; ana programın akış şeması ve kesme rutini akış şemasıdır.
Ana programda PORTA ve PORTB yönleri tanımlanır. Daha sonra program sonsuz bir döngüye girer ve enkoderden puls gelmesi beklenir. Enkoderden her puls geldiğinde âsayımâ değişkeni bir arttırılır.
Kesme rutinine her 66 ms de bir gidilir. Programın başlangıcın da yine LCD hazırlanır. Daha sonra her 66 ms de bir motorun hızı hesaplanır ve akrana yazdırılır. Yine programımızda ADC kullanıldığı için motorun hızı PWM ile ayarlanır. Akış şemasında da zaten PWM belirtilmiştir.
Programın Akış Åeması
Devre Åeması
Test görüntüleri
PIC C Programı
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#include
#include
#BIT T0IF = 0x0B.2
int sayac,artan;
long hiz,konum;
int16 value;
#INT_rtcc
clock_isr()
{
if(T0IF)
{
artan=0;
sayac=sayac+1;
if(sayac==15)
{
hiz=get_timer1();
hiz=hiz*1.4;
lcd_gotoxy(0,1);
printf(lcd_putc," HIZ :%4LU d/d ",hiz);
sayac=0;
artan=get_timer1()%15;
set_timer1(0);
}
}
}
void main()
{
konum=0;
artan=0;
hiz=0;
sayac=0;
enable_interrupts(GLOBAL);
enable_interrupts(INT_RTCC);
set_timer0(0);
setup_timer_0(RTCC_DIV_256);
set_timer1(0);
setup_timer_1(T1_EXTERNAL);
ext_int_edge( 1,H_TO_L );
lcd_init();
setup_timer_2(T2_DIV_BY_4, 1023, 1);
setup_ccp1(CCP_PWM);
setup_port_a(ALL_ANALOG);
setup_adc(adc_clock_internal);
set_adc_channel(0);
for(;
{
value=read_adc();
value=value*4;
set_pwm1_duty(value);
konum=(artan+get_timer1())%15;
konum=24*konum;
lcd_gotoxy(0,0);
printf(lcd_putc," KONUM : %3LU der ",konum);
}
}
1 yorum:
bu Elektirik işindede kod yazıldıgını bilmiyordum teşekkürler.
Yorum Gönder