avatar_ete

Pic Basic Ders-03 (LCD Kullanımı ve Özel Karekter Tanımlama)

Başlatan ete, 24 Kasım 2013, 23:21:23

ete

Programda fazlalık var kusur yok gibi. Sorun şemanda olmalı bence.
Şemayıda görmek lazım.

BASLA etiketi altında yer alan
LOW PORTB.2
PAUSE 1000
satırlarını sil orada hiç bir işey yaramadığı gibi program akışınıda bozuyor.

Ete

Adem ESEN

hocam şemayı bi inceleme şansınız olabilir mi normalde 4k7 direnç üzerinden porta.2 ye porta.3 e lojik 1 gidiyor buton uçlarında ise şase var ama PORT DURUMLARI GÖSTERİLECEK yazdıktan sonra ne porta.2 yi okuyor ne porta.3 ü

Adem ESEN

hocam bütün giriş çıkışlar aynı yerden besleniyor PIC+LCD+LCD ARKA IŞIK acaba PIC Beslemesini ve port giriş değerlerini başka bir kaynaktan mı vermeliyim ? aslında kullandığım adapör 12V 2A bu yeterli mi bu devre için

ete

O besleme yeterde artar bile.
Buraya doğru dürüst bir program ve yine doğru bir şema koyamıyormusun.
Program ekran görüntüsü halinde şema PCB devresi şeklinde niye hep tersten çalışıyorsun.?
İstediklerimi koy bir klasöre sıkıştır ve buraya dosya olarak ekle. Varsa simulasyon dosyasını koy.

Ete

Adem ESEN


F®T

Gördüğüm kadarı ile isis şeması port bağlantıları ile programdaki buton tanımlamaları tutmuyor.Ayrıca lcd tanımlamalarında rw ucu şaseye verilmiş ama programda portb.1 tanımlaması var.Programda iki adet goto kısmı var alttakine programın geçme şansı yok.Şöyle bir denermisin.

****************************************************************
'*  Name    : Yeni LCD.BAS                                      *
'*  Author  : [Adem ESEN]                                       *
'*  Notice  : Copyright (c) 2007 [Temel Elektronik]             *
'*          : All Rights Reserved                               *
'*  Date    : 17.01.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   : lcd kullanımı                                     *
'*          :                                                   *
'****************************************************************

@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _LVP_OFF & _CP_OFF

DEFINE OSC 4

DEFINE LCD_DREG     PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT     4     'LCD DATA BITLERI HANGİ BITTEN BASLIYOR
DEFINE LCD_EREG     PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT     3     'LCD ENABLE BITI HANGI PORTA BAGLI
DEFINE LCD_RSREG    PORTB 'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT    2     'LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_BITS     4     'LCD 4 BIT BAGLI
DEFINE LCD_LINES    2     'LCD KAC SIRADAN OLUSUYOR

TRISA=%00011111        'TRISA GİRİŞ
TRISB=%00000000
CMCON=7                   ' KARŞILAŞTIRICILAR KAPALI               
OPTION_REG.7=0            ' OPTİON REGİSTERİN 7. BİTİ KAPALI
PORTA=0                   ' A PORTUNU TEMİZLE
PORTB=0                   ' B PORTUNU TEMİZLE


PAUSE 500           '500 ms BEKLEME YAP




LCDOUT $FE,$1, " PORT DURUMLARI "
LCDOUT $FE,$C0, "  GOSTERILECEK  "
PAUSE 2000


BASLA:

IF PORTA.2=0 THEN
LCDOUT $FE,$80, "   PORTA.2=0    "
ELSE
LCDOUT $FE,$80, "   PORTA.2=1    " 
ENDIF


IF PORTA.3=0 THEN
LCDOUT $FE,$C0,"   PORTA.3=0    "
ELSE
LCDOUT $FE,$C0,"   PORTA.3=1    "
ENDIF

GOTO BASLA



not:ders06 daki uygulamadaki durumlara baktım.fakat şimdi gördüm 16f84a kullanılmış bunu 16f628a ile değiştirmen lazım.

Düzenleme yaptım osc tanımlaması yoktu görmemişim ve lcd aresinde yanlışlık varmış onları düzelttim .
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Adem ESEN

Bu şekilde görüntü tamamen gitti hocam sadece mavi ekran var

ete

Bu devrede kullandığın işlemci nedir 16F84A mı yoksa 16F628A mıdır?
Programa bakılırsa 16F628A için yazıldığı anlaşılıyor.

