15 Mayıs 2011 Pazar

MİKRODENETLEYİCİLER

        Mikrodenetleyiciler pratik kullanımları az donanına gereksinim duymaları az enerji tuketmeleri kücük boyutları gibi birçok neden den dolayı  bircok alanda kullanılmaktadır
     Evlerimizde kullanıgımız çamaşır makinelerinden buzdolaoplarından tutun birçok robotik ve elekronik projede başarılı bir şekilde kullanılmaktadır

                               MİCROCHİP FİRMASININ BAZI MİKRO DENETLEYİCİLERİ








Bu mikrodenetleyiciler  cok fazla kullnılırlar uygulana alanları nerede ise yok denecek kadar azdır. örnek programları internet ortamında cok fazla bulunabilecek bir mikrodenetleyicidir..Bu mikro denetleyicilere kısaca Pic denir ve bir cok modeli vardır bunlar içinde en çok kullanılan denetleyiciler arasında pic16f84, pic16f877, pic16f628 vardır. Bu denetleyiciler bazı özelliklerine farklılasarak üretilmiştir

Pic 16f877 ile kullanarak telefon ile uzaktan kontrol


Baskı Devre Şeması:

Alttan Görünüş:





Üstten Görünüş:


DTFM Tonu ile uzaktan cihaz kontrolü
DTFM ton kontrolü 8 adet her hangi bir devrenin ya da cihazın uzaktan kontrolünde kullanılabilir. Buradaki amaç telsizle ve ya telefonla uzaktan bir sistemin çalışmasını sağlayabilmektir.
Devrenin çalışması:
Telefondan ve ya telsizden çıkan DTMF ton sinyali bir amplifikatör yardımıyla genliği büyütüldükten sonra 100 n'luk kondansatörden geçerek 100 kW'luk dirençle CM8870 decoder entegresi tarafından 5 bitlik veriye dönüştürülür. Normal telefon DTMF'i için CM8870'e 3.574Mhz'li kristal takılmaktadır. Decoder'den çıkan 5 bitlik veri pic 16F877'nin portlarına aktarılır. Pic 16F877 tarafından klavyeden girilen değerle karşılaştırılır ve ilgili röleleri kontaklar. 
pic16f877 için pic basic kodları:


PM_USED   EQU 1
 INCLUDE "16F877.INC"

