2 adet kaskat bağlı (daisy cain) 74HC595

Başlatan MC_Skywalker, 19 Ağustos 2017, 13:17:31

MC_Skywalker

74HC595 ile CD4543 (BCD to 7Seg decoder LCD driver) sürmek istiyorum fakat daha önce hiç kaskat bağlı (daisy cain) 74HC595 ile çalımadım.  bana bu çalışmayı konu hakkında bilgisi olan birisi anlatabilirmi.



deneme için 0-99 arası sayıcı yapıp (shiftout)  74HC595'i ve iki adet CD4543 bağladığımda çalışmada sıkıntı olmuyor. 0-9999 sayıcıyapıpı faka 2 adet 74HC595 ve 4 adet CD4543 kullandığımda beceremedim. İkinci 74HC595 te ilkinde ki değerleri sayıyor.



#config
    __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _CP_OFF
#endconfig


TRISB = %00000000

symbol clk = PortB.0
symbol DT = PortB.1
symbol trnsf = PortB.2
rakkam var byte
sayi var word
n    var byte
x    var byte
PortB=0

basla:
for sayi = 1 to 9999
pause 500
Gosub display
next sayi

AL: lookup x, [0000,0001,0010,0011,0100,0101,0110,0111,1000,1001], sayi :return

display:
X = (sayi dig 3)
shiftout DT,clk, 1,[sayi]
high trnsf:pauseus 2:low trnsf
X = (sayi dig 2)
shiftout DT,clk, 1,[sayi]
high trnsf:pauseus 2:low trnsf
X = (sayi dig 1)
shiftout DT,clk, 1,[sayi]
high trnsf:pauseus 2:low trnsf
X = (sayi dig 1)
shiftout DT,clk, 1,[sayi]
high trnsf:pauseus 2:low trnsf
return
end

ete

Dikkat edilmesi gereken tek nokta şu. 595 lere verdiğiniz ilk byte bilgisi (byte-1 diyelim) birinci 595'e gider. İkinci byte'ı (Byte-2) verdiğiniz zaman Byte-1 bilgisi ikinciye geçer ve Byte-2 birinciye yerleşir. Kısaca verilen her byte diğerini öteler.
Ben genellikle aksine bir durum yok ise kaç tane 595 bir birine bağlamış ise bir seferde o kadar byte yollarım.
Diyelimki 4 adet 595 i bir birine bağladım. Bu durumda tek bir shiftout komutu ile 4 byte birden yollarım.
İlk verdiğim byte en sondaki 595 e geçer çünki sonradan gelen byte'lar onu sona kadar ötelerler.
Bu arada ilk ve son tabirini şöyle ayarlamak gerekir. Data girişi olan 595 ilk olandır. Zincirin sonunda sonunda yer alan da son olandır.
Ete

MC_Skywalker

kodu değiştirip yeniden yazdım fakat bu sefer 99 dan sonra  bir 20 daha sayıp sonra üçüncü basamak geliyor daha sonra normal devam ediyor bir 99 daha saydıktan sonra yine aynı oluyor ve üçüncü basanak artıyor.

biraz ara vereyim kafam şurup gibi oldu. 


#config
    __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _CP_OFF
#endconfig


TRISB = %00000000

symbol clk = PortB.0
symbol DT = PortB.1
symbol trnsf = PortB.2
sayi var word
binhold0 var byte
binhold1 var byte
Tempsayi1 var byte
Tempsayi0 var byte
PortB=0

