Proton+'da SLEEP ve Enerjisi Kesilen LCD'ye Çözüm!

Başlatan alayli, 03 Ağustos 2007, 02:33:50

alayli

Merhaba Arkadaşlar;

Bir süredir uğrayamıyordum ama bu mesajı yazmayı kendime, dahası sevgili borduma borç bildim. Çünkü aşağıda çözümüyle birlikte bahsedeceğim sorundan muzdarip başkaları da olabilir ve ben kastım onlar kasmasın dedim...

Konu şu:

Pil ile çalışan ve elde taşınan ticari bir projem var. Bu projede 2x16 karakter LCD'de yer alıyor ve bir tür test ölçüm cihazı. Pilden tasarruf edebilmek için cihazda mevcut butonlara en son basıldıktan yaklaşık 1 dk sonra TMR0 interrupt ile PIC'i uyku moduna sokuyorum. PIC üzerinden kontrol edilen bir PNP transistör ile LCD'nin, LCD arka ekran ışığının ve diğer analog kısmın beslemesini kontrol ediyorum. Haliyle PIC uyku moduna girdiğinde tüm bu kısımlar akım çekmesin diye PNP transistörü PIC'i uyutmadan hemen önce kesime sokup bunları enerjisiz bırakıyorum. PIC'i uyandırmak için RB0 change interrupt'u kullanıyorum.

Buraya kadar sorun yok. Her şey tıkır tıkır çalışıyor. PIC uyanıyor. Uyanır uyanmaz, PNP transistörü benim emrim üzerine tekrar tetikleyip, diğer kısımları da tekrar enerjilendiriyor. Ama LCD'miz maalesef dünyadan bi haber ve bakir vaziyette olduğu için (enerjisini kesip verdik boru değil ya bakir işte! :D ) saçma sapan şeyler çıkartıyor ekrana... Kendince haklı tabii ki... İnitialization (yapılandırma) işleminden bi haber. Assemly kullananlar bilir asm ile kod yazarken LCD'ye karakter göndermeden önce bir takım komutlarla LCD yapılandırılır ve sonra asıl print işlemi başlar. Proton bu işi PIC'e ilk enerji verildiğinde bizim verdiğimiz deklarasyonlar doğrultusunda yapıyor ama yapılandırılmanın yenilenmesi için PIC'i resetlemek gerekiyordu. (yani eskiden öyleydi benim için :) )

Çözüme geçmeden önce çözüme yönelik kodu vereyim:

'****************************************************************
'*  Name    : SLEEP&LCD.BAS                                     *
'*  Author  : @alayli                                           *
'*  Notice  : Copyright (c) 2007 XXX Elektronik                 *
'*          : All Rights Reserved                               *
'*  Date    : 25.07.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
ZURNANIN_ZIRT_DEDIGI_1: 'Bu satırın ne anlama geldiği mesajda var...
Device 16F628
XTAL 4
Config XT_OSC , WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF , CP_ALL ,MCLRE_OFF
ZURNANIN_ZIRT_DEDIGI_2: 'Bu satırın ne anlama geldiği mesajda var...
Declare SHOW_SYSTEM_VARIABLES = 1 'SİZİN TANIMLAMADIĞINIZ AMA PROTON+'IN KENDİNE ATADIĞI DEĞİŞKENLERİ 
                                  'PROTEUS'DA GÖRMENİZİ SAĞLAYAN DEKLARE
LCD_DTPIN = PORTB.4	
LCD_RSPIN = PORTB.1
LCD_ENPIN = PORTB.2
LCD_INTERFACE = 4
LCD_LINES = 2
LCD_TYPE = 0
ZURNA_BURADA_ZIRT_DIYEBILIYOR:
PORTB_PULLUPS = 1
ALL_DIGITAL = 1

TRISA = %11111100    
TRISB = %00000001
Dim BPF         As Byte ' ZURNA'NIN ZIRT DEMESİ İÇİN GEREKLİ...
                                 ' AÇIKLAMASI MESAJDA VAR.