; Define statements.
#define  CODE_SIZE   8
#define  LCD_BITS      4
#define  LCD_DREG      PORTD
#define  LCD_DBIT      0
#define  LCD_RSREG   PORTE
#define  LCD_RSBIT   2
#define  LCD_EREG   PORTE
#define  LCD_EBIT   1
RAM_START         EQU 00020h
RAM_END           EQU 001EFh
RAM_BANKS         EQU 00004h
BANK0_START       EQU 00020h
BANK0_END         EQU 0007Fh
BANK1_START       EQU 000A0h
BANK1_END         EQU 000EFh
BANK2_START       EQU 00110h
BANK2_END         EQU 0016Fh
BANK3_START       EQU 00190h
BANK3_END         EQU 001EFh
EEPROM_START      EQU 02100h
EEPROM_END        EQU 021FFh
R0                EQU RAM_START + 000h
R1                EQU RAM_START + 002h
R2                EQU RAM_START + 004h
R3                EQU RAM_START + 006h
R4                EQU RAM_START + 008h
R5                EQU RAM_START + 00Ah
R6                EQU RAM_START + 00Ch
R7                EQU RAM_START + 00Eh
R8                EQU RAM_START + 010h
FLAGS             EQU RAM_START + 012h
GOP               EQU RAM_START + 013h
RM1               EQU RAM_START + 014h
RM2               EQU RAM_START + 015h
RR1               EQU RAM_START + 016h
RR2               EQU RAM_START + 017h
_CIKIS             EQU RAM_START + 018h
_DENET             EQU RAM_START + 019h
_UMUMI             EQU RAM_START + 01Ah
_PORTL             EQU PORTB
_PORTH             EQU PORTC
_TRISL             EQU TRISB
_TRISH             EQU TRISC
 INCLUDE "REHA_~1.MAC"
 INCLUDE "PBPPIC14.LIB"
 MOVE?CB 007h, ADCON1
 MOVE?CB 00Fh, TRISA
 MOVE?CB 000h, TRISB
 MOVE?CB 000h, PORTB
 PAUSE?C 001F4h
 LCDOUT?C 0FEh
 LCDOUT?C 001h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 049h
 LCDOUT?C 059h
 LCDOUT?C 049h
 LCDOUT?C 020h
 LCDOUT?C 047h
 LCDOUT?C 055h
 LCDOUT?C 04Eh
 LCDOUT?C 04Ch
 LCDOUT?C 045h
 LCDOUT?C 052h
 LCDOUT?C 0FEh
 LCDOUT?C 0C0h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 044h
 LCDOUT?C 054h
 LCDOUT?C 04Dh
 LCDOUT?C 046h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 04Bh
 LCDOUT?C 04Fh
 LCDOUT?C 04Eh
 LCDOUT?C 054h
 LCDOUT?C 052h
 LCDOUT?C 04Fh
 LCDOUT?C 04Ch
 LABEL?L _YENILE
 AND?BCB PORTA, 00Fh, _UMUMI
 CMPEQ?BCL _UMUMI, 000h, _YENILE
 CMPGE?BCL _UMUMI, 009h, L00002
 GOSUB?L _TABLO
 OR?BBB PORTB, _CIKIS, PORTB
 LCDOUT?C 0FEh
 LCDOUT?C 001h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUTD?B _UMUMI
 LCDOUT?C 02Eh
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 041h
 LCDOUT?C 04Ch
 LCDOUT?C 020h
 LCDOUT?C 041h
 LCDOUT?C 04Bh
 LCDOUT?C 054h
 LCDOUT?C 049h
 LCDOUT?C 046h
 LCDOUT?C 0FEh
 LCDOUT?C 0C0h
 LCDOUT?C 020h
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 020h
 LCDOUT?C 026h
 LCDOUT?C 020h
 LCDOUT?C 042h
 LCDOUT?C 045h
 LCDOUT?C 052h
 LCDOUT?C 048h
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LABEL?L _DNTL
 AND?BCB PORTA, 00Fh, _DENET
 LXOR?BBL _UMUMI, _DENET, _YENILE
 GOTO?L _DNTL
 CMPNE?BCL _UMUMI, 00Ah, L00004
 MOVE?CB 000h, PORTB
 LCDOUT?C 0FEh
 LCDOUT?C 001h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 054h
 LCDOUT?C 055h
 LCDOUT?C 04Dh
 LCDOUT?C 020h
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 041h
 LCDOUT?C 04Ch
 LCDOUT?C 04Ch
 LCDOUT?C 041h
 LCDOUT?C 052h
 LCDOUT?C 0FEh
 LCDOUT?C 0C0h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 050h
 LCDOUT?C 041h
 LCDOUT?C 053h
 LCDOUT?C 049h
 LCDOUT?C 046h
 LABEL?L L00004
 CMPNE?BCL _UMUMI, 00Bh, L00006
 LABEL?L _SRGL
 PAUSE?C 001h
 AND?BCB PORTA, 00Fh, _DENET
 GOTO?L _SRGL
 LABEL?L _PASIF_Y
 LCDOUT?C 0FEh
 LCDOUT?C 001h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 048h
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 047h
 LCDOUT?C 049h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 041h
 LCDOUT?C 04Ch
 LCDOUT?C 0FEh
 LCDOUT?C 0C0h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 050h
 LCDOUT?C 041h
 LCDOUT?C 054h
 LCDOUT?C 049h
 LCDOUT?C 04Ch
 LCDOUT?C 053h
 LCDOUT?C 049h
 LCDOUT?C 04Eh
 LABEL?L _PASIF_BEK
 AND?BCB PORTA, 00Fh, _DENET
 ASM?
   NOP   
 ENDASM?
 CMPEQ?BCL _DENET, 000h, _PASIF_BEK
 AND?BCB PORTA, 00Fh, _UMUMI
 GOSUB?L _TABLO
 AND?BBB PORTB, _CIKIS, _DENET
 CMPEQ?BCL _DENET, 000h, _GEC
 XOR?BBB PORTB, _CIKIS, PORTB
 LCDOUT?C 0FEh
 LCDOUT?C 001h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUTD?B _UMUMI
 LCDOUT?C 02Eh
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 041h
 LCDOUT?C 04Ch
 LCDOUT?C 020h
 LCDOUT?C 050h
 LCDOUT?C 041h
 LCDOUT?C 053h
 LCDOUT?C 049h
 LCDOUT?C 046h
 LCDOUT?C 0FEh
 LCDOUT?C 0C0h
 LCDOUT?C 020h
 LCDOUT?C 045h
 LCDOUT?C 052h
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 020h
 LCDOUT?C 026h
 LCDOUT?C 020h
 LCDOUT?C 042h
 LCDOUT?C 045h
 LCDOUT?C 052h
 LCDOUT?C 048h
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 GOTO?L _SRGL2
 LABEL?L _GEC
 LCDOUT?C 0FEh
 LCDOUT?C 001h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 042h
 LCDOUT?C 055h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 04Bh
 LCDOUT?C 041h
 LCDOUT?C 04Eh
 LCDOUT?C 041h
 LCDOUT?C 04Ch
 LCDOUT?C 0FEh
 LCDOUT?C 0C0h
 LCDOUT?C 002h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 020h
 LCDOUT?C 050h
 LCDOUT?C 041h
 LCDOUT?C 053h
 LCDOUT?C 049h
 LCDOUT?C 046h
 LABEL?L _SRGL2
 AND?BCB PORTA, 00Fh, _DENET
 LXOR?BBL _UMUMI, _DENET, _YENILE
 GOTO?L _SRGL2
 LABEL?L L00006
 PAUSE?C 004h
 GOTO?L _YENILE
 LABEL?L _TABLO
 LOOKUP?BCLB _UMUMI, 009h, L00001, _CIKIS
 LURET?C 000h
 LURET?C 001h
 LURET?C 002h
 LURET?C 004h
 LURET?C 008h
 LURET?C 010h
 LURET?C 020h
 LURET?C 040h
 LURET?C 080h
 LABEL?L L00001
 RETURN?
 END

pic16f877 ile çizgi izleyen robot

Sensörler yardımı ile çizgi takip eden araba

Deney Amacı: PIC 16F877 programlanması ve elektronik devre dizaynı

Deney Mazemeleri:
*3 adet sensör
*1adet opamp entegresi
* 1adet sensör hassasiyet ayar düğmesi
*1adet kristal osilatör
*1 adet reset düğmesi
*3 adet led
*1adet 16f877 pic
*2 adet güç transistörü
*2 adet 22 ohm 1waat drenç
*2 adet bc 256 transistör
*4 adet mercimek kondansatör
*8 adet drenç
*2 adet kondansatör
*1 adet çift motorlu oyuncak araba