basla:
for sayi = 0 to 10000
if sayi >= 10000 then sayi = 0
Tempsayi0 = sayi
Tempsayi1 = sayi /100
binhold0 =((tempsayi0/10)<<4) +(tempsayi0//10)
binhold1 =((tempsayi1/10)<<4) +(tempsayi1//10)
trnsf = 1
shiftout DT,clk, 1,[binhold1]
shiftout DT,clk, 1,[binhold0]
trnsf = 0

pause 100
next sayi
end

ete

Öncelikle işi kolaylaştırmak açısından  Birler, Onlar,Yuzler ve Binler isimli 4 adet byte değişkeni tanımla. Digitleri hesap yolu ile değil DIG komutu ile yakala.
Aşağıdaki kodu bir dene istersen;
basla:
for sayi = 0 to 10000
  Birler=SAYI DIG 0
  Onlar=Sayi Dig 1
  Yuzler=Sayi DIG 2
  Binler=Sayi Dig 3

  TempSayi0=(Onlar<<4)+Birler
  TempSayi1=(Binler<<4)+Yuzler
  Shiftout DT,CLK,1,[Tempsayi0,Tempsayi1]
  Pulsout trnsf,1
  Pause 100
Next
Goto basla
End


ete


MC_Skywalker

ete hocam sağolun. proteusta sorunsuz çalıştı. LCD'ler gelince gerçek dünyada deneyeyim.

Bu arda başka bir soru sormak isitiyorum. iç ositörü kullanırken OSCOUT pininden clk çıkışı alıp kullandınız mı?

1/4 iç ositör oscout çıkışını kullanıp lcd üretisine göre beli frekans (60-100Hz) elde etmek için ihtiyacım olcak.

umitco

#5
  595 ile direkt sürülebilirken arada 4543 kullanılmasının getirisi nedir ?

   Ek olarak Tpic595 in 16 çıkışlı olanı varmı ?

MC_Skywalker

#6
Alıntı yapılan: umitco - 20 Ağustos 2017, 12:21:52
  595 ile direkt sürülebilirken arada 4543 kullanılmasının getirisi nedir ?




Bu LCD leri direkt LED display gibi süremiyorsun. içinde LCD sürücü olan BCD den 7 seg çevirici kullanmak gerekli. Ya içinde LCD sürücü olan MCU kullanmalısın yada CPLD/FPGA kullanıp kendi çözümünü üretmen gerekli. 

ete

Osc clk çıkışı kullanmadım hiç ama kullanılabilir.
Senin LCD 4 adet 595 ile sürülebilir. Her birinden
7 segment bilgisi çıkartacaksın.
Ete

MC_Skywalker

ete hocam keşke dediğiniz gibi kolay olsa.  Bu LCDler com ucundan 60-100 Hz sinyal istiyor. Segment girişleride bu kare dalga ile uymlu olmalı.

Aktif edilecek segment kolları bu com sinyalinin 1 olduğu anda 0 olmalı.



LCD'nin COM ucuna giden sinyali CD4543'ün Phase girişine verdiğimizad drive kısmı bunu yapıyor.

onurinci

birde çok bacaklı çip kullanarak halletmişler..

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

MC_Skywalker

#11
similasyonds denemiyorum. bendeki prteusun dosyaları bazı bozulmuş. 

LCD ler DC ilede çalışmakta fakat panelin ömrü kısalıyor.

Bu adam adruino ile CD4543 kullanmayıp direkt sürdüğünde.



Alıntı Yap
The configuration for Liquid Crystal Display Static Drive technique is that one side of all of the Liquid Crystal Display segments are tied to a common, or backplane, and the other side of each of the segments are routed to individual connection points that are tied to the driver control circuitry. This method uses a large number of interconnects and is not feasible for complex displays, but it does produce the best looking display.


Static Drive LCD Glass

LCD's require an AC drive voltage with virtually no DC component. Segments are controlled by the magnitude of the AC voltage across the LCD segment, but there must always be AC voltage across ALL segments of the LCD.  Prolonged DC operation may cause electrochemical reactions inside the displays which will cause significantly reduced life. The initial indications of display degradation because of excessive DC current is a loss of alignment along the edges of some of the characters. The visual indication will be a "fuzzy" appearance of some of the characters.

The TN LCD is an RMS voltage responsive device, that is, the contrast of a given segment is dependent upon the RMS value of the applied voltage across it, measured with respect to the common plane. This fact, which seems obvious now, is very important when discussing drive schemes.

Drive frequencies for direct drive displays are typically between 30Hz and 100Hz. Depending on the display size and design, displays can be operated at higher frequencies, but this will result in increased power consumption. LCDs portray a capacitive load, which reduces the load impedance as frequency increases.  However, operation below 30Hz typically results in display flicker

LCD's can be overdriven by a combination of voltage and frequency, which will result in cross talk or "ghosting". Ghosting is the appearance or partial activation of an "off" segment. This condition occurs when high drive voltage and frequency are applied. Since the current is directly proportional to the frequency, there is a voltage-frequency product which must not be exceeded. These values are very dependent on the design and layout of any given part, so proper display design and choice of driving conditions is important. It is also very important that all unused segments be connected to the backplane, and not allowed to float.

mehmet

COM ucundan sabit 200Hz verseniz. 4xHC595
ile surseniz nasıl olabilir?
Mcu interrupt ile yapılabilir bu düşük frekans.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

MC_Skywalker

#13
CD4543 iç yapısına baktığımda 60-100hz sinyal girişi olan phase girişinden aldığı sinyali önce invert ve non inver olarak 3 girişli xor kapının 1 ve 2 nolu girişine girmiş BCD to 7seg decoderden gelen segmet ucunuda xor kapının 3 nolu ucuna girmiş. Her segment için aynı işlemi yapmış ve xor çıkışınıda invert buffer ile çıkışa aktarmış.



Buna göre çözüm üretilebilinir.
16F913 ü düşük adetli ucuz bulabilsem uğraşmayacağımda, Aliexpresste bile min order 50 adet.

magic_gun

hayal etemeden basaramazsınız
u cnt achieve w/out dreamin

Powered by EzPortal