Assembly dilinin anlaşılması ve 7 segment displaylerin kullanılması için güzel bir uygulama olduğunu düşünüyorum. Kodları ben yazdım. Yorum kısımlarında açıklamalar yaptım.  0 Dan 9 a kadar sayıyor. Ayrıca isterseniz mantığını anladıktan sonra sizde tersten saydırma yada displayle farklı uygulamalar yapabilirsiniz.

Her bir sayı arasında ki geçiş için 1 sn bıraktım. Bekle komutunu her yazdığınızda 0.5 sn bekleme süresi artacaktır.

display

 7 segmenti yandaki şekilde ki gibi gösterebiliriz. Piyasada 2 çeşit 7 segment display bulunuyor. Anot ve katot olmaktadır. Bu şekilde kiler anot displayler benim projede kullandığım da anot displaydi.

Boş uçlar toprak msp430 veya kullandığınız farklı bir işlemci ile yaptığınızda toprak noktasını kullanabilirsiniz. Bağlantılarınızı  yaptarken pt ucunu kullanmadım o displayin sağ alt kısmında kalan noktanın yanmasını sağlıyor.

Bağlantılarınızı direk launchpad üzerinden yapabilirsiniz. Launchpad verdiği gerilim fazla olmadığından direnç kullanmadım fakat direnç kullanmanız Displayin zarar görmesini engelleyecektir. Garantiye almak için direnç kullanabilirsiniz. 220 ohm veya 33o ohm gibi değerler işinizi görecektir.

7 segment display uygulaması

Burda sayıları nasıl portlarla bağdaştırdığımı anlamak için şu yazıyı okumanızı öneriyorum.

Sayı tabanları arasında ki geçiş işinize yarayacaktır.

Bağlantılara gelince

; P1.0 —> a

; P1.1 —> b

; P1.2 —> c

; P1.3 —> d

; P1.4 —> e

; P1.5 —> f

; P1.6 —> g

; GND —> GND

Bu da videosu:

http://www.youtube.com/watch?v=sRegpYM-NFM

;*******************************************************************************
; MSP430 Assembly Sayı 0-9 Devresi
; Açıklama: 7 segment display ile saydırma işlemi yapıldı. Assembly kodları kullanıldı
; P1.0 ---> a
; P1.1 ---> b
; P1.2 ---> c
; P1.3 ---> d
; P1.4 ---> e
; P1.5 ---> f
; P1.6 ---> g
; GND ---> GND
;
; SelimErkan
; http://www.elektronikhobi.net
; Nisan 20132
; Derleme IAR Embedded Workbench Version: 5.51
;*******************************************************************************
#include "msp430g2553.h"
;-------------------------------------------------------------------------------
ORG 0F800h ; Program Reset
;-------------------------------------------------------------------------------
RESET mov.w #0280h,SP ;
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
ilkayar bis.b #0FFh,&P1DIR ; Kullanacağımız portlar belirlendi.
bic.b #0FFh,&P1OUT ; Program çalışmaya başladığında
;yanan segment olmaması için tüm
;segmentler söndürüldü
AnaKod mov.b #03Fh,&P1OUT ; 0 için 16lık tabanda açık portlar
call #bekle ; Bekle komutu ile 0.5sn bekleme
call #bekle ;1 sn ye tamamlandı 2. kullanım
mov.b #006h,&P1OUT ; 1 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #05Bh,&P1OUT ; 2 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #04Fh,&P1OUT ; 3 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #066h,&P1OUT ; 4 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #06Dh,&P1OUT ; 5 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #0FDh,&P1OUT ; 6 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #007h,&P1OUT ; 7 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #07Fh,&P1OUT ; 8 için 16lık tabanda açık portlar
call #bekle
call #bekle
mov.b #06Fh,&P1OUT ; 9 için 16lık tabanda açık portlar
call #bekle
call #bekle
jmp AnaKod ; Başa dön

bekle mov.w #0ffffh,R5 ;R5 bekleme yapması için değer atandı
ss dec R5 ;R5 değeri 1 er azaltıldı.
jnz ss ;Sıfır değilse tekrar azaltmaya gönderildi.
ret ;sıfırsa bu kod çalışır yani bekle kodunun
; çağrıldığı yere gider

ORG 0FFFEh ; MSP430 RESET Vector
DW RESET ;
END

1 Yorum

CEVAP VER

Please enter your comment!
Please enter your name here