Deneyin yapılışı: Baskı devresi çizili olan kağıdı bakır plakaya yapıştırarak yada bakı kalemi ile bakır plaka çizilerek devre şeması çıkarılır.Hazırlamış olduğumuz karışımın        (tuz ruhu ,phidrol)  içine atarak bakır levhada  sadece devre şemasının kalana kadar bekletiriz.Dikkat etmemiz gereken husus karışımın ayarını iyi yapmak, baskıdaki çizgilerin(devre yolları) birleşmemesi ve silinmemesidir.Devreyi bakır plakaya  çıkardık dan  sonra gerekli yerlerden delinerek lehimleme kalır.Burada da doğru yönde dikkat etmek gerekir.
            PİC’e  aşağıdaki programı yükleyip yerine  takarız.
 LIST P=16F877
            INCLUDE   "P16F877.INC"
            __CONFIG(_WDT_OFF&_XT_OSC&_PWRTE_ON&_CP_OFF)


START
            BSF     STATUS,5
            CLRF  TRISC
            MOVLW        H'07'
            MOVWF        TRISE
           
            MOVLW        H'07'
            MOVWF        ADCON1

            BCF    STATUS,5
            CLRF  PORTC
            MOVLW        H'FF'
            MOVWF        PORTE

DONGU
            BTFSS            PORTE,0
            CALL DUZ
            BTFSS            PORTE,1
            CALL SAG
            BTFSS            PORTE,2
            CALL SOL
            GOTO DONGU


SAG   
            MOVLW        H'02'
            MOVWF        PORTC
            RETURN

SOL   
            MOVLW        H'01'
            MOVWF        PORTC
            RETURN
           
DUZ  
            MOVLW        H'03'
            MOVWF        PORTC
            RETURN

            END
           
            Sensörler beyaz renge duyarlı olduğu için siyah zemin üzerine beyaz çizgi(sensörlerin plakasının genişliğinde) çizilir.Dönüşler ani olmazsa verim daha iyi olur.Sağa dönmek için sol motor ,Sola dönmek için sağ motor dönmeli, iler içinde her iki motorda aktif olmalıdır..

Sonuç:Böyle bir robot yamak için pic 16f877’nin programlamasını,elektronik malzemelerin hakkında her türlü bilgiyi,baskı devre yapımını öğrenmiş olduk…

PİC BASİC

mikrodenetleyicileri programlamak için geliştirlen bu dil ile kolaylıkla yazılımları hazırlayabilirsiniz. Bu derleyicinin demo (kod sınırlaması) sürümünü  BURAYA TIKLAYARAK  indirebilirsiz.

picbasic ile yazılmıs pic16f628 için bir yazılım örneği:
-------------------------------------------------------------------------------------------------------------
PORTA = 0
PORTB = 0
TRISA=000001   'A portu A.0 giriş diğerleri çıkış yapıldı.
TRISB=000000   'B portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628
@ DEVICE pic16F628, WDT_on              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'---------------------------değişkenler------------------------------
 AL     VAR  BYTE
 GIRIS  VAR  PORTA.0
 ROLEA  VAR  PORTB.0
 ROLEB  VAR  PORTB.1
 LEDA   VAR  PORTB.6
 LEDB   VAR  PORTB.7
'-----------------------------B A Ş L A N G I Ç ---------------------------
CMCON = 7
Clear _
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
pause 500
PORTB = 0 'tüm çıkışlar low seviyesinde
'-------------------------------------------------------------------------------
BASLA:
       SerIn2 GIRIS, 396, [WAIT ("ETE"),AL]
     
       If AL = 88 Then
          TOGGLE LEDA
          TOGGLE ROLEA
       End If
          
       If AL = 66 Then
          TOGGLE LEDB
          TOGGLE ROLEB
       End If
       pause 200
       GoTo BASLA
End

PİC C

pic c de mikrodenetleyiciler için tasarlanmıs bir yazılım geliştirme ortamıdır bu pic basic e oranla biraz daha zor dur kullanıcının amacına göre farklılık gösterebilir pic basic ile yazılan bi kod pic c ile de yapılabilir fakat tabiki de aynı kodlar ile değil.her derleyicinin kendine özgü bir yazım kuralı ve komut isimleri vardır.
pic c yi geliştiren bazı yazılım sirketlerinden en çok kullanılanlar CCS PİC C ve HI-TECH programlarıdır bunlar lisanslı programlardır demo sürümlerini ücretsiz kullanabilirsiz.

pic c ye örnek bir program

#include <pic.h>
#include "Delay.c"
void interrupt isr(void)
{
if(RB1==0)
RB2=1;
else
RB3=1;
DelayMs(5);
INTF=0;
}
void main(void)
{

TRISA=0X00;
TRISB=0b00000011;
INTEDG=1;
INTE=1;
GIE=1;
while(1)
PORTB=0;
}

PİC ASEMBLY

Çift döngülü zaman geciktirme alt programına örnek program. PortB’ye bağlı olan tüm LED’leri belirli zaman aralıklarıyla yakıp-söndürür

LIST P=16F628A
 INCLUDE "P16F628A.INC"
 __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;----------------------------------------------------------
SAYAC1     EQU H'20' ;SAYAC1 saklayıcısının adresi
SAYAC2     EQU H'21' ;SAYAC2 saklayıcısının adresi
                    CLRF PORTB ;PortB'yi sıfırla
                    BANKSEL TRISB ;BANK1'e geç
                    CLRF TRISB ;PortB'nin tüm uçları çıkış
                    BANKSEL PORTB ;BANK0'a geç
