maamed
Üye
- Katılım
- 31 Ağu 2009
- Mesajlar
- 39
- Puanları
- 1
- Yaş
- 36
selam arkadaşlar pic16f877 kullanarak,kullanılacak 4 buton 3 led ve bir role ile ilişkilendirilecek ve her bir butona basıldığında butonun ilişkili olduğu led veya role lcd ekranın birinci satırında hangi led yanıyorsa veya role atmışsa misal "şu led yanıyor veya role atıyor" diye yazdırılacak daha sonra pic16f877 deki 2 tane adc den gerilim bilgisi okunacak ve bu da lcd nin 2. satırında adc1:***volt adc2:***volt şeklinde yazdırılacak aynı zamanda adclerdeki voltaj değeri bir dac çıkışında da okunabilecek ben pic programlama işini çok iyi bilmiyorum fakat 4 günden beri pic basic kasıyorum iyi kötü bir kod yazdım proteusta ve programda dac haricinde diğer kısımları tasarladım fakat bir türlü çalıştıramadım hata yazılan programda mı yoksa proteustaki kurduğum devrede mi anlayamıyorum cok iyi bilmediğim için amacım ödevi başkalarına yaptırmak değil bu ödev sayesinde pic basic de baya yol kat ettim yoksa çalısacağım yoktu fakat zamanım kalmadı hem hatamı öğrenmek hem de bu işi daha iyi kavrayabilmek adına yardımlarınızı bekliyorum.yazdığım program:
ve proteustaki devre:
yardımlarınız ve ilginiz için şimdiden teşekkür ederim saygılarımla...
Kod:
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_on
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
TRISA=%00000011
TRISB=%00000000
TRISC=%00001111
TRISD=%00000000
LOW PORTB.2
ADCON1=%10000101
PORTD=0
lcdout $FE,1
PAUSE 500
ADC1_DEGERI var word
ADC2_DEGERI var word
GERILIM1 var word
GERILIM2 var word
anadongu:
IF PORTC.0=0 THEN PORTD.0=1
IF PORTC.1=0 THEN PORTD.1=1
IF PORTC.2=0 THEN PORTD.2=1
IF PORTC.3=0 THEN PORTD.3=1
gosub lcdgoster
gosub adc_oku
GOTO anadongu
lcdgoster:
if portd.0=1 then lcdout $FE,2,"kirmizi led....."
if portd.1=1 then lcdout $FE,2,"sari led........"
if portd.2=1 then lcdout $FE,2,"yesil led......."
if portd.3=1 then lcdout $FE,2,"role atiyor....."
return
adc_oku:
ADCIN 0,ADC1_DEGERI
GERILIM1=ADC1_DEGERI*48/10
LCDOUT $FE,$C0,"ADC1:",#GERILIM1
ADCIN 1,ADC2_DEGERI
GERILIM2=ADC2_DEGERI*48/10
LCDOUT $FE,$C4,"ADC2:",#GERILIM2
pause 250
return
end
ve proteustaki devre:
yardımlarınız ve ilginiz için şimdiden teşekkür ederim saygılarımla...