Dim KESME_SAYAC As Byte
Dim SANIYE      As Byte            
Dim X           As Byte

Symbol BUZZ         = PORTA.0 'BUZZER ÇIKIŞI
Symbol ANALOG_POWER = PORTA.1 'ANALOG KISMIN BESLEMESİ İÇİN KONTROL PİNİ 
                              '(pnp TİPİ TRANSİSTÖR SÜRDÜĞÜ FARZEDİLİP 0 (SIFIR) AKTİF)
Symbol ON_OFF       = PORTB.0 'DİJİTAL AÇMA KAPAMA BUTONU

DelayMS 50
ANALOG_POWER = 0 '(PNP TRANSİSTÖRÜN BASE UCU ŞASEYE ÇEKİLDİ VE SİSTEME (lcd beslemesi ve backlight'i dahil) ENERJİ GİTTİ

BASLA:
Clear BPF.1  'ZURNA ASIL BURADA ZIRT DİYOR... SİHİRLİ SATIR! AÇIKLAMASI MESAJDA VAR.
GoSub EKRAN_TEMIZLE 'YUKARDAKİ KOMUTTAN SONRA ÇOĞUNLUKLA GEREKLİ... AÇIKLAMASI MESAJDA VAR.
GoSub TURKCE 'TÜRKÇE ÖZEL KARAKTER TANIMLAMALARI ALT PROGRAMINI ÇAĞIR
             'BUNU ALT PROGRAM HALİNDE BURADA ÇAĞIRMAZSAN; 
             'ENERJİSİ KESİLİP RESETLENEN LCD'NİN TÜRKÇE KARAKTERLERDEN HABERİ OLMAZ VE ZIÇAR...
GoSub REKLAMLAR
SANIYE = 59   '1 DK GERİ SAYIM İÇİN SANİYE DEĞİŞKENİ KURULDU
KESME_SAYAC = 0 'TIMER-0 İNTERRUPT İÇİN KESME SAYACI SIFIRLANDI

On Interrupt GoTo KESME
OPTION_REG=%00000111 '65 ms'DE BİR TMR0 İNTERRUPT YAPILANDIRMASI
INTCON=%10100000  'TMR0 KESMESİ AKTİF EDİLDİ
GoSub EKRAN_TEMIZLE

MAIN:
Print At 1,1,"OTO KAPANMA ",4,6,4,"N"
Print At 2,1,"KALAN ZAMAN:",DEC2 SANIYE,"sn"
If ON_OFF = 0 Then UYU 'UYKU MODUNA GEÇİŞİ İSTER BUTONA BASARAK YAP
If SANIYE = 0 Then UYU 'İSTERSEN DE ZAMAN AŞIMINI KULLAN (ÖZELLİKLE PİLDEN ÇALIŞAN CİHAZLAR İÇİN İDEAL) 
GoTo MAIN
   


UYU:
   INTCON   = 0 'TMR0 KESMESİNİ VE DİĞER TÜM KESMELERİ İPTAL ET 
   INTCON.4 = 1 'RB0 DONANIM KESMESİNİ AKTİF ET
   INTCON.1 = 0 'RB0 DONANIM KESME BAYRAĞINI SIFIRLA 
   GoSub EKRAN_TEMIZLE
   High BUZZ
   Print At 1,2,"D",2,3,2,"K G",2,6," MODU"
   Print At 2,4,"G",2,"LE G",2,"LE!"
   DelayMS 3000
   Low BUZZ
   GoSub EKRAN_TEMIZLE
   PORTB = %00000001 'LCD'YE GİDEN TÜM DATA PİNLERİNİN DURUMU SIFIR YAPILDI Kİ AKIM ÇEKMESİN HIYAR!
   ANALOG_POWER=1 'PIC HARİÇ TÜM SİSTEMİN ENERJİSİ TRANSİSTÖR ÜZERİNDEN KAPANDI...
   Sleep 'İŞLEMCİMİZ MIŞIL MIŞIL UYUYOR MİKROAMPER YETİYOR ŞU AN ONA...
   ANALOG_POWER=0 'BU SATIRA GELİNEBİLDİĞİNE GÖRE ON_OFF TUŞUNA BASILIP PIC RB0 CHANGE İNTERRUPT 
                  'İLE UYANDIRILMIŞTIR VE DİĞER KISIMIN DA ENERJİSİ TEKRAR SAĞLANIR...
   DelayMS 100    'DİĞER KISMIN BESLEMESİ BİRAZ STABİLLEŞSİN...
   GoTo   BASLA  '(ZURNANIN_ZIRT_DEDIGI1 ETİKETİNE GONDERMEK İSTEDIM AMA NAFİLE...)
  