Ete

not: basitçe programı 16F628A da çalışacak şekilde yazıp denemesini yaptım çalışıyor.
İlişikteki dosya içinde yer alan hx dosyasını bir kullan bakalım.

Ne yazıkki versiyon sorunu nedeni ile sim. dosyasını göremedim.

Ete

Adem ESEN

 :) EVET Oldu hocam Allah Sizden Razı Olsun ...

@ __config _BODEN_ON & _BOREN_ON & _CP_ON & _DATA_CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT

Ama kodları incelediğimde birçok değişiklikler gördüm özellikle Fuse ayarlarında bu ayarları düğer tüm uygulamalarımızda kullanabilir miyiz yoksa bu programa özel bir kısmını bırakıp bir kısmını kullanmamız mı gerekir (sadece 16f628A kullanıyorum

F®T

Kullanabilirsin.Fakat uygulamaya göre bazılarının kapatılma durumları olabiliyor.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

insect-yol

Mrb arkadaşlar aranızda 2x16 EA DOGM 162-A bu ekranı kullanan varmı nasıl kullanılıyor diğerlerinden bir farkı varmı elinde örnek uygulama olan paylaşabilirmi şimdiden teşekkürler

gogoce

Alıntı yapılan: insect-yol - 21 Ocak 2016, 11:16:51
Mrb arkadaşlar aranızda 2x16 EA DOGM 162-A bu ekranı kullanan varmı nasıl kullanılıyor diğerlerinden bir farkı varmı elinde örnek uygulama olan paylaşabilirmi şimdiden teşekkürler

datasheetini incelediniz mi?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

insect-yol

Evet inceledim ancak donanım olarak tamam ama proğram içerisinde nasıl kullanacağız onu tam olarak anlayamadım elimde ekran olmadığı içinde deneme yapamadım malesef

Hattuşa

slm arkadaşlar LCD kullanımında şöyle bir işlem yapmak istersek nasıl yapabiliriz?
bir devrem var bir lcd bağlı ve 3 butonum var, butonun ikisi ile harfleri aşağı yukarı kaydırarak harf basmak istersek, kalan butonlada sutunu atlatmak istersek bunu nasıl yapabiliriz. yani diyelim ki 2x16 lcd var ekranda kürsör 1.satırın 1 sutununda bekliyor ve ben ekrana "ETE HOCAM YARDIM" yazmak istiyorum. bunun için 1. sutunda butonla alfabeyi kaydırıp "E" harfine gelmek sonra başka bir butonla sutun atlayıp "T" harfini basmak ve tekrar sutun kaydırarak ekrana bu yazıyı yazmak istiyorum ama başaramadım.
kodda harf seçme butonuna harf değişkeni tanımladım. case komutu ile bu değişkene denk gelen alfabedeki harfi harfyaz adlı başka bir değişkene aktardım ve bu değişkeni ekrana print dediğimde decimal değer veriyor.

print at 1,1,cstr harfyaz

diyorum yazamıyorum birtürlü

bi zahmet bir el atabilirmisiniz?


ete

ekrana ASCII karşılıklarını yazdırırsan olur.
İki tane tuş 65- 90 arasında sayıları belirleyecek. Diğer tuşa basınca seçili olan ekranda kalacak.
Tuşlara Artır-Azalt-SEC isimlerini verirsek. HARF diye de bir değişken kullanırsan. İlk etapta HARF=65 olarak başlar.
Artır tuşuna basınca HARF=HARF+1 den HARF=66 olur (B harfidir). 90 ı geçmemesi için gereken tedbilir alırsın. Azaltırkende 65 in altına düşmemesini, sağlarsın.
Örnekle açıklamak gerekirse;

BASLA:
HARF=65:SUTUN=1
BASLA_BIR:
print at 1,SUTUN,HARF
IF ARTIR=0 then
HARF=HARF+1
IF HARF=91 then HARF=65
WHILE ARTIR=0:WEND
DELAYMS 50
ENDIF
IF AZALT=HARF=HARF-1
IF HARF=64 then HARF=90
WHILE AZALT=0:WEND
DELAYMS 50
ENDIF
IF SEC=0 THEN
  SUTUN=SUTUN+1
  IF SUTUN=17 THEN SUTUN=1
  WHILE SEC=0:WEND
  DELAYMS 50
  HARF=0
ENDIF
GOTO BASLA_BIR

Ete

Powered by EzPortal