You are on page 1of 7

Hacettepe Robot Topluluu

HUNRobotX - Makaleler - PIC ile LED Yakp Sndren Devre

Makaleler

PIC ile LED Yakp Sndren Devre

HUNRobotX - Makaleler - PIC ile LED Yakp Sndren Devre

PIC ile LED Yakp Sndren Devre


Canol Gkel - 13 Ekim 2006

Giri
Merhaba arkadalar, bu makalemizde PIC'e yeni balayanlar iin basit bir devre yapacaz. Mikrokontrolrmz kullanarak bir LED'i yakp sndreceiz. Gnlk hayatta lambalar yakp sndrme ilemi iki ekilde yaplr; birincisinde, bir dmeye basarsnz (yani bir anahtar kapatrsnz) ve dme basl olduu srece (anahtar kapal kald srece) lamba yank kalr. kinci ekilde ise; bir dmeye basarsnz (anahtar kapanr ve hemen tekrar alr, yani bir sinyal gnderir) ve lamba yanar, tekrar basarsnz (yine ayn ekilde anahtar kapanr ve hemen kendiliinden alr) lamba sner. Birinci ekilde yaplacak bir devre mikrokontrolr gerektirmeyeceinden biz ikinci ekilde alan bir devre hazrlayacaz.

Assembly Program
lk olarak mikrokontrolrmz iin bir program yazacaz. Program assembly dili ile kodlayacaz. Elbette mikrokontrolre HEX uzantsna dntrlm (yani derlenip makine koduna evrilmi) halini ykleyeceiz. Bu ilemi MPLAB ya da MPASM programn kullanarak yapabilirsiniz. Biraz grsellik katp anlamanz kolaylatrmak asndan bir ak diagram hazrlayarak ie balayabiliriz:
Deikenleri ayarla, giri/k pin'lerini ayarla

D me d e n s i n y a l geliyor m u ?

Evet

Lamba yanyor mu?

Evet

Lambay sndr

Hayr

Hayr Lambay yak

HUNRobotX - Makaleler - PIC ile LED Yakp Sndren Devre

Diagram aklayacak olursak: lk olarak yaplmas gereken ufak ayarlar yaplyor. rnein deiken adlarn ayarlyoruz, hangi geidin hangi pin'inin giri hangi pin'inin k olacan belirliyoruz vs... Daha sonra programmz srekli olarak dmenin bal olduu pin'i kontrol ediyor. Eer o pin'den bir sinyal gelirse lambann bal olduu pin'i high modea ekiyor, yani +5V yapyor. Bylece lambamz yanyor. Ondan sonra yapt ey yine giri pin'ini kontrol etmek ve yeni sinyaller beklemek. Tekrar bir sinyal ald taktirde pin'i low modea ekecek yani 0V yapacak ve lamba snecek. Bu kontrol ilemi PIC'e g verdiiniz srece devam edecek. imdi programmzn kodlarn yazalm. Programn gerekli yerlerine aklamalar koydum ama PIC assembly dilini zaten bildiinizi varsayarak yalnzca programn mant ile ilgili aklamalar yazdm. ; noktalama iaretinden sonra yazlan yazlar yorumlardr ve derleyici tarafndan dikkate alnmaz. Ben de aklamalar yorum eklinde programa dahil ettim.
list p=16F84 ; Mikrokontrolrn modelini belirttik. #include <p16F84.inc> ; PIC16F84'e has baz deikenleri programa dahil ; ettik. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; PIC'in ayarlarn yaptk. rnein WDT timer'n kapattk, ; kristal osilatr kullanacamz belirttik. ; imdi deikenleri ayarlayacaz: #DEFINE DUGME PORTB, 1 ; Dmemizin bal olduu pin'i tanmladk. #DEFINE LED PORTB, 2 ; LED'imizin bal olduu pin'i tanmladk. #DEFINE YANIK 0X20, 0 ; LED'in anlk durumunu (yank ya da ; snk) aklnda tutan deikenimizi ; (daha dorusu bit'imizi) tanmladk. SAYAC_1 EQU 0X21 ; Program iinde kullanacamz saya iin gerekli SAYAC_2 EQU 0X22 ; olan deikenler. ORG GOTO 0x000 main

; PIC'e ilk altrlacak olan alt programa gitmesini ; syledik.

GECIKME ; Dmeye basldnda oluan ark alglamamak iin bir bekleme yapacaz. ; Bu gecikme prosedrnde iki deikene 255 deeri atyoruz daha sonra da ; bunlar azaltmakla zaman harcayarak bir bekleme rutini gerekletiriyoruz. MOVLW D'255' MOVWF SAYAC_1 MOVWF SAYAC_2 SAYAC_AZALT MOVWF SAYAC_1 SAYAC_1_AZALT DECFSZ SAYAC_1 GOTO SAYAC_1_AZALT