TEKRAR
                   MOVLW h'00'
                   MOVWF PORTB
                   CALL GECIKME
                   MOVLW h'FF'
                   MOVWF PORTB
                   CALL GECIKME
                   GOTO TEKRAR
GECIKME  ;Alt program başlangıcı
                  MOVLW h'FF'  ;Dış döngü (M sayısı)
                  MOVWF SAYAC1
DONGU1
                  MOVLW h'FF'  ;İç döngü (Nsayısı)
                  MOVWF SAYAC2
DONGU2
                  DECFSZ SAYAC2, F
                  GOTO DONGU2
                  DECFSZ SAYAC1, F
                  GOTO DONGU1
                  RETURN
                  END



BTFSC ve BTFSS komutlarının çalışmasını gösteren program. PortA’nın 0. bitine bağlı butona basınca PortB’nin 0. bit’indeki LED’i söndürür, PortA’nın 4. bit’indeki butona basınca da aynı LED’i yakar.

 LIST P=16F628A
 INCLUDE "P16F628A.INC"
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;----------------------------------------------------------
                         ORG  h'0000'
                         CLRF  PORTB  ;PORTB'ye bağlı LED'leri söndür
                         BANKSEL TRISB  ;BANK1'e geç
                         MOVLW b'11111110' ;W saklayıcıya h'08' yükle
                         MOVWF TRISB  ;RB0 çıkış diğerleri giriş
                         MOVLW b'11111111' ;W saklayıcıya h'FF' yükle
                         MOVWF TRISA  ;PORTA uçlarının tümü giriş
                         BANKSEL PORTB  ;BANK0'a geç
                         MOVLW h'07'  ;W saklayıcıya b’00000111’ yükle
                         MOVWF CMCON  ;PORTA girişleri dijital I/O
 TEST_PORTA
                         BTFSS PORTA,0  ;A port’unun 0. bit’ini test et
                         BCF  PORTB,0  ;"0"sa PORTB.0'daki LED'i söndür
                         BTFSS PORTA,4  ;A port’unun 4. bit’ini test et
                         BSF  PORTB,0  ;"0"sa PORTB.0'daki LED'i yak
                        GOTO  TEST_PORTA ;PORTA'yı tekrar test et
                        END

Genel olarak pic komut setlerti



SUBWF  f,d
Subract W from f
f den w yi çıkart



SWAPF  f,d
Swap nibles in
f
F nin 4 lü bitlerinin
yerini değiştir



XORWF  f,d
Exclusive OR w with F
w ile f ye EXOR işlemi yap





ADDLW  k
Add literal and w
k yı w ye ekle



ANDLW  k
And literal with k
k yı w ile And le



CALL  k
Call subroutine k
k altyordamını çağır



CLRWDT
Clear Watchdog Timer
watchdog Timer temizle



GOTO  k
Goto address k
k etiketine git



IORLW  k
Inclusive or literal k with w
w ile k yı IOR la



MOVLW  k
Move literal k to w
k yı w ye taşı



RETFIE
Return from interrupt
kesmeden dön


RETLW  k
Return with literal in
w
k yı w ye yükle ve dön


RETURN

Return from subroutine
Altyordamdan dön



SLEEP
Go into standby mode
Yat uyu, heç bişeycik yapma



SUBLW  k
Subtract w from literal k
w yi k dan çıkart



EXORLW  k
Exclisive OR literal k with W
k yı w ile Exor la

Mikrodenetleyicilerin bilgisayar (rs232) ile bağlantısı


Şimdi 16F84 ile yapacağımız devrelerimize bakalım. Birinci devre bilgisayardan alınan bilgiyi B portuna bağlı 8 LED’de gösterecektir. İkinci devrede ise B portuna girilen 8 bitlik bilgi bilgisayara girilecektir. Aşağıda sırasıyla 8 bitlik bilginin PIC’e gönderilmesi ve daha sonra 8 bitlik bilginin PIC yardımıyla bilgisayara alınması anlatılacaktır.

Bilgisayar ile PIC haberleşmesinde arayüzü Visual Basic ile yaptım. Arayüzün görünümü aşağıda (Şekil 3) görülmektedir. testver butonu text penceresine yazılan sayıyı veya karekteri PIC’e göndermek için kullanılacaktır. testalal butonu PIC’ten alınan 8 bitlik bilgiyi text penceresine yazdıracaktır. exit butonu ise programdan çıkmamızı sağlayacaktır.


Arayüzde görünmeyen  ve comm port ile ilgili işlemler yapmamızı sağlayan Mscomm kontrolörü çalışma alnında görülür. Bu kontrolörü yüklemek için sırasıyla projects > componenets > microsoft comm control seçilir. Bu işlem yapıldıktan sonra vb çalışma alanının görünümü aşağıda görüldüğü gibidir. (Şekil 4)

Program ile ilgili kodlar sırasıyla şöyledir (Şekil 5). testver butonu için :

Private Sub ver_Click()

    MSComm1.Settings = "9600,N,8,1"
    'rs232 ile ilgili ayarlar
    MSComm1.PortOpen = True
    'port açiliyor
    MSComm1.Output = Text1.Text
    'text penceresine yazilan deger pic'e gonderiliyor
    MSComm1.PortOpen = False
    'port kapatiliyor
   