'===============================================================================  
Disable        
KESME:
       Inc KESME_SAYAC 'kesme sayacı 1 sn = 15(sayac) x 256 (Tmr0) x 256 (bölme)
         If KESME_SAYAC = 15 Then '15 adet kesme olunca 1 sn. süre geçiyor.(983040 us)
           KESME_SAYAC=0 'sayaç sıfırlanıyor
           Dec SANIYE 'saniye degeri bir azaltılıyor
           If SANIYE > 59 Then SANIYE = 59
         EndIf      
INTCON.2=0 'TMR0 Kesme bayragı sıfırlanıyor

Resume        
Enable              
'------------------------------------------------------------------
EKRAN_TEMIZLE:
Cls : DelayMS 30
Return
        
BIBIP:
For X = 0 To 1
High BUZZ : DelayMS 100: Low BUZZ : DelayMS 50
Next
Return        
        
REKLAMLAR:
GoSub EKRAN_TEMIZLE
Print At 1,3,"@alayli' dan"
Print At 2,1,"SLEEP@LCD KIYA",1,"I"
GoSub BIBIP
DelayMS 3000
Return        

TURKCE:
Print $FE,$40,10,14,17,17,17,17,14,$0         'Ö
Print $FE,$48,14, 14, 17, 16, 23, 17, 15, 0    'Ğ dataları 
Print $FE,$50,$11,$0,$11,$11,$11,$11,$e,$0    'Ü dataları 
Print $FE,$58,$0E,$10,$10,$0E,$01,$05,$1E,$04 'Ş dataları 
Print $FE,$60,$04,$0E,$04,$04,$04,$04,$0e,$00 'İ dataları 
Print $FE,$68,4,4,4,4,21,14,4,0               'lamba dataları 
Print $FE,$70,$0E,$11,$10,$10,$10,$15,$0E,$4  'Ç dataları 
Print $FE,$78,4,14,21,$4,$4,$4,$4,$0          'ı datal
Return

End


Bu sorunu çözmek için ilk aklıma gelen şey; kodda görebileceğiniz "ZURNANIN_ZIRT_DEDIGI_2:" etiketini oluşturmak ve uyku modundan PB0 change kesmesi ile çıkan PIC'i goto ile bu etikete dallandırmaktı. LCD deklarasyonları bu etiketin altında olduğuna göre LCD yapılanması da yenilenir diye düşündüm. Ama olmadı... Proton+ bunu yemedi... Daha da ileri gidip yüzsüzlük edip "ZURNANIN_ZIRT_DEDIGI_1:" şeklinde bir etiket oluşturdum. Uyanığım ya herşeyin başına yani PIC'in ilk enerjilendiği konuma dallandıracam programı... Proton+ bunu da yemedi. O ancak "ZURNA_BURADA_ZIRT_DIYEBILIYOR:" a kadar geri dönmeme izin veriyor. Aşağıda Proton+'ın oluşturduğu  assembly kodlarda durum görünüyor.

