Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

VFD displayli saat projesi!!!

Başlatan vedo35, 24 Ağustos 2012, 18:48:26

vedo35

Arkadaslar coktandir yapmak istedigim birproje ama  gel gorki bunu yapmaya yetecek CCS bilgim yok :(  Ben eski dvd playerlardan cikama vfd panel displayi kullanarak (VFD displaler lcd lere nazaran daha hos) saat dakika artarsa saniye yi gosterecek saat yapmak istiyorum. DVd playerin smps de vfd yi ve pic i besleyecek. DS1302 ile olabilir ama ben aslinda PCF8563 lu yu tercih ediyorum cunku alarm fonksiyonuda var.  VFD display driverler seri girisli (ornegin : PT6315,  CLK, DATAOUT, DATAIN ve STROB girisleri var.  RTC entegresinden saat bilgisini seri olarak alip bu vfd display driverin seri girisine surulecek. Seri olarak  RTC entegresinden alinan bilgiler pic ìn diyelim c portlarina nasil surulur? Tanimlama komutlari clk, dataout, datain ve strob icin  ne turlu  tanimlamalar yapmaliyiz.  Asagidaki forum sayfasinda dusundugum seyi vatandasin biri yapmis.

http://www.61eda.com/code/viewthread.php?tid=2715
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

atomx

Geçen günlerde gezinirken rastgele bulmuştum.Benim işimi görmedi senin işini görebilir. İncelemekte fayda var.

http://www.antrak.org.tr/gazete/022006/ayhan-olgun.html

Alıntı Yap
FLORESAN EKRAN (Vacuum Fluorescent Display - VFD)

Örnek olarak iki haneli basit bir VFD:
(Resim gizlendi görmek için tıklayın.)

En baştaki ve en sondaki uçlar bütün VFD'lerde aynı. Bu uçlar arasına 3-5 volt gibi bir gerilim uygulanıp 50-100 mA gibi bir akım geçmesi sağlanır. Bu cam içindeki hava boşluğuna elektron yayılmasını sağlar.

Bu iki uç dışında diğer hiçbir uç arasında iletken sayılabilecek bir temas yok. A uçları dikkat ettiyseniz toplam 7 adet. Bu birim hane başına kontrol edilen ışıklı çizgi çeşidi sayısı. Bir A ucu bütün parçalarda aynı ışıklı çizgiyi kontrol edecek şekilde elektrodlara bağlanmıştır. B uçlarının her biri her birim hanenin üstündeki delikli maskeye bağlıdır. Cam içinden bağlantı yollarını takip ederek hangilerinin B ucu olduğunu kolayca anlayabilirsiniz.

Cam içinde elektron yayılımı başladıktan sonra önce B uçlarından birine 15 volt gibi bir gerilim uygulanır. (Bütün gerilim tanımları için en son uç toprak) Bu elektronları hanenin üstündeki metal maskeye çeker ve o hızla elektronların bir kısmı maske deliklerinden içeri süzülür. Bu elektronlar A elektrodlarından pozitif potansiyel uygulanmış olanlara doğru hızlanıp çarparlar ve bu elektrotların üstündeki floresan maddenin ışık yaymasına sebep olurlar.
Hüseyin TECER

Sdttn

#2
Herşeyden önce PT6315'i nasıl süreceğini biliyor musunuz?
Bir ara 6311 ile uğraşmaya çalışmıştım komutlarını anladım ama bir türlü hangi segmenti nasıl yakacağımı anlamamıştım 6315 ile aynı mantık galiba.

6311 için başlattığımı konu.
https://www.picproje.org/index.php/topic,34245

Donanımsal SPI'li mcu kullanırsanız daha kolay olur.
Ben de tekrar PT'li sürücülerle uğraşabilirim birlikte datasheet'i anlamaya çalışalım ne dersiniz?

nusyil

#3
http://s12.postimg.cc/5n59s3ot9/image.gif

Merhaba ben birkac ay once bu vfd ler ile biraz ugrasmistim. Elimde eski bir vhs video'nun VFD display'i vardi. Bunu, Atmel ile kontrol ettigim bir tuner'in frekans gostergesi olarak kullandim. VFD'yi surmek icin yukaridaki devrede PIC'in RA2..RA4 yazan cikislarindan itibaren olan bolumu Atmel cikislarina baglayarak kullandim,gayet guzel calisti.

Bu PT serisi entegrelerle biraz ugrastim ama Sdttn arkadasin acmis oldugu diger konuda bahsettigi gibi datasheetlerde verilen bilgiler anlasilir olmaktan uzak,sig ve biraz bastansavma.(Ingilizcem iyi olmasina ragmen).Bu sadece bu entegreler icin değil,genel olarak tum Cin isi entegrelerin datasheetleri icin gecerli. O nedenle bu entegre ile ugrasmaktan vaz gectim ve tarama yontemi ile yukaridaki devreyi kurarak isi hallettim.

Kolay gelsin.

mesaj birleştirme:: 29 Ağustos 2012, 03:23:03

Bu transistorler yerine ULN 2803 veya ULN 2004 gibi transistor dizisi entegrelerini de kullanabilirsin,daha pratik ve devre kurumu daha kolay olur. Ben bu VFD ekranlari cok seviyorum. Goruntusu tum diger ekran turlerine gore daha hos.

Ben de bu projeye katilmak isterim, bilgilerimizi paylasalim. Tekrar kolay gelsin.

vedo35

#4
Atomx verdigin cevap icin sagol ama ben zaten VFD displaylerin calisma mantigini zaten biliyorum. Uzun yillardir elimdeki VFD lerle hasir nesir oldugum icin bir nevi uzmani olduk  sayilir(..m acep  :-[ ) . Lakin ogrenemedigim  yada cok yetersiz kaldigim konu microcontroller lar. Dugumde orada zaten. 
  Sdttn ben  google da PT6311 , PT6312 ile ilgili projeler arastirirken gerek bu forumda olsun gerekse baska forum (yanilmiyorsam bir alman forum sayfasi idi) sayfalarinda epey sorular sormussunuz. Sizde benim gibi bu konuyu kafaya takmisisniz  ::) Benim ingilizcem iyi sayilir. Yani datasheetleri okurken pek zorluk cekmiyorum. O konuda yardimci olurum. Elimde eski video, dvd player, uydu alicilarindan soktugum birsuru vfd ve suruculeri ile birlikte vfd ler var. VFD displayleri  LCD ler e nazaran daha cok seviyorum. Yani daha hos ve estetik oluslarida ayri bir guzel yani.  Sirf egomu tatmin etmek  icin degisik marka (jvc, akai, philips, sony v.s...)  videolardan sokup cikardigim vfd ler var bir ara jvc hrd-540 serisi idi yanilmiyorsam, saat-zamanlayici devresi  ile birlikte sokup calistirdim. Ama cok hantal. Beslemsine ihtiyaciniz var. Besleme el kadar buyuk ve agir. Eski islemci ve islemcili vfd suruculu  oldugu icin genelde panasonic MN serisi yada NEC upd serisi kullaniliyor. +5, +12v ve -35 gibi (vfd grileri icin)  orjinal beslemesini kullanmak zorunda kaliyorum. Besleme + kontrol devresi + surucu entegreleri ile oldukca kaba. Halbuki tayvanli princenton amca bunun en basitini ve smd modelini yapmis. Lakin Nusyilìn de dedigi gibi datasheet i oldukca basit ve yetersiz. Ben yinede googledan pt63xx serisi vfd suruculerin segment komutlarini buldum. Princenton pdf ini koymus bak haksizlik etmeyelim yinede  ::) su linten pdf ine bakin :

http://www.google.nl/url?sa=t&rct=j&q=pt6312&source=web&cd=2&ved=0CCsQFjAB&url=http%3A%2F%2Fwww.princeton.com.tw%2Fdownloadprocess%2Fdownloadfile.asp%3Fmydownload%3DPT6312.pdf&ei=Oek9ULeEBKmf0QXQ3oDYAg&usg=AFQjCNHNG-Q0si18dHlKxkk1MKSmdfRIHg

Burada sayfa 5 te komutlarini anlatmis. :

Display mode settings:
000: 4 digits, 16 segments
001: 5 digits, 16 segments
010: 6 digits, 16 segments
011: 7 digits, 15 segments
100: 8 digits, 14 segments
101: 9 digits, 13 segments
110: 10 digits, 12 segments
111: 11 digits, 11 segments

birde syafa 6 da Display Mode and RAM Address. Burada ram adresleride mevcut . Sayfa 10 da Dimming quantity settings:
000: Pulse width = 1/16
001: Pulse width = 2/16
010: Pulse width = 4/16
011: Pulse width = 10/16
100: Pulse width – 11/16
101: Pulse width = 12/16
110: Pulse width = 13/16
111: Pulse width = 14/16

ve diger sayfalardada  programci icin yeterli bilgi mevcut oldugunu dusunuyorum. Onemli olan bunu pic 16f877 gibi bir mcu ya yazmakta kaliyor. Yani pcf8563 yada ds1302 den gelen bilgileri bu komut seti ile surucuye bildirmek ve surucununde hangi segmenti yakip sondurmesinde kaliyor. Ben  cinli bir sitede atmega ile yapilmis  saat devresini gordum onlarda pt6311 i kullanmislar. Bu pt6312 belki segment komut adresleri farkli olabilir ama  mantik ayni. Su linki kast ediyorum:

http://www.amobbs.com/thread-1127728-1-1.html
burda vfd init adresleri su:

flash unsigned char data_l[6]={0x0e,0x20,0x86,0x86,0x8c,0x8a}; //1~5/0
flash unsigned char data_h[6]={0x46,0x20,0x45,0x43,0x03,0x43}; //1~~5/0
flash unsigned char data_a_l[10]={0x0e,0x20,0x86,0x86,0x8c,0x8a,0x8a,0x06,0x8e,0x8e}; //1~9/0
flash unsigned char data_a_h[10]={0x46,0x20,0x45,0x43,0x03,0x43,0x47,0x02,0x47,0x43}; //1~9/0
flash unsigned char data_a_hd[10]={0xc6,0xa0,0xc5,0xc3,0x83,0xc3,0xc7,0x82,0xc7,0xc3}; //1~9/0 with Dot

void  vfd_data16()                   /*   ?¡Ó¡Ó¡LicR¢DO?l£g{¡±C   */
{ 
  unsigned char i;
  unsigned char temp;
    STB_L;
    vfd_cmd(0x70);  //data setting
    STB_H;
    nop
    nop
    STB_L;                                 
    vfd_cmd(0xdb);  //address setting
    nop
    nop     
   for (i=0;i<32;i++)
  {
   CLK_L;
   nop;
   temp=0x01&0x01<<i;
   if(temp!=0)
    {
    DIN_H;
	}
	if(temp==0)
	{
	DIN_L;
	}
   CLK_H;
   nop;
   }
 }  

 
void  vfd_data(unsigned char vfd_data0)                   /*   ?¡Ó¡Ó¡LicR¢DO?l£g{¡±C   */
{ 
  unsigned char i;
  unsigned char temp;
    
   for (i=0;i<8;i++)
  {
   CLK_L;
   nop;
   temp=vfd_data0&0x01<<i;
   if(temp!=0)
    {
    DIN_H;
	}
	if(temp==0)
	{
	DIN_L;
	}
   CLK_H;
   nop;
   }
 }  

void vfd_cmd(unsigned char vfd_cmd0)
 { 
  unsigned char i;
   unsigned char temp; 
   for (i=0;i<8;i++)
  {  
   CLK_L;
   nop;
   temp=vfd_cmd0&0x01<<i;
   if(temp!=0)
    {
    DIN_H;
	}
    if(temp==0)
	{
	DIN_L;
	}
   CLK_H;
   nop;
   }
}  

void vfd_init(void)
{
    STB_L;
    vfd_cmd(0x3a);  /*  6digits!A16segments?¢DU?O|!  */
    STB_H;
    nop
    STB_L;                                 
    vfd_cmd(0x70); 
    STB_H;
    nop
    STB_L;                                        /* ?¢DU¢D?¡Ó`?O|!!A?Ou|a¡±}??W  */
    vfd_data(0xc0);                                    /*    ?¡Mm|a¡±}?00H?cl    */
    nop
}

void vfd_data_s(unsigned char adds, unsigned char data_l,unsigned char data_h)
{
    STB_L;
    vfd_cmd(0x70);  //data setting
    STB_H;
    nop
    nop
    STB_L;                                 
    vfd_cmd(adds);  //address setting
    nop
    nop    
  vfd_data(data_l);//LOW4 b
  vfd_data(data_h);//HI4  8
    STB_H; 
    CLK_L; 
}



 void data(void)
 {  
  //vfd_init();      
  STB_L;
  vfd_data(0x00); //A -B RDS kHz Mhz L C R  
  vfd_data(0x00); //LFE LS S RS
  vfd_data(0xff);//?
  vfd_data(0x0e);//LOW4 b
  vfd_data(0x46);//HI4  8  No.1
  vfd_data(0x00);
  vfd_data(0x0e);//LOW4 b
  vfd_data(0x46);//HI4  8
  vfd_data(0x00);
  vfd_data(0x0e);//LOW4 b
  vfd_data(0xc6);//HI4  8
  vfd_data(0x00);
  vfd_data(0x0e);//LOW4 b
  vfd_data(0x46);//HI4  8
  vfd_data(0x00);
  vfd_data(0x0e);//LOW4 b
  vfd_data(0xc6);//HI4  8
  vfd_data(0x00);
  vfd_data(0x0e);//LOW4 b
  vfd_data(0x46);//HI4  8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8 No.7
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 8
  vfd_data(0x00);//HI4  8 No.8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 8 L
  vfd_data(0x00);//HI4  8 No.9
  vfd_data(0x00);//DOT
  vfd_data(0x00);//DIGITAL DTS PRO-LOGIC II MIC DVD V CD 
  vfd_data(0x00);//MP3 PLAY PAUSE INTRO LOCK  
  nop
  STB_H;
  nop
  nop
  nop
  STB_L;
  vfd_cmd(0x8c);    /*  ??DU?,14/16?? */
  STB_L;                
  CLK_H;     
 }  
 
 void cls_vfd(void)
 {  
  //vfd_init();      
  STB_L;
  vfd_data(0x00); //A -B RDS kHz Mhz L C R  
  vfd_data(0x00); //LFE LS S RS
  vfd_data(0x00);//?
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8  No.1
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 b
  vfd_data(0x00);//HI4  8 No.7
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 8
  vfd_data(0x00);//HI4  8 No.8
  vfd_data(0x00);
  vfd_data(0x00);//LOW4 8 L
  vfd_data(0x00);//HI4  8 No.9
  vfd_data(0x00);//DOT
  vfd_data(0x00);//DIGITAL DTS PRO-LOGIC II MIC DVD V CD 
  vfd_data(0x00);//MP3 PLAY PAUSE INTRO LOCK  
  nop
  STB_H;
  nop
  nop
  nop
  STB_L;
  vfd_cmd(0x8c);    /*  ??DU?,14/16?? */
  STB_L;                
  CLK_H;     
 }  
 
/*
  	vfd_data_s(0xc0,0xff,0xff);  A-B/RDS/KHZ
	vfd_data_s(0xc3,0x20,0x20);  1
	vfd_data_s(0xc6,0x20,0x20);  2
	vfd_data_s(0xc9,0x20,0x20);  3
	vfd_data_s(0xcc,0x20,0x20);  4
	vfd_data_s(0xcf,0x20,0x20);  5
	vfd_data_s(0xd2,0x20,0x20);  6
	vfd_data_s(0xd5,0x20,0x20);  7
	vfd_data_s(0xd8,0x20,0x20);  8
	vfd_data_s(0xdb,0x20,0x20);  9
	vfd_data_s(0xde,0xff,0xff);  DIGITAL/PRO LOGI/DVD

	 0    1    2    3    4    5    6    7    8    9
	0x0e,0x20,0x86,0x86,0x8c,0x8a,0x8a,0x06,0x8e,0x8e  Low bit,up-part
    0x46,0x20,0x45,0x43,0x03,0x43,0x47,0x02,0x47,0x43  Hi bit, low-part
	0xc6,0xa0,0xc5,0xc3,0x83,0xc3,0xc7,0x82,0xc7,0xc3  //with dot
	*/


simdi ben 16f877 icin burada ne gibi bir degisiklikler yapmam lazim?  Yani elimizde un var yag var sadece helva yapmamiz lazim.  ;) Pic CCS icin. Assembliyi anlamiyorum .
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