End Sub
Yorumlardan da anlaşılacağı gibi önce comm port ile ilgili ayarlar yapılmaktadır. Bu ayarlar bilginin 9600 baud (bit per second), parity bitsiz (no parity), 8 bitlik data ve bir stop biti ile gönderildiğini veya alındığını gösteriyor. MSComm1.PortOpen=True deyimi portun açıldığını MSComm1.Output porta bilgi gönderildiğini (Gönderilen bilgi text1’e yazılan sayı veya karekterdir) ve MSComm1.PortOpen=False portun kapandığını belirtiyor.

Buton testal için yazılan kodkar şunlardır.

Private Sub al_Click()

    MSComm1.Settings = "9600,N,8,1"
    'rs232 ile ilgili ayarlar
    MSComm1.PortOpen = True
    'port açiliyor
    deger = Asc(MSComm1.Input)
    'pic'ten okunan 8 bitin ascii karsiligi aliniyor
    Text1.Text = deger
    'okunan bilgi text penceresinde görünüyor
    MSComm1.PortOpen = False
    'port kapatiliyor
   
End Sub

Yukardaki kaynak kodunda testver butonunda kullanılan kodlara benzer kodlar vardır. Dışardan gelen bilgiyi almak için MSComm1.Input deyimi kullanılmıştır. Asc fonksiyonu alınan karekterin ascii değerini almak için kullanılmıştır. Ascii tablosunu herhangi bir programlama kitabının arkasında bulabilirsiniz. deger değişkenin dim deger as integer olarak tanımlanması daha uygun olabilir. Portun MSComm1.PortOpen = False satırı ile kapatılması programın “port zaten açık” hatası vermemesi açısından önemlidir
exit butonu programdan çıkılmasını sağlamaktadır.

mikrodenetleyiler için derleyiciler

mikrodenetleyiciler için yazılımları tasasrlamak için bi cok programlama dili geliştirilmiştir fakat mikroişlemci ve mikrodenetleyici sadece tek bir dilden anlar, makine dili...Makine dili ikilik yani binary kodlarının işlencinin anlaycağı biçimde sıralanmasıdır..fakat makine dilinin kodları akılda tutulamayacak kadar zordur bu yüzden programcı için içinden çıkılamaz bir drum olusur.. Bu zor durumdan kurtulmak için makine kodlarınını semboliklestirmişlerdir bu sembolik  kodları ikilik kodların isimlestirilmiş hali gibi düsünebiliriz.Bu sembolik kodların en alt seviyesi ASEMBLY dir. Bu dil  mikroedenetleyilerin temel dilidir fakat yapılan programlar oldukça karısıktır anlaması zordur bu yüzden pic basic, pic c, proton gibi derleyiciler ortaya cıkmıstır bu derleyicilerde yazılan programlar hex dosyaları oluşturur denetleyiciyede bu kodlar yüklenir denetleyiciler bunları makine koduna dönüstürerek işlemleri yapar.ASEMBLY derleyicisi hariç diger bi cok derleyici ücretlidir fakat ücretsiz demo sürümleri de vardır.
ASEMBLY derleyicisini MİCROCHİP firmasının sitesinden ücretsiz olarak indirebilirsiniz

BURADAN MPLAB derleyici ortamini indirebilir ve bazı notlara ulaşabilirsiz.

14 Mayıs 2011 Cumartesi

MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER

  Mikro işlemciler(CPU) ile mikrodenetleyiciler(MCU) genel olarak farklı yapılıdırlar.
fakat yaptıları iş ikisindede aynıdır ve gelen komutları değerlendirip gerekli işlemleri yaparalar.
    Mikro işlemciler ile mikrodenetleyiciler arasındaki temel fark, mikro işlemcilerin ek donanımları dısarıdan bağlanmasıdır yani bir mikro işlemci kullanması gereken RAM, HDD gibi donanımlara ayrıyeten bağlanır, fakat bir mikrodenetleyici chip bu donanınların hepsini bir kılıf içinde bulundurur cok az bir ek donanım ile çalışabilir.