;----------------------------------------------------------
; Code Produced by the PROTON+ Compiler. Version 3.2.5.5
; Copyright Rosetta Technologies/Crownhill Associates
; Written by Les Johnson. February 2007
;----------------------------------------------------------
 NOLIST
 #include "D:\_PROTON\SLEEP&LCD.PBP"
 LIST

 KESME_SAYAC = 47
 SANIYE = 48
 _X = 49
	#Define __LCD_DTPORT PORTB
	#Define __LCD_RSPORT PORTB
	#Define __LCD_ENPORT PORTB
	#Define BUZZ PORTA,0
	#Define ANALOG_POWER PORTA,1
	#Define ON_OFF PORTB,0
F2_SOF equ $ ; SLEEP&LCD.PRP
F2_EOF equ $ ; SLEEP&LCD.PRP
F1_SOF equ $ ; SLEEP&LCD.BAS
ZURNANIN_ZIRT_DEDIGI_1
F1_000014 equ $ ; in [SLEEP&LCD.BAS] Config XT_OSC , WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF , CP_ALL ,MCLRE_OFF
ZURNANIN_ZIRT_DEDIGI_2
ZURNA_BURADA_ZIRT_DIYEBILIYOR
F1_000025 equ $ ; in [SLEEP&LCD.BAS] PORTB_PULLUPS = 1
	Bsf STATUS,5
ram_bank = 1
	Bcf OPTION_REG,7
F1_000026 equ $ ; in [SLEEP&LCD.BAS] ALL_DIGITAL = 1
	Movlw 7
	Bcf STATUS,5
ram_bank = 0
	Movwf CMCON
.......
...........


*Uyandıktan sonra PIC'i hardware olarak resetlemek bu durumda bir çözümdü ama maalesef projede 16F628 kullanmıştım ve MCLR dahil tüm PIN'ler doluydu. MCLR pinini ve bunu resetleyecek bir başka pini heba etmek zaten normal şartlarda da -RACON-'a tersti. :D

*Uyku moduna geçişten sonra  LCD'nin sadece arka ekran aydınlatmasının enerjisini kesip, 2 nolu VDD pinini PIC gibi sürekli beslemede tutmak çözüm olabilirdi. Ama benim kullandığım LCD bu durumda bile 1-2 mA akım çekiyordu. Bu değer; şebekeden çalışan ve stand-by'a geçirilen bir cihazda 2W'lık avrupa birliği sınır değerini karşılasa da pille çalışan bir cihaz için çok çok fazlaydı. Uyku modunda LCD beslemesini tümden kesmem gerekiyordu.

*İlk başlarda,
LCD_DTPIN = PORTB.4	
LCD_RSPIN = PORTB.1
LCD_ENPIN = PORTB.2
LCD_INTERFACE = 4
LCD_LINES = 2
LCD_TYPE = 0


kısmında Proton+'ın derlediği kodları, "BASLA:" etiketinden sonra "LCD_initialization:" etiketli bir alt programla yeniden oluşturup, PIC uyandıktan sonra bunu çağırıp LCD'yi tekrar yapılandırayım dedim ama Proton+'ın derlediği kodlarla benim yazdıklarımın yıldızını barıştıramadım. Edemedim LCD deklarasyonlarını iptal edip LCD'yi tümden asm kontrolüne aldım. Sorun çözülmüştü ama bu sefer de Proton ile kod yazmanın anlamı kalmamıştı... Bu işi Proton+'ın bünyesinde çözmenin bir yolu olmalıydı... Zaten öteden beri Proton+'da herhangi bir sebeple resetlenen LCD'yi yeniden yapılandıramamanın sıkıntısını yaşardım. (Cls komutu LCD resetlemekle aynı şey değil malum. O sadece ekranı temizler... ve ardından initialization gerektirmez... Reset yiyen LCD'yi mutlaka yeniden yapılandırmak gerekir.) Ama özellikle gürültünün (elektriksel gürültü kast ettiğim) çok fazla olduğu sanayi bölgelerinde kullanılan, Proton+ ile yazılmış projelerimde, LCD'nin sapıttığına defalarca şahit oldum ve şu ana kadar bunu hep hardware ile çözmeye çalıştım. Oysa PIC'in reset yemediği bir çok durumda bu namussuz LCD'ler reset yer ve "İnitialization" isterdi hep... :evil:

EVREKA! EVREKA!  :D
Proton+ içinde LCD'yi yeniden yapılandırmanın yolu sadece iki satır koddan geçiyor. Bunu bulmak için Proteus'da sistem değişkenlerini (Proton'un kendine makroları için oluşturduğu değişkenler) görebilmek için gerekli deklarasyonu yazıp adım adım simulasyonda her bir sistem değişkenini bir dedektif gibi takip ettim. Bu yaklaşık 48 saatime maloldu ama değdi... Farkettim ki "BPF" isimli SİSTEM değişkeninin 1 nolu biti her cls ve print komutundan sonra set veya reset ediliyor. Bu değişkeni kendim de mıncıklıyabilmek için önce kodun içine direkt;
clear BPF


gibi bir satır yazmayı denedim ama Proton+ yemedi. Tanımlı böyle bir değişken yok diye hata verdi. Ben de bu değişkeni Dim ile tanımladım. (Açıkçası proton+'dan "bu benim kullandığım bir değişken ismi ve rezerve, git kendine başka isim bul!" şeklinde bir hata mesajı bekliyordum ama bendeki orijinal kayıtlı ve son sürüm sorun çıkarmadı... :D ) Artık PBF değişkenini mıncıklayabiliyordum. Bu PBF değişkeninin değişik bitleri ve bütünüyle bir hayli haşır-neşir oldum. Sonra anladım ki değişkenin bütününü veya 1. biti hariç diğerlerini mıncıklamak bir takım istenmeyen yan etkiler doğurabiliyor. (Mesela kullanıcı tanımlı değişkenlerin desimal ve/veya hex ve/veya bin vb. değerlerini ekrana yazdırırken veya Print komutu içinde aritmetik işlem yaptırırken diğer bitlerin lojik durumu da değişebiliyor. Bunları kurcalarsanız ekrana yazdırılan değerlerde sapmalar olabiliyor.)

Bu değişkenin 1. bitini (dikkat 0. bit değil, sağdan sola 2. bit) resetledikten sonra baktım ki sapıtan (yada deneme amaçlı tarafımdan resetlenip, PIC çalışırken enerjisi kesilip tekrar verilmek suretiyle sapıttırılan) LCD, takip eden ilk Cls komutundan sonra, titreyip kendine geliyor. Tek eksikle: Türkçe karakterler veya özel oluşturulan semboller! Bunun da kolayı vardı. Normal şartlarda programımın Main'inden önce bir yerlerde bir kez yazdığım bu tanımlamaları bir alt program haline getirip tekrardan çağırmak çözüm için yetti. Özetle:

Programınızın değişken tanımlamalarına
Dim BPF         As Byte
satırını da ekleyeceksiniz. Ama bu değişkeni hiçbir şekilde başka amaçlı kullanıp içeriğine müdahale etmeyeceksiniz. Sadece bizi ilgilendiren bitine müdahale için lazım o kadar. Eski ve/veya crackli proton+ sürümleri bu sistem değişkenini sizin tanımlamanıza itiraz edebilir ve "kendine başka değişken ismi bul" diyebilir. O zaman;
Dim BPF as Byte SYSTEM
' i bir deneyin. Büyük ihtimalle sorun çıkartmayacaktır.

Sonra LCD'nin yeniden yapılandırılmasını istediğiniz yerde

Clear BPF.1 
Cls : DelayMS 30
yazacaksınız... Cls'yi kullanmak veya zaten Cls kullandığınız kısımların hemen önüne "Clear BPF.1"'i eklemek ve vırt-zırt kullanıp b...kunu çıkartmamak menfaatinizedir.

Son olarak hatırlatmak istediğim bir kaç husus var:

*BPF değişkeninin tümünü "Clear BPF" şeklinde veya diğer bitlerini "Clear Bpf.X" şeklinde mıncıklamayın. Nitekim Proton+ bu değişkeni başka işlerde de kullanıyor ve diğer bitlerin mıncıklanması başka sorunlar çıkarıyor. Ama "BPF.1" de sorun yok. Ben uzun uzun mıncıklayıp değişik LCD'li projelerimde (PIC18fXXX'li, PIC16F87X'li lerde dahil) test ettim başka herhangi bir probleme yol açmıyor...

*Eğer LCD'nin beslemesini benim projemde olduğu gibi bilinçli kesiyorsanız; PIC'i uyutmadan hemen önce LCD data portlarına bağlı 4 veya 8 pini (DB4----DB7 veya DB0----DB7 ye bağlı pinleri) LCD RS ve LCD EN uçlarına bağlı pinleri sıfırlamayı unutmayın. Aksi taktirde lojik 1 de kalan pin veya pinler üzerinden namussuz LCD akım çekmeye devam ediyor. Hatta ekran aydınlatması için tek beyaz led kullanan LCD'lerde ekran arka ışığının hafifçe parıldadığı bile seçilebiliyor. Burada vereceğim Proteus dosyasında yok ama, normalde ben LCD'ye giden her bir data,RS,EN ucuna seri birer direnç atarım. Şebeke gürültülerine büyük faydası olur. Sizin de özgün projenizde bu akım sınırlama dirençleri varsa dahi bu dediğimi yapın. Nitekim bu dirençler üzerinden LCD akım çekmeye devam edecektir ve  pil ile çalışan projelerde bu akım küçümsenmemelidir. Hatta pil ile çalışan projelerde cihazın açık kalmasına müsaade ettiğiniz süre boyunca çektiği akımı azaltıp pilden daha da tasarruf etmek için; arka ekran ışığı beslemesinin önüne duruma göre 47R ile 150R arası seri bir direnç atın. Bu direnç bir çok LCD'nin kendi PCB'sinde SMD olarak vardır ve şebekeden çalışan cihazlarda arka ekran aydınlatmasını direkt 5V'a bağlamak sıkıntı çıkartmaz. Ama pilli projelerde de ihtiyaç kadar aydınlık verecek bir direnç ile sınırlamak büyük fayda sağlar. Çoğunlukla negatif çalışan BLUE LCD'lerde parlak beyaz tek bir led lullanılır ve seri bağlı 8-10 led kullanan yeşil ekranlılardan çok daha az akım çeker bu mavi negatif ekranlar. Mavilerdeki beyaz led direkt 5V'a bağlandığında 20-25 mA civarı akım çekerken, yeşillerde bu akım 150 mA'leri bulabiliyor. Pille çalışan bir sistem için sırf arka ekran aydınlatması için bu akım israf değil midir sizce de?.. Sınırlayın!

*Az sonra aşağıda linkini vereceğim proje kodlarını ve Proteus dizayn dosyasını bilgisayarına indirip çalıştıran ve iki günüme malolan sihirli satırları koddan çıkarıp, tekrar derledikten sonra, SADECE PROTEUS'DA KODUN HALA ÇALIŞTIĞINI GÖRÜP, "İki gün boşuna uğraşmışsın, bu satırlar olmadan da çalışıyor bu kod!" diyen sazanları ŞEFKATLE BAĞRIMA BASAR, protobordda (gerçek hayatta) denemelerini salık veririm. Nitekim proteus, PIC'in ve LCD'nin beslemesini simulasyon sürdüğü müddetçe kesmez. Dizayn dosyasında her ne kadar LCD'nin VDD ucu transistörden enerji alıyormuş gibi çizilse ve devre gerçek hayatta da böyle (hatta LCD'nin simulatörde görünmeyen 15 nolu ekran aydınlatmasının + besleme pini)  yapılandırılacak olsa da, simulasyonda PIC uyku moduna girdiğinde LCD'nin enerjisi kesilmez ve doğal olarak resetlenmez. Resetlenmeyen LCD'de yeniden yapılandırma gerektirmeyeceği için, o satırlar olmadan derlenen kod simulasyonda çalışır ama gerçek hayatta yan yatar.

İşte hepsi bu kadar. Ve işte içersinde;
* TMR0 interrupt ile uyku moduna geçip otomatik kapanma,
* Buton marifetiyle  uyku moduna geçip otomatik kapanma,
* RB0 change kesmesi ile uyanıp, analog kısmı enerjilenen

örnek kodun tüm dosyaları...

http://dc151.4shared.com/download/121660686/5be2fda8/SLEEP_LCD.rar?tsid=20090730-022458-89378891



Saygılar...

Edit: Çalışmayan kırık link düzeltildi...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

OG

Hocam gayet güzel bir kaynak olmuş. Picproje Dergi yazısı olması için müsaadeniz olur umarım.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

alayli

Alıntı yapılan: "OG"Hocam gayet güzel bir kaynak olmuş. Picproje Dergi yazısı olması için müsaadeniz olur umarım.

Müsaade ne demek OG Hocam, gurur duyarım!.. Ama biraz rötuş gerekecektir. Hatta verdiğim örnek kodu işe yarar başka bir proje haline de getirebiliriz. Sadece kaynak kod olmaz işe de yarar böylece...

Saygılar...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

Maxim

çok faydalı ve süper bir yazı olmuş ,
paylaşım için teşekkürler

solidus

Gerçekten ilginç ve değerli bi çalışma olmuş. Ancak dosyaları indirip yeniden derlediğimde simülasyonda ekran neden bomboş. ???
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

solidus

sevgili "alayli" yayındaysanız görüşelim saç baş yolmaya başlayacam yoksa :)
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

Maxim

Alıntı yapılan: solidus - 02 Aralık 2010, 01:18:31
Gerçekten ilginç ve değerli bi çalışma olmuş. Ancak dosyaları indirip yeniden derlediğimde simülasyonda ekran neden bomboş. ???

bende devre simulasyonda sorunsuz çalışmaktadır.
sizin proton ve proteus versiyonu nedir, onlarla ilgili olmasın ?

izwirlee_35

#7
bu güzel açıklamanız  için teşekkür ederim  lcd göstergeli yapmayı düşündüğüm ve aynı sizin belirttiğiniz gibi pilli olan bi sistem için ön araştırma yapıyordum daha az saç baş yolmamı sağlayacağınız için teşekkür ederim zaten döktük saçları sağolun  :)


yalnız linke ulaşamıyorum ilgili dosyada sıkıntı var diyor 4shared yenileyebilirmisiniz ? teşekkür ederim.
keep learning . . .

drmp

lcd yi  asm'de hazırladığımız gibi yeniden hazırlarsanız bu sorun ortadan kalkar



Mucit23


dnacikaya

Teşekkür ederim @alayli 16 yıl sonra bilgiler çok işime yaradı :)

Mr.Thinking

Pic basic te de bu mümkün mü? Deneyen olduysa bilgi alabilir miyim?
Sanayi ortamına yaptığım bir projede lcd ekran kullanmanın sıkıntı çıkarabileceğini unutarak kullandım. Şu ana kadar bir hafta oldu ve sorun çıkarmadı ama çıkarabilir.
Bu nedenle yukarıdaki bilgilerin pic basic ile ilgili olanı varsa işime yarayabilir.
ego=1/Knowledge

ete

PBP da bu işlem;
FLAGS=0  'flags burada sistem değişkeni olup tanımlanması gerekmiyor
 LCDOUT $FE,1
komut satırları ile yapılmaktadır. Açıklamada görüldüğü üere Flags isimli değişkenin tanımlanması gerekmiyor.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com