MSP430 ile 3310 lcd uygulaması ve sıcaklık ölçümü

Başlatan Erhan YILMAZ, 25 Ocak 2011, 00:05:07

Erhan YILMAZ

Finallerin bitmesiyle ara tatile girince biraz boş vakte kavuştum.Bu boş vaktimde çizgi tagemin yarışmasına katıldığımız için dağıtılan launchpad kit ile uğraşmaya karar verdim.Kitin üzerinde TI'nin msp430g2231 ve ayrıca yedek olarak msp430g2211 denetleyicileri var. Kitin fiyatı ise sadece 5 dolar bildiğim kadarıyla dünyanın en ucuz geliştirme kiti.Parasının hakkını mislice veren bir kit.Launchpad kit ile ilgili özelliklere ve çeşitli uygulamalar www.fatihinanc.com adresinden ulaşabilirsiniz.Uygulamamda bu kart ile 3310 ekranı sürme işlemini gerçekleştirdim.Ayrıca denetleyicinin içinde bulunan sıcaklık sensörü ile ortamın sıcaklığını ölçüp ekrana yazdırdım.Uygulamayı msp430 ile 3310 ekranı kullanımına örnek olsun diye gerçekleştirdim.3310 ekranı kütüphane dosyaları ayrı olduğundan diğer uygulamalarınıza kolayca ekleyebilirsiniz.Ekran sürme işlemi yazılımsal spi kullanılarak yapıldığından ekran denetleyicinin istenilen pinlerine bağlanabilir.Kodlar IAR MSP430 idesinde yazılmıştır.Uygulamanın dosyalarına burdan ulaşabilirsiniz.

/****************************************************************
*  isim    : MSP430 ile 3310 lcd denemesi                       *
*  Yazar   : Erhan YILMAZ                                       *
*  Tarih   : 24-01-2011                                         *
*  Açıklama:Bu uyguluma Launchpad(msp430g2231)Kiti ile 3310 lcd *
*  ekranı deneme uygulamasıdır.Ayrıca uygulamada denetleyicinin *
*  dahili sıcaklık sensörü kullanılarak ortamın ısısı ölçülüp   *
*  ekranda görüntülenir. 					*
****************************************************************/

#include <io430x22x2.h>
#include "3310.h" 

char birler,onlar,yuzler;
long ham,derece;

void main( void )
{
    WDTCTL = WDTPW + WDTHOLD; //Watchdog timer durduruluyor.
    P1DIR = 0xff;  //PORT1 hepsi çıkış.
	// Dahili 8mhz osilatör seçiliyor.
    BCSCTL1= CALBC1_8MHZ;
    DCOCTL = CALDCO_8MHZ; 
	// AD çevirici ayarları
    ADC10CTL1 = INCH_10 + ADC10DIV_3;    
    ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON ;
    //////////////////////////////////////////////////////
    nokia_hazirla();
    nokia_lcd_git(6,0);
    nokia_yazi_yaz("ERHAN YILMAZ");
    nokia_lcd_git(9,1);
    nokia_yazi_yaz("MSP430 3310");   
    nokia_lcd_git(6,2);
    nokia_yazi_yaz("LCD Denemesi"); 
 while(1) // sonsuz döngü
    {
         ADC10CTL0 |= ENC + ADC10SC;          // AD çevrimi başlat 
     if(ADC10CTL0 & ADC10IFG)			 // AD çevrim bittimi?	
      { 
        ADC10CTL0 &= !ADC10IFG;			// çevrim bayarğını temizle
        ham = ADC10MEM;		// sıcaklığı oku
        derece = ((ham - 673) * 423) / 1024;	//Sıcaklığı dereceye çevir.
        //Okunan sıcaklık değerini basamaklarına ayır ve lcd ekranda görüntüle
	onlar=(derece%100)/10+0x30;	
        birler=(derece%100)%10+0x30;			
        nokia_lcd_git(6,3);
        nokia_yazi_yaz("Sicaklik=");
        nokia_karakter_yaz(onlar);
        nokia_karakter_yaz(birler);
        nokia_karakter_yaz('C');
        // derece işaretini ekranda göster
	nokia_veri_yaz(0x00);
        nokia_veri_yaz(0x06);
        nokia_veri_yaz(0x09);
        nokia_veri_yaz(0x09);
        nokia_veri_yaz(0x06);
        nokia_veri_yaz(0x00);        
      }
   }
}


[IMG]http://img823.imageshack.us/img823/6241/msp3310.jpg[/img]

fatihinanc

Tebrikler Erhan hocam gayet basarili bir calisma olmus.
Elinize saglik.

Bu uygulamayi ben de proteusta gerceklestirmistim ama burada duzgun bir 3310 ekrani bulup bunu launchpad ile deneyememistim.

Msp430 un flash hafizasi dusuk oldugundan dolayi kodu biraz kisitlamak gerekiyordu galiba.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Teşekkürler hocam.Bende derlerken hafızayla ilgili hata verir sandım fakat tam yetti. Toplam 2000 küsür byte yer kaplıyor.Benimde ekran elime yeni geçti biyerden.Bu aralar 3310 ekranı bulmak gerçekten sorun oluyor.

fatihinanc


Evet 3310 ekrani bulmak gercekten problem.

Aslinda msp430g2231 in kod hafizasi tam 2kb ama...
Demek ki tam ucu ucuna yetiyor

Bu arada hangi derleyici ile dendiniz?
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Byte olarak 2048 byte yapıyor işte tam sınırda.Derleyici olarak iar kullandım.Css ağır çalışıyordu.İarda tam antika :) kod yazarken renklendirme falan yok.Bilmiyorum belki ayarlanıyodur.Sade olması güzel ama iar ile devam ederim herhalde.

fatihinanc

Tam sinirdaymis :)

Evet IAR gorunum olarak daha eski ama kod optimizasyonu olarak gercekten basarili...

Kod renklendirmesi var aslinda kendiniz anhtar sozcukleri "su renk olsun" diye belirleyebiliyorsunuz.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Bencede iar daha iyi gibi duruyor.Ben biraz ayarlarına bakayım.Renklendirmesi varsa güzel olur.

fatihinanc

#7
Editör ekranına sağ tıklayıp  "options" dedikten sonra "editor" sekmesinden yapabilirsiniz.



Ek : Bu arada yukarıda verdiğiniz proje dosyalarının olduğu linkte bir problem var.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Hepsine ayrı ayrı renklendiririm artık. :) Teşekkürler hocam.

aykut54

Saygıya değer değerli yönetici kardeşlerimizden bir isteğim olacak...

MSP mikroişlemciler için bir başlık açarmısınız? MSP ile ilgili bilgi proje kod bu başlık altında toplayalım...

Picproje ailesine selamlar

subram

hocam elinize sağlık güzel olmuş.

elimde bir adet MSP430 launchpad var.  bununla birşeyler yapayım dedim. derleyici indirdim kurdum. örnek programları indirdim. bir bakayım nasıl oluyor diye rasgele bir tane programı yüklemeye çalışıyorum ama nafile. http://www.mcu-turkey.com/?p=852 linkteki yazı takip ettim ama versiyon farkı var. belli noktadan sonra değişik şeyler çıkıyor. Araç çubuğundan Build Active Project'i tıklıyorum bişey olmuyor. debug butonuna basıncada linkteki http://img9.imageshack.us/f/adszkede.jpg/ hatayı veriyor..   ne yapmak gerekir fikri yada bilgisi olan var mı?
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

trhmt

kodda ki adc ayarlamalarını ve sıcaklığı dereceye çevirirken yapılan hesaplamayı anlatabilir misiniz acaba?  ayrıca dosyalar için verilen sayfa açılmıyor...

Erhan YILMAZ

Bağlantıyı düzelttim. Sıcaklık hesaplaması denetleyicinin kendi datasheetinde yazan işlemlerdir.Adcyi dahili sıcaklık sensörünü okumak için kurunca sonrasında okunan değer üzerinde belirtilen işlem yapılınca derece cinsinden sıcaklık değeri elde edilir.Adc ayarları da dahili sıcaklık sensörünü okumak için yapılan ayarlardır.Direk örnek koddaki ayarları kopyaladım.Datasheetinden bakılıp işlevlerini öğrenilebilir tam hakim değilim.

trhmt

teşekkürler... bi sorum daha olacak ben sıcaklığı 7 segmnet display de göstermek istiyorum. bu yüzden değişkenleri char değil de int yapıyorum ama olmuyor.? char olarak nasıl kullanacağım acaba? ya da nasıl yapmalıyım o kısmı?

Erhan YILMAZ

7 segmenttede yapsan char işini görür benim yaptığımda yanı şey okunan değeri onlar birler diye iki basamağa ayırıyorum. İki basamakta da 0*9 arası bi değer olabilir. bu değerlere göre segment displayde aynı şekilde görüntüleyebilirsin.