Mikrodenetleyiciler II

BÖLÜM 4
MİKRODENETLEYİCİLER - II
Yağlıoğlu
ÖRNEK PROBLEMLER:
Aşağıda işlenen tüm konuları içerisine alan çözülmüş örnekler verilmiştir. Bu
örneklerde esas amaç, gerçek hayattaki problemlerin mikroişlemciye uyarlanmasını
sağlamaktır. Ayrıca bu örnekler programlamanın değişik durumlarını öğretmesi
açısından faydalı olacaktır.
ÖRNEKP ROBLEM 1: Bir süpermarkette kapıların otomatik çalışması istenmektedir.
Bu iş için kullanılacak optik sensörler görüş açısındaki cismi algılayınca 1, boşta iken
0 vermektedirler. Bir kapının giriş-çıkış şeklinde çalışması için gerekli devreyi
tasarlayınız. Kapı ortasında kimsenin sıkışmaması için gerekli tedbiri alınız.
Çözüm: Burada en az 3 sensöre ihtiyaç olacaktır. Bunlar kapıda biri olduğunu
algılayan sensör ile kapı tam açık ya da kapı tam kapalı şeklindeki değerleri veren
limit switch şeklindeki kapı açık-kapalı sensörleridir. Bunlar olduğunda problem
kapıda biri varsa ve kapı tam açık değilse kapı açma motorunu çalıştır. Kapıda kimse
yoksa ve kapı kapalı değilse kapı kapatma motorunu çalıştır şeklinde düşünülür.
;Otomatik kapı sorusu çözümü
;RB0,RB1 uçlarında kapıda biri var işareti veren sensörler bağlı
;RB2 de kapı tam açık sensörü bağlı
;RB3 te kapı tam kapalı sensörü bağlı
;RA0 ucunda kapıyı açan motor bağlı
;RA1 ucunda kapıyı kapatan motor bağlı
LIST
P=16F84
EQU
3h
PORTA
EQU
5h
PORTB
EQU
6h
STATUS
32
MİKRODENETLEYİCİLER - II
Yağlıoğlu
TRISA
EQU
5h
TRISB
EQU
6h
X1
org
0h
goto
START
bsf
STATUS,5
movlw
h'FF'
movwf
TRISB
movlw
00h
movwf
TRISA
bcf
STATUS,5
sil
clrf
PORTA
kontrol
movf
PORTB,w
andlw
03h
;sadece RB0 ve RB1 bilgilerini ayırmak için
btfsc
STATUS,2
;kapıda biri yoksa ANDLW işleminin sonucu
START
; Power on
; 0000
;B portu giriş
;A portu çıkış
;0 dır
ac
kapat
goto
kapat
btfsc
PORTB,2
goto
sil
movlw
01h
movwf
PORTA
goto
kontrol
btfsc
PORTB,3
goto
sil
movlw
02h
movwf
PORTA
goto
kontrol
END
33
MİKRODENETLEYİCİLER - II
Yağlıoğlu
ÖRNEKP ROBLEM 2: Bir süpermarkette iç ortam aydınlığının 100 Lüx’ün üzerinde
ayarlanması isteniyor. Bu iş için aydınlık derecesini ölçmek amacıyla aşağıda
değerleri verilen LDR kullanılmıştır. Ayrıca aydınlatma lambaları iki ayrı grup altında
birleştirilmiştir. Buna göre, ışık miktarı 80 Lüx’den az iken her 2 grup lambanı
yanması, 80-100 Lüx arasında ise 1 grup lambanın yanması isteniyor. Eğer, ışık
miktarı 100 Lüxün üzerinde ise lambaların sönük olması isteniyor. Gerekli devreyi
çiziniz ve programını yazınız.
80 Lüx’de LDR Direnci :100 K
90 Lüx’de LDR Direnci :90 K
100 Lüx’de LDR Direnci :80 K
Çözüm : Yine ADC gerektiren bir örnek. Burada aydınlığı ölçecek LDR ile bir gerilim
bölücü direnç kullanarak ve kritik aydınlık değerlerinde ADC’nin üreteceği sayı
hesaplanarak, büyük-küçük kıyaslamaları ile problem çözülür.
;Market aydınlığını 100 lüxe ayarlama işlemi
;B portu giriş yapılıp ADC üzerinden aydınlık bilgisi okunacak
;LDR ile gerilim bölücü direnç 100 K bağlanmış olup
;80 Lüx de 128 sayısı, 100 Lüx de 113 sayısı B portundan okunuyor
;RA0 1. grup lamba kontrol çıkışı
;RA1 2. grup lamba kontrol çıkışı
LIST
P=16F84
STATUS EQU
3h
PORTB
EQU
6h
TRISB
EQU
6h
PORTA
EQU
5h
TRISA
EQU
5h
da
EQU
11h
34
MİKRODENETLEYİCİLER - II
X1
org
0h
goto
START
bsf
STATUS,5
movlw
h'FF'
movwf
TRISB
movlw
00h
movwf
TRISA
bcf
STATUS,5
sil
clrf
da
siyah
movf
PORTB,w
sublw
.128
btfsc
STATUS,0
goto
beyaz
movlw
03h
movwf
da
goto
yaz
movf
PORTB,w
sublw
.113
btfss
STATUS,0
goto
gri
clrf
da
goto
yaz
movlw
01h
movwf
da
START
beyaz
gri
Yağlıoğlu
; Power on
; 0000
;B portu giriş
;A portu çıkış
35
MİKRODENETLEYİCİLER - II
yaz
movf
da,w
movwf
PORTA
goto
sil
Yağlıoğlu
END
ÖRNEKPROBLEM 3: Bir cam üretim tesisinde, hareketli bant sistemi üzerindeki
ürünlerin kalitesi 4 ayrı noktadaki optik sensörlerle kontrol ediliyor. Bu sensörlerin her
biri malzeme normal ise 0, problemli ise 1 veriyor. Her bir sensörün kendi yanında
bir adet imha pistonu mevcut olup, herhangi bir sensörden hatalı imalat bilgisi gelirse,
ona bağlı olan pistonun 1 mili saniye süreyle ileri gidip sonra tekrar geri gelmesi
isteniyor. Bu işlem için gerekli devrenin prensip şemasını çiziniz ve programını
yazınız.
çözüm:
;Cam üretim tesisi problemi
;RA0 ,RA1,RA2,RA3 uçları hatalı üretim sensörleri
;RB0, RB1,RB2, RB3 uçları piston kontrol çıkışları
LIST
P=16F84
STATUS EQU
3h
PORTB
EQU
6h
TRISB
EQU
6h
PORTA
EQU
5h
TRISA
EQU
5h
D0
equ
11h
X1
org
0h
goto
START
;Zaman bekletme için değişken
; Power on
; 0000
36
MİKRODENETLEYİCİLER - II
START
bsf
STATUS,5
movlw
00h
movwf
TRISB
movlw
0Fh
movwf
TRISA
bcf
STATUS,5
sil
clrf
PORTB
devam
movf
PORTA,w
andlw
0Fh
movwf
PORTB
call
BEKLE
goto
sil
Yağlıoğlu
;RB7,RB6,RB3,RB2,RB1,RB0 çıkış
;A portu giriş
;********************************************************
; BEKLE 1 milisaniye Altprogramı
;********************************************************
BEKLE
ZD
movlw
.40
movwf
D0
decfsz
D0,1
goto
ZD
return
END
ÖRNEKPROBLEM 4: Bir asansör sisteminin fazla yük konusundaki problemleri
çözme konusu şu şekilde ayarlanıyor. Eğer asansördeki yük 3000 kilogramdan az ise
tek motor devreye girerek asansörü çalıştırıyor. Eğer yük 3000-5000
kilogram
arasında ise iki adet motor ile sistemin çalışması sağlanıyor. Eğer yük 5000
kilogramdan fazla ise, bu durumda asansörün hareket etmemesi ve aşırı yük
alarmının devreye girmesi isteniyor. Bu problemin çözümü için kullanılan basınç
sensörü hiç yük yokken değeri 1000 ohm olup elemanın direnç değeri her 1
37
MİKRODENETLEYİCİLER - II
Yağlıoğlu
kilogramda 1 ohm artmaktadır. Bu işlem için gerekli devrenin prensip şemasını çiziniz
ve programını yazınız.
çözüm:
;Asansör için aşırı yük koruma işlemi
;B portu giriş yapılıp ADC üzerinden ağırlık bilgisi okunacak
;Ağırlık sensörü ile gerilim bölücü direnç 6000 Ohm bağlanmış olup
;3000 kg da 102 sayısı, 5000 kg da 128 sayısı B portundan okunuyor
;RA0 1. motor kontrol çıkışı
;RA1 2. motor kontrol çıkışı
;RA3 alarm çıkışı
LIST
P=16F84
STATUS
EQU
3h
PORTB
EQU
6h
TRISB
EQU
6h
PORTA
EQU
5h
TRISA
EQU
5h
da
EQU
11h
X1
org
0h
goto
START
bsf
STATUS,5
movlw
h'FF'
movwf
TRISB
movlw
00h
movwf
TRISA
bcf
STATUS,5
START
; Power on
; 0000
;B portu giriş
;A portu çıkış
38
MİKRODENETLEYİCİLER - II
sil
clrf
da
agır
movf
PORTB,w
sublw
.128
btfsc
STATUS,0
goto
orta
movlw
04h
movwf
da
goto
yaz
movf
PORTB,w
sublw
.102
btfss
STATUS,0
goto
l1
movlw
01h
movwf
da
goto
yaz
movlw
03h
movwf
da
movf
da,w
movwf
PORTA
goto
sil
orta
l1
yaz
Yağlıoğlu
END
ÖRNEKPROBLEM 5: 60 saniye süre içerisinde, istenilen süreye ayarlanabilen ve
ayarlanan süreden birer saniye aralıklarla geri sayarak süre tamamlandığında bir zili
çalan kronometre (zaman rolesi) yapılmak isteniyor. Bu işlem için gerekli devreyi
tasarlayınız ve programını yazınız.
39
MİKRODENETLEYİCİLER - II
Yağlıoğlu
çözüm:
;RA0 ucu ayar butonu her basışta 1 geri saydırır
;RA1 ucu zaman başlatma butonudur, basılınca sistem
;geri sayar ve diğer buton iptal olur
;Süre 0 olunca RA2 ucundaki zil çıkışı 1 olur
;B portunda 2 adet 4056 ile iki display bağlıdır
LIST
P=16F84
STATUS
EQU
3h
PORTB
EQU
6h
TRISB
EQU
6h
PORTA
EQU
5h
TRISA
EQU
5h
sayi
EQU
0Ch
; PORTB'ye gönderilecek sayı
D1
EQU
0Eh
; BEKLEME SAYACI 1
D2
EQU
0Fh
; BEKLEME SAYACI 2
X1
org
0h
; Power on
goto
START
; 0000
bsf
STATUS,5
movlw
0h
movwf
TRISB
movlw
03h
movwf
TRISA
bcf
STATUS,5
START
movlw 60H
movwf sayi
TOP
movf
sayi,W
movwf
PORTB
40
MİKRODENETLEYİCİLER - II
ayar
ates
say
btfsc
PORTA,0
goto
eksil
btfss
PORTA,1
goto
ayar
movf
sayi,w
movwf
PORTB
call
onluk
sifir
dur
Yağlıoğlu
BEKLE
decf
sayi,1
movf
sayi,W
andlw
0Fh
sublw
0Fh
btfss
STATUS,2
goto
sifir
decf
sayi,1
decf
sayi,1
decf
sayi,1
decf
sayi,1
decf
sayi,1
decf
sayi,1
goto
say
movf
sayi,W
sublw
0h
btfss
STATUS,2
goto
say
bsf
PORTA,2
goto
dur
41
MİKRODENETLEYİCİLER - II
eksil
onluk2
sifir2
yaz
Yağlıoğlu
decf
sayi,1
movf
sayi,W
andlw
0Fh
sublw
0Fh
btfss
STATUS,2
goto
sifir2
decf
sayi,1
decf
sayi,1
decf
sayi,1
decf
sayi,1
decf
sayi,1
decf
sayi,1
goto
yaz
movf
sayi,W
sublw
0h
btfss
STATUS,2
goto
yaz
goto
TOP
movf
sayi,w
movwf
PORTB
goto
ayar
;********************************************************
; BEKLETME ALT PROGRAMI
;********************************************************
BEKLE
movlw
.200
;200*200 lük iki döngü yaklaşık 1 saniye
movwf
D1
;kabul edilecektir.
42
MİKRODENETLEYİCİLER - II
ZD1
ZD2
movlw
.200
movwf
D2
decfsz
D2,1
goto
ZD2
decfsz
D1,1
goto
ZD1
Yağlıoğlu
return
END
ÖRNEKPROBLEM 6: Dönen platform şeklindeki bir alış-veriş reyonunda, kontrol
sisteminin reyondaki malın çok azalması veya normalden fazla olması problemleri
çözme konusu şu şekilde ayarlanıyor. Reyondaki yük 300 kilogramdan az ise tek
motor devreye girerek reyonun dönmesini
sağlıyor; eğer yük 300-500
kilogram
arasında ise iki adet motor ile sistemin çalışması sağlanıyor. Şayet yük 500
kilogramdan fazla ise bu durumda sistemin hareket etmemesi isteniyor ve yük 700
kilogramdan fazla ya da 100 kilogramdan az ise yine sistemin çalışmayıp bir ikaz
alarmının devreye girmesi isteniyor. Bu problemin çözümü için kullanılan basınç
sensörü hiç yük yokken değeri 100 ohm olup elemanın direnç değeri her 1
kilogramda 1 ohm artmaktadır. Bu işlem için gerekli devrenin prensip şemasını çiziniz
ve programını yazınız.
çözüm:
;Dönen platform için aşırı yük koruma işlemi
;B portu giriş yapılıp ADC üzerinden ağırlık bilgisi okunacak
;Ağırlık sensörü ile gerilim bölücü direnç 600 Ohm bağlanmış olup
;300 kg da 102 sayısı, 500 kg da 128 sayısı
;700 kg da 146 sayısı B portundan okunuyor
;RA0 1. motor kontrol çıkışı
;RA1 2. motor kontrol çıkışı
;RA3 alarm çıkışı
43
MİKRODENETLEYİCİLER - II
LIST
P=16F84
STATUS
EQU
3h
PORTB
EQU
6h
TRISB
EQU
6h
PORTA
EQU
5h
TRISA
EQU
5h
da
EQU
11h
X1
org
0h
goto
START
bsf
STATUS,5
movlw
h'FF'
movwf
TRISB
movlw
00h
movwf
TRISA
bcf
STATUS,5
movlw
04
movwf
da
movf
PORTB,w
sublw
.102
btfss
STATUS,0
goto
orta
movlw
01h
movwf
da
goto
yaz
START
sil
hafif
Yağlıoğlu
; Power on
; 0000
;B portu giriş
;A portu çıkış
44
MİKRODENETLEYİCİLER - II
orta
agir
yaz
movf
PORTB,w
sublw
.128
btfss
STATUS,0
goto
agir
movlw
03h
movwf
da
goto
yaz
movf
PORTB,w
sublw
.146
btfss
STATUS,0
goto
yaz
movlw
00h
movwf
da
movf
da,w
movwf
PORTA
goto
sil
Yağlıoğlu
END
ÖRNEKPROBLEM 7: Bir pic16f84 buton şeklinde çalışan bir algılayıcının önünden
geçen parçaları sayan 0-F sayıcı şeklinde çalışıyor. Ayrıca sayıcı olarak çalışan bu
pic16f84’ün 11h adresindeki sayıyı (bu sayı sayıcının ekranda gösterdiği sayıdır) bir
butona basılınca diğer bir pic16f84’ün 12h adresineaktarılmasını sağlıyor. Diğer
pic16f84 ise birinciden gelen sayıyı alıyor ve ekranda gösteriyor . Bu sistem için
gerekli devreyi çiziniz ve her iki pic16f84’te olması gereken pogramları yazınız.
(İpucu: Sayıcı kısmını, haberleşme kısmını ve sayıları ekranda gösterme kısmını ayrı
alt programlar şeklinde tasarlayınız.)
45
MİKRODENETLEYİCİLER - II
Yağlıoğlu
çözüm:
;Pic1 programı
;Pic ler arası interrupt kullanarak iletişim örneği
;1 nolu pic RB1 ucundan gelen sinyalleri sayıyor
;ve RB2 ucundaki butona basılınca o andaki sayıyı
;RB4-7 üzerinden 2. PIC’e gönderiyor.
;RA0-3 üzerinde 4056 ile display bağlı
list
p=16f84
include
"p16f84.inc"
say
equ
11h
tmp
equ
12h
tmp2
equ
13h
org
00h
goto
basla
org
04h
goto
intprg
bsf
STATUS,5
clrf
TRISA
movlw
b'00000111'
movwf
TRISB
movlw
b'01000000'
movwf
OPTION_REG
bcf
STATUS,5
movlw
b'10010000'
movwf
INTCON
clrf
say
clrf
tmp
basla
sil
;Yükselen kenar tetiklemeli RB0
;interruptlar açık, RB0 interrupt aktif
46
MİKRODENETLEYİCİLER - II
sayar
tus
tus2
bekle
intprg
movf
say,w
movwf
PORTA
btfss
PORTB,1
goto
tus2
incf
say,1
movf
say,w
sublw
0Fh
btfss
STATUS,2
goto
sayar
goto
sil
btfss
PORTB,2
goto
sayar
swapf
say,w
movwf
PORTB
bsf
PORTB,3
bsf
tmp,0
btfsc
tmp,0
goto
bekle
clrf
PORTB
goto
sayar
movwf
tmp2
clrf
tmp
bcf
INTCON,INTF
movf
tmp2,w
Yağlıoğlu
retfie
end
*******
47
MİKRODENETLEYİCİLER - II
Yağlıoğlu
;2 nolu pic programı
;PIC ler arası interrupt kullanarak iletişim örneği
;1 nolu PIC RB1 ucundan delen sinyalleri sayıyor
;ve RB2 ucundaki butona basılınca o andaki sayıyı
;RB4-7 üzerinden 2. PIC’e gönderiyor.
;RA0-3 üzerinde 4056 ile display bağlı
list
p=16f84
include
"p16f84.inc"
say
equ
11h
tmp
equ
12h
org
00h
goto
basla
org
04h
goto
oku
bsf
STATUS,5
clrf
TRISA
movlw
b'11110001'
movwf
TRISB
movlw
b'01000000'
movwf
OPTION_REG
bcf
STATUS,5
movlw
b'10010000'
movwf
INTCON
sil
clrf
say
goster
movf
say,w
movwf
PORTA
goto
goster
basla
;Yükselen kenar tetiklemeli RB0
;interruptlar açık, RB0 interrupt aktif
48
MİKRODENETLEYİCİLER - II
oku
movwf
tmp
bcf
INTCON,INTF
Yağlıoğlu
SWAPF PORTB,w
andlw
0Fh
movwf
say
bsf
PORTB,3
movf
tmp,w
clrf
PORTB
retfie
end
Örnek Sorular: Aşağıda kendinizi geliştirebilmeniz için örnek birkaç soru verilmiştir.
Örnek Soru 1: 7 segment display kullanarak bir display sistemi tasarlayınız ve bu
sistemde istenilen bir kelimeyi ekranda gösterecek programı yazınız?
Örnek Soru 2: Bir basketbol maçı için skorbord tasarlayalım. Öyle ki iki adet
butondan birincisi her basışta ekrandaki sayıyı 1 artıracak. İkincisi her basışta sayıyı
1 azaltacak. Üçüncü bir buton ise sistemi başlangıca döndürecek olsun. Ayrıca
artırma ve azaltma butonları basıldığı anda değil biraz basılı tutulunca artırma ve
azaltma işlemini yerine getirsin. Başa alma butonu ise dokunulduğu anda sistemi
başa alsın.
Örnek Soru 3: Bir elektronik termometre tasarlayınız ve uygun programı yazınız?
Örnek Soru 4: Bir ohmmetre tasarlayınız ve uygun programı yazınız?
Örnek Soru 5: Bir şifreli kilit sistemi tasarlayınız?
49