HUNRobotX - Makaleler - PIC ile LED Yakp Sndren Devre

DECFSZ SAYAC_2 GOTO SAYAC_AZALT RETURN TERSLE ; LED yanksa sndren, snkse yakan alt programmz. BTFSC YANIK ; YANIK bit'ini kontrol et. GOTO $+2 ; YANIK bit'i 1 ise 2 satr sonraya git. GOTO $+3 ; YANIK bit'i 0 ise 3 satr sonraya git. CALL LED_SONDUR ; LED'i sndrme alt programn ar. GOTO $+2 CALL LED_YAK ; LED'i yakma alt programn altr. CALL GECIKME ; Dmeye bastktan sonra oluacak olan arklar CALL GECIKME ; geinceye kadar bekle. CALL GECIKME RETURN ; Ana programa geri dn. LED_YAK ; LED'i yakan alt program. BSF LED ; LED'i yak. BSF YANIK ; YANIK bit'ini 1 yap. RETURN LED_SONDUR ; LED'i sndren alt program. BCF LED ; LED'i sndr. BCF YANIK ; YANIK bit'ini 0 yap. RETURN main ; lk olarak altrlacak olan ksm. BSF STATUS, RP0 ; Kodlama yaptmz bank' deitiriyoruz. CLRF TRISA ; A portunun tm pin'lerini k yapyoruz. ; Aslnda A portunu kullanmadmzdan ok da nemli ; deil. MOVLW B'00000010' MOVWF TRISB ; B portunun 1. bitini giri dier bit'lerini k ; yaptk. BCF STATUS, RP0 ; Tekrar bank deitirdik. CLRF PORTB ; PIC'e ilk g verdiimizde dmeye baslym ; gibi gzkmesin diye B portunun deerlerini low ; yaptk. Elbette yalnzca 1. bit'i low yapmak da ; yeterdi. LED_YAK_SONDUR ; Dmenin baslp baslmadn kontrol ettiimiz ksm. BTFSC DUGME ; Dme basl m? CALL TERSLE ; Baslysa LED'in durumunu tersle. GOTO LED_YAK_SONDUR ; Dmenin basl olup olmadn tekrar ; kontrol et. END

HUNRobotX - Makaleler - PIC ile LED Yakp Sndren Devre

Devre
Programmz yazdktan sonra derleyicimizle derliyoruz ve PIC'imize derlenmi kodu yklyoruz. Bu admlar bu makalede adm adm anlatamayacam nk o konulardan ayr bir yaz konusu kar. imdi devre emasna ksaca bir gz artalm:
0V +5V 0V +5V

PIC 16F84

10K

Dmenin PIC ile birleen ksmna diren koymamzn nedeni dme basl deil iken PIC'in giri pin'inine 0V vermek istememiz. Dmeye basldnda 5V'luk deer ksa devre aracl ile PIC'le buluacak diren zerinde de 5V'luk bir gerilim fark oluarak 5V'un ve topran ksa devre olmasn engelleyecek. Bunun dnda kristalli olan ksm ve PIC'in bacaklarna balanan kablolar dnda devrenin mantn anlam olmanz gerekiyor (zaten geriye bir tek LED'li ve dmeli ksm kald). Eer anlamadysanz elektronik konusunda biraz daha almalsnz. Daha sonra yeniden bu yazya dnebilirsiniz.

HUNRobotX - Makaleler - PIC ile LED Yakp Sndren Devre

Benim hazrladm devrenin birka adan fotoraf:

imdi devreye +5V vererek sisteminizi altrabilirsiniz. Yani breadboard'un krmz izgili stununa g kaynanzn +5V'luk ucunu mavi izgili stununa ise toprak ucunu balayacaksnz. Eer almazsa kablolarn breadboard'a tam olarak yerletiinden ve PIC'in doru bacaklarna doru voltaj uyguladnzdan emin olun. Yine almazsa dmeye bastnzda doru bacaa +5V'un ulatn avometrenizle kontrol edin. Eer yine almazsa yazdnz programn yukardaki ile ayn olduundan ve programn HEX kodunu PIC'e doru bir biimde yklediinizden emin olun. Bir de devreniz almad taktirde PIC'in snp snmadn ara ara kontrol edin, eer PIC ok snrsa mutlaka g kaynan devreden skn ve balantlar gzden geirin. Sorularnz iin sitemizin forum blmn ziyaret edebilirsiniz. yi almalar.

Balantlar
http://robot.ee.hacettepe.edu.tr/ http://www.microchip.com/

You might also like