Yani bir mikrodenetleyici kendi içinde bir mikro işlemciye RAM e ve program hafızılarına(EEPROM) sahiptir...
İlk mikro işlemci nasıl ortaya çıktı dersek....
Aslında bir çip tasarımcısı olmayan Marcian “Ted” Hoff, 1969 yılında MCS-4’ün mimari taslağına katkıda bulunmuş ama tasarım ve geliştirmesine katılmamıştır. MCS-4’ün tasarımı daha sonraları, 1970 yılının Nisan ayında, İtalyan doğumlu fizikçi Federico Faggin’in Intel firmasina MCS-4 tasarımcısı ve proje lideri olarak katılması ile başlamıştır. 1970-1971 yılları arasında Faggin, bir merkezi işlemciyi (CPU) tek bir çip içinde entegre etmeyi (Dünya'nın ilk mikroişlemcisi) başarabilen ilk çip tasarımcısı olmuştur.
Intel firması Faggin’i, 1968’de orijinal silikon geçit teknolojisini (“Silicon Gate Technology”, SGT) geliştirdiği ve bu teknolojiyi kullanarak Dünya'nın ilk ticari entegre devresinin (Fairchild 3708) tasarımını yaptığı Fairchild firmasında çalışmakta iken keşfetmiş ve işe almıştır. Faggin, Intel’de çalışırken daha önce varolmayan yeni bir silikon geçit metodu geliştirdi (Silikon geçit teknolojisi yeni bir teknoloji olduğundan eskiden kullanılan metal geçit teknolojisinden daha farklı bir tasarım metodu gerektiriyor ve o zamana kadar sadece hafıza kartı üretiminde kullanılıyordu) ve aynı zamanda, Dünya'nın ilk tek çipte entegre edilmiş mikroişlemcisinin yaratılmasını mümkün kılan birçok temel buluşa da katkıda bulundu. Bunlara örnek olarak: Biri silikon tabakası diğeri de alüminyum tabakası ile olacak şekilde çift seviye interkoneksiyonlara izin veren jonksiyonlar ile polikristal silikon tabakası arasında direkt kontakt yapılmasına olanak sağlayan “gömülü kontakt” (“buried contact”) metodunun icadı; o zamanlar başarılmasının imkânsız olduğu düşünülen bir fikir olan önyükleme şarjının polikristal silikon kullanılarak icadı; çok yenilikçi bir devre düzeni; yeni bir statik MOS kayan yazmaç, yeni bir tür sayaç ve yeni bir otomatik sıfırlama devresi (“power-on reset”) (U.S. patent no: 3.753.011) gibi daha birçok özel devrenin icadı.
Busicom firmasında çalışan bir program ve lojik devre tasarımcısı olan Masatoshi Shima, daha önceden hiç çip tasarım deneyimi olmadığı halde, Faggin’e MCS-4’ün tasarımında yardım etmiş ve daha sonraları ona Zilog firmasında katılmıştı. Zilog, özel olarak mikroişlemcilere odaklanmış Dünya'daki ilk firma olup 1974 yılının sonlarında Federico Faggin ve Ralph Ungermann tarafından kurulmuştur. Faggin ve Shima birlikte Z80 mikroişlemcisini geliştirmiştir ve bu mikroişlemci bugün halen üretilmektedir
intel firmasının ilk ürettiği işlemci 4004 dür daha sonraları cok fazla gelişerek bu gün kullanılan müthiş hızlara sahip işlemciler üretilmiştir.

ilk işlemci 4004

pic16f877
arm mikroişlemci olan cx82100

PİC PROGRAMLAMA DEVRELERİ


Pic için yazılan programlar hex uzantılı olurlar bu kodları denetleyici çalıştırabilmesi için program hafızasına(EEPROM) yüklenmesi gereklidir. bu iş için pic mprogramlayıcı devreler vardır bu devreler cok basit sekildedir ve cok ucuza yapılabilir fakat hazır halde satılanları da vardır..
ideal bir pic programlama devresi




çok çeşitli pic leri programlamak için bir prgramlayıcı

Programlayabildiği mikrodenetleyiciler
pıc12c508,pıc12c509
pıc12c508a,pıc12c509a
pıc12ce518,pıc12ce519
pıc12c671,pıc12c672,pıc12ce673,pıc12ce674
pıc12f508,pıc12f509 the trick of programming pıc12f508/509 using ıc-prog
pıc12f629,pıc12f635(1)(2),pıc12f675,pıc12f683(2)
pıc16c505
pıc16c61,pıc16c62a,16c62b(3),pıc16c63,pıc16c63a
pıc16c64a,pıc16c65a,pıc16c65b,pıc16c66,pıc16c67
pıc16c620,pıc16c620a,pıc16c621,pıc16c621a,pıc16c622,pıc16c622a
pıc16ce623,pıc16ce624,pıc16c625
pıc16f627,pıc16f628
pıc16f627a(2),pıc16f628a,pıc16f648a
pıc16f630,pıc16f636(2),pıc16f676,pıc16f684(2),pıc16f688(2)
pıc16c710,pıc16c711(3),pıc16c715(6)
pıc16c712,pıc16c716(3)
pıcpıc16c71,pıc16c72,pıc16c72a,pıc16c73a,pıc16c73b,pıc16c74a,pıc16c74b,pıc16c76,pıc16c77
pıc16f72,pıc16f73,pıc16f74,pıc16f76,pıc16f77
pıc16c745(3),pıc16c765(3)
pıc16c717,pıc16c770,pıc16c771(7)
pıc16c773,pıc16c774
pıc16c781(7),pıc16c782
pıc16c923,pıc16c924
pıc16f818,pıc16f819
pıc16f83
pıc16c84
pıc16f84
pıc16f84a
pıc16f87(2),pıc16f88
pıc16f870(,pıc16f871(,pıc16f872,pıc16f873,pıc16f874(4),pıc16f876(5),pıc16f877(5)
pıc16f873a(5),pıc16f874a(5),pıc16f876a,pıc16f877a
pıc18f1320,pıc18f2320,pıc18f4320
pıc18f242,pıc18f252,pıc18f442,pıc18f452
pıc18f248,pıc18f258,pıc18f448,pıc18f458(3)
pıc18f4539(3)


baskı devre
 Bu devreler için PC den hex  kodlarını yüklemeyi sağlayan bazı programlar vardır bu programları programlayıcı devrenin özelliğine göre internetten indirip kullanabilirsiz bu programlardab bazıları
WİNPİC800
PİCPROG
IC-PROG
CardWriter



MİKROİŞLEMCİLER

 Ticari anlamda ilk mikro işlemciyi üreten firma Intel firmasıdır. Daha önceleri hafıza çipleri üreten bu firma 1971 yılında 4004 işlemcisini üretmeyi başardı. Bu büyük bir başarıydı çünkü bu işlemci 1946 yılında 18.000 vakumlu tüple çalışan ENIAC (tarihte ilk gerçek anlamda bilgisayar)'ın gösterdiği performansı 12 mm2 boyutuyla gösteriyordu. Bu işlemci tasarlanırken o dönemin büyük bilgisayarlarından esinlenilmişti. 4 bitlik,yani aynı anda 4 değer işleyebilen 4004 işlemcisini 8 bitlik 8008 işlemcisi izledi. 8008 işlemcisinin geliştirilmiş bir modeli olan 8080 mikro işlemcisi de 1974 yılında üretildi. Bu işlemci de 8 bitlik bir işlemciydi ancak bazı komutları 16 bit olarak işleme yeteneği kazandırılmıştı. 6000 transistör içeren 8080 işlemcisi o dönem için müthiş bir rakam olan 64kb hafızayı destekleyebiliyor-du.
Bazı mühendisler Intel firmasından ayrılarak Zilog firmasını kurdular. 8080 uyumlu Z80 işlemcisini ürettiler. Bu işlemci o dönemin düşük maliyetli sistemlerinde kullanıldı. Bir süre sonra da Motorola firması 6800 işlemcisini duyurdu.
Sonunda dünyanın en büyük bilgisayar üreticisi IBM firması da düşük maliyetli bilgisayarlara ilgi duymaya başladı. 1981 yılında duyuracağı IBM PC modeli için Intel 8088 işlemcisini seçti. Intel 1978 yılında 8080 işlemcisinin iki gelişmiş modelini üretti : 8088 ve 8086. 8086 çarpma ve bölme gibi yeni özelliklere sahipti ve 8080'in altı katı kadar olan 29.000 transistör içeriyordu. Çarpma ve bölmeyi hızlandıran 8086 ise daha karışık işlemlerin altından kalkabilecek düzeydeydi. Bütün hesaplamalar 16 bitlik olarak yapılabiliyor ve 8 bitlik 8080 işlemcisinin performansını 10’a katlıyordu. Daha sonraki dönemlerde de Intel firması işlemci pazarında liderliği kimseye kaptırmadı 32 bitlik ve son olarak 64 bitlik işlemcileri piyasaya sürdü. Intel'le beraber önceleri onun ürettiği modelleri taklit eden son dönemde ise kendi ürünlerini geliştiren AMD (Amerikan Micro Devices) ve Cyrix firmaları da işlemci piyasasında boy gösterdi. Pc pazarına alternatif ürünler üreten Apple firması da son döneme kadar ürettiği Machintosh bilgisayarlarda Motorola 6800 serisi işlemcileri kullandı.
İşlemcinin performansının belirlenmesinde en önemli faktörlerden biri saat frekansı veya hızıdır. Cpu bir dış frekans üreteci olan kuvars kristali ile sürülür. İşlemcinin temposunu oluşturan saat frekansı saniyedeki darbe sayısı ile ölçülür ve megaherz (Mhz) birimiyle gösterilir. Bir Mhz saniyede bir milyon darbeye karşılık gelir. Buna göre 40 Mhz hızında çalışan bir 80486 DX 40 mikro işlemci bir işi saniyede 40 milyon defa yapabilir.

CISC ve RISC tanımları: CISC (Complex Instruction Set Computer/Komplex Komut Kümeli Bilgisayar) işlemciler geniş ve esnek yapılı komut kümeleri içerirler. Bu özellikleri sayesinde çok farklı alanlarda yazılım geliştirmek bu işlemciler üzerinde mümkün olur. Ancak bu özellik hızlarını düşürür. RISC (Reduced Instruction Set Computer/İndirgenmiş Komut Kümeli Bilgisayar) işlemcileri ise genellikle özel bir uygulamaya yönelik (CAD/Bilgisayar destekli tasarım) gibi indirgenmiş komut setleri kullanarak daha hızlı çalışırlar. Ancak bu işlemciler farklı uygulamaları çalıştıramazlar. Yani esnek yapılı değildirler. Tüm 8086 serisi ve kişisel bilgisayarlarda kullanılan işlemciler genellikle CISC yapılıdırlar.
Mikro işlemcinin yapısını oluşturan birimler :
Kontrol birimi: Bütün komutlar buradan işletilir. İşlenen komuta göre mikro işlemci içerisindeki bir adresteki veri değiştirilir yada bir verinin işlemci içindeki başka bir bölüme aktarılması sağlanır.
İletim yolları (Bus) : İletim yolları işlemci ile bilgisayarın diğer birimleri arasındaki bağlantıları sağlayan iletkenlerdir. Üç tip iletim yolu vardır : Veri yolları (Data Bus), Adres yolları (Adress Bus), Kontrol Yolları (Control Bus).
Kaydedici (Register) : Mikro işlemci ile bellek ve giriş/çıkış (I/O-Input Output) kapıları arasındaki bilgi alışverişlerinin çeşitli aşamalarında,bilginin geçici olarak depolanmasını sağlar. Kontrol biriminin doğrudan bağlandığı bellek birimleridir.
Sayıcılar (Counter) : Sayıcılar işlemi yapılacak komut ve verilerin adreslerini taşıyarak,bilgisayarın çalışması sırasında hangi verinin hangi sırada kullanılacağını belirler.
Giriş çıkış devreleri :Bu devreler mikro işlemcinin yalnızca giriş ve yalnızca çıkış yapan veya giriş çıkış yapan birimleriyle bağlantı kurduğu devrelerdir.
Aritmetik mantık birimi (Aritmetik Logic Unit / ALU) : Mikro işlemcinin, birinci derece önemli kısmıdır. Toplama,çıkarma gibi işlemleri yapar.
Kayan nokta birimi (Floating Point Unit / FPU) : Matematik işlemci olarak ta bilinir. Cpu içinde yoğun matematik işlemleri yapan birimdir. İşlemci kesirli sayılarla uğraşırken çok vakit kaybeder. Özellikle trigonometrik,köklü ve üstel işlemlerde bir çok işlemi aynı anda yapması gerektiğinde yavaş kalır. Bu tip işlemlerin yapılması için bir yardımcı işlemci gerekir.

NASIL ÇALIŞIRLAR..

Mikroişlemciler, açma kapama anahtarı gibi çalışan milyonlarca transistörden oluşmaktadır. Bu anahtarların programlanma durumuna göre elektrik sinyalleri bunların üzerinden akar. Bu sinyaller, bilgisayarın yaptığı tüm işleri toplama, çıkarma, çarpma ve bölme gibi temel matematiksel işlemlere indirir. İşlemci de bu işlemleri en basit sayma sistemi olan ikilik düzen yani sadece 0 ve 1 sayılarını kullanarak yapar.
Bu  sayı grupları üzerinde işlem yapmak için işlemci içerisinde bir takım komut listesinden ibaret bir program mevcuttur. Bu komutlar işlemciye iki sayının çıkarılması, toplanması yönünde emir verebildiği gibi klavyeden girilen tercihlere göre bir takım komut satırını atlayıp (şartlı dallanma - conditional branch) diğer komut satırlarını icra etmeye devam edebilir. Yani klavyeden bir soru karşısında gireceğimiz “E” (evet) veya “H” (hayır) ifadelerine göre program belirli komut satırlarını icra eder veya etmez. Temel olarak, mikroişlemcinin yaptığı iş, bitler üzerinde işlem yapmak üzere komutları çalıştırmaktır...

13 Mayıs 2011 Cuma

BAZI MİKRO DENETLEYİCİLER

MARKA                                       ÖRNEK MODELLER

MİCROCHİP                               PIC16F84 ,PIC16F877 , PIC16F628 (pic mikrodenetleyiciler)
İNTEL                                          8031AH , 8051AH , 8751AHP , 8052AH , 80C51FA
MOTOROLA                               HC05 , HC11 , 6800 , 6801 , 6804 , 6805
ATMEL                                        ATtiny10 , AT90S1200 , AT90LS8535 ,ATmega161
ZİLOG                                          Z8
SGS-THOMSON                         ST6
SCENİX                                       SX18 , SX28
BASİC STAMP                            BS1-IC , BS2-IC




intel 8031AH mikrodenetleyici

 




ATMEL mikrodenetleyici




Microchip PİC denetleyiciler

PİC NEDİR?
Microchip firmasının ürettiği , adını Peripheral Interface Controller (çevresel ünite denetleme arabirimi) ifadesinden alan PIC , giriş - çıkış (input - output I/O) işlemlerini çok hızlı gerçekleştirebilecek şekilde tasarlanmış bir chip 'tir


PIC Mikrodenetleyicilerin Sahip Oldukları Bellek Çeşitleri

EPROM ( Erasable Programmable Memory ) :
EPROM belleğe elektrik sinyali ile kayıt yaptırılır. Yüklenmiş programı silip değiştirmek için EPROM silici cihazlar ile mor ötesi ışığa maruz bırakılır.

EEPROG ( Electrically Erasable Programmable Memory ) :
Microchip firmasının FLASH bellek olarak da adlandırdığı bu bellek tipinin EPROM bellekten farklı olan tarafı elektrik sinyali ile hızlı bir şekilde silme işlemi yapabilmesidir.

ROM ( Read Only Memory ) :
Bu bellek sadece bir kere fabrikasyon sırasında yazılabilirler. Maliyeti çok düşük olmasına karşın bu chip 'lerin kötü tarafı üretim sonrasında programda tespit edilecek olan tek bir hatanın tüm chip 'lerin atılmasına neden olabilmesidir.

Neden PIC mikrodenetleyici (entegre) tercih ediliyor?

* Geniş bir kitle tarafından kullanıldığı için PIC programlama ile ilgili üretilen yazılım ve donanım çok fazladır ve kolay bulunur.
* Türkiye 'de kolayca ve düşük maliyetle elde edilebilir.
* Basit elektronik devre elemanları kullanılarak hazırlanabilen donanımlar ile ( programlama kartları ) programlanabilir.
* Gerektirdiği reset , clock sinyali ve güç devreleri çok basittir.
* Çok fazla kullanıcı olduğundan internet sayesinde örnek program ve projeler incelenebilir.
                                                                            kaynak: robotiksitem.com

mikrodenetleyileri programlamak

mikro denetleyiciler minik bir bilgisayar gibi olduklarından her bilgisayarda olduğu gibi mikrodenetleyicin çalışması için işletim yazılımına ihtiyaç vardır bu yazılımları kullanıcı kendi  amacına göre mikrodenetleyicinin özellliklerinden yararlanarak hazırlar
Mikrodenetleyiciler, program dilleri ile oluşturulan kodların uygun derleyiciler kullanarak mikrodenetleyiciye aktarılması ile programlanır. Program içerisinde belirli koşullara ya da  input - output ( I / O ) uçlarından alınan sinyallere göre kararlar verdirilebilir. Elde edilen sinyallere ve verilere göre matematiksel ve mantıksal işlemler yapılarak sonuçlar tekrar I / O uçlarından digital sinyaller halinde ( 5 V = lojik 1 , 0 V = lojik 0 ) verilir.