atomx

verdiğim linkte kullanımı için ccs c'de yazılmış kodlar vardı sanki


http://www.antrak.org.tr/gazete/022006/cizimler/ayhan-olgun/DOSYA.zip

bilemedim elimden gelen bu kolay gelsin,başarılar
Hüseyin TECER

Sdttn

Bit bang spi yapmış mantıklı değil hiç anlamıyorum donanımsal bir birim varken yazılımsal olarak bir şeyler yapmaktan.

vedo35

STTN peki senin onerin nedir? Hangi spi cikisli mcu kullanalim? Ve bu mcu nun komutlarini biliyormuyuz? Ogrenmesi, yapmasi kolaymidir? Derleyicisi nedir nerdedir? Sil bastan yeni bir mcu nun komut yapisini ogrenelim ondan sonrada vfd ye seri olarak surmesini yapmaya calisalim. Oysa elin polanyalisi, cinlisi atmega ile nasil yapiyorsa bizde pekala pic mcu ile yapmamiz mumkun. Sorun yukaridaki verdigim komutlari pic mcu ya donusturmek..  ;)
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

Sdttn

#8
CCS C de spi fonksiyonları.

/Komutların nasıl kullanıldığı CCS yardımında ayrıntılı açıklanmış.
setup_spi();
spi_read();
spi_write();
spi_data_is_in();


Hem donanımsal hem de yazılımsal olarak spi iletişimi yapılabiliyor bu komutlarla. her seferinde 1 byte veri alma/gönderme yapılabiliniyor.
Bu komutlarla PT63xx driveri yazılabilir ama hala segmentlerin nasıl yakılacağı.

PT6311'in datasheetinde aşağıdaki tabloyu nasıl kullanacağımı anlamadım bunlar segment adresleri galiba.


Bir de şöyle birşey var.
4094 ile yapmış 74hc595 in aynısı fakat çıkış gerilimi ttl seviseinde değil daha yüksek vfd2yi sürecek kadar. VFD geriliminide PWM ile MCU ile üretmiş adamın devresi sadece 5 volt ile çalışıyor.



16F877'de SPI donanımsal pinleri;

CLK => RC3/SCK/SCL 18. pin
DATAOUT => RC5/SDO 24. pin
DATAIN => RC4/SDI/SDA 23. pin

STRB pini aktif low'dur, data okunup yazılacağı zaman 0 olması lazım MCU daki herhangi i/o pini bu iş için kullanılabilir birden fazla spi cihaz kullanılacağı zaman her cihaz için ayrı strb pini belirlenir. Bu pin bazı yerlerde CE, CS, SS olarak da geçer.
Yanlışım varsa bilen uyarsın.

http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

vedo35

evet onlar segment adresleri. Yanliz clock sinyali kac khz olacak peki? Yani vfd lerde lcdler gibi refresh e ihtiyaci var.
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

Sdttn

Saat frekansı sadece iletişim için. Display tarama için değil. Tarama şini entegre kendi içinde hallediyor olmalı çünkü ayarlarda duty sycle registeri var.

vedo35

Pardon dogru soyluyorsun. Bir anlik dalginligima gelerek yazdim.sdttn benim yukarida verdigim kodlarda oynama yapma firsati buldunmu? Bu gidisle verecem allahin cinlisine parayi yaptiracam en sonunda. Balsams bir separate bogus yol alamadik hala :))
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

Sdttn

Elimde UPD16312 NEC marka entegre var onunla uğraşacağım hemen hemen bu PT63xx lerle aynı hatta PT6312nin aynısı bu PTler necin kopyası büyük ihtimalle.
VHS çalara bağlı hiç sökmeden kendi power supplyini kullanarak deneyler yapacağım gelişmeleri buraya yazarım.
Datasheet :
http://www.alldatasheet.com/datasheet-pdf/pdf/6817/NEC/UPD16312GB-3B4.html

Yol alamadık deme veri mantığını anladım önce adres gönderiliyor sonra bilgi. Adres bilgisi istenirse gönderilmiyor ve entegre ilk adresten yazmaya başlıyor. Entegrenin başlangıç ayarlarıyla ilgili. Az kaldı bir driver yazacağım bu PT63'ler için.

vedo35

Evet hadi bakalim. Ben inan hic firsat bulamadim. Cunku diger islerle ugrasmaktan firsat bulamiyorum. bu upd serisi benim elimdede var. Ama gordugum kadari ile prensip ayni ancak segment adresleri farkli.  PT serisi en populer olani. PT serisi cozulurse farkli markalar corap sokugu gibi gelecek diye dusunuyorum. Kolay gelsin.
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.