PORTA da lcd ve ADC0 ı aynı anda çalıştırma ayarları

Başlatan Mr.Thinking, 03 Eylül 2019, 14:31:42

Mr.Thinking

Yaptığım bir devrede 16f877 nin pin sırası  nedeniyle lcd yi A portunda kullanamak zorunda kalıyorum.
ama aynı zamanda tuş kontrolünü de ADC0 dan okumak zorundayım. Diğer tüm pinler başka nedenlerle gerekli.
Aşağıdaki şemaya göre, yazılımda lcd ve adc register ayarlarını nasıl yapmalıyım

ego=1/Knowledge

mehmet

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

Mr.Thinking

---------------------------------------------
Neden büyük harf kullanıyorsunuz?
---------------------------------------------

BUNU YAPTIM AMA LCD Yİ BİR TÜRLÜ ÇALIŞTIRAMADIM. nEREDE HATA YAPIYORUM ACABA BAKARMISINIZ.
[HD44780] Controller received data whilst busy. [LCD1] İsiste bu hatayı veriyor.

@ DEVICE PIC16f877
@ DEVICE PIC16f877, WDT_OFF
@ DEVICE PIC16f877, BOD_ON
@ DEVICE PIC16f877, PWRT_ON
@ DEVICE PIC16f877, PROTECT_OFF
@ DEVICE PIC16f877, HS_OSC
'@ DEVICE PIC16f877, XT_OSC
'----------------------------------
DEFINE OSC 8
'-----------------------------------
TRISA=%00000001
TRISB=0
TRISC=0
TRISD=0
TRISE=0
ADCON1=%10101110

DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1     ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 20 ' ADC sampling time (uSec)
'-------------------------------------------------------------------------------
DEFINE LCD_DREG        PORTA    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        2        'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG        PORTE    'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT        0        'LCD Enable Bacağı Hangi bite bağlı ?
'define LCD RWREG       PORTB    'LCD R/W Bacağı Hangi Porta bağlı?
'define LCD_RWBIT       2        'LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG       PORTE    'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT       1        'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS        4        'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES       2        'LCD Kaç sıra yazabiliyor

HAM VAR WORD
UNITA VAR BYTE
TUS VAR BYTE
'-------------------------------------------------------------------------------
pause 200
lcdout $fe,1
PAUSE 200
'-------------------------------------------------------------------------------
basla:
ADCIN 0,HAM
PAUSE 20
 
IF HAM=65500 THEN 
PORTB.0=1
ENDIF

GOSUB EKRANAYAZ
'-------------------------------------------------------------------------------
GOTO BASLA 


EKRANAYAZ:
LCDOUT $FE,2,"HAM=",HAM, "      "
LCDOUT $FE,$C0,"TUS= ",TUS, "      "
RETURN
ego=1/Knowledge

uzaylivolkan

Mehmet bey cevap vermiş
ADCON1=%1110   
satırını ekle

Mr.Thinking

Alıntı yapılan: mehmet - 03 Eylül 2019, 15:10:2539582b.pdf.
S. 128
ADCON1:
(Resim gizlendi görmek için tıklayın.)
Bu dediğnizi yaptım amalcd de görüntü alamaıyorum.
[HD44780] Controller received data whilst busy. [LCD1] proteusta sürekli bu hatayı veriyor.
Nerede hata var kontrol edebilirmisiniz.
ego=1/Knowledge

Mr.Thinking

Alıntı yapılan: uzaylivolkan - 03 Eylül 2019, 15:54:55Mehmet bey cevap vermiş
ADCON1=%1110   
satırını ekle
dikkatli bakarsanız o satırın zaten ekli olduğunu görürsünüz.
ego=1/Knowledge

Mr.Thinking

ben anlatamadım galiba. lcd yide A portunda da kullanıyorum. Bunun için yardım istedim. analog giriş registerini ayarladım ama lcd de görüntü alamıyorum
ego=1/Knowledge

mehmet

ADC kapalı iken LCD de görüntü
var mı?

ADCON0 = 0b11000000; //Frc, ch0
ADCON1 = 0b11001110; // Frc, AN0
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

RaMu

Bir eksik daha var.
RA4 open drain, datasheet ten figure 4.1 civarı RA4 e bakabilirsin.
Yani bu pin high çıkış veremez,
RA4'ü 470ohm-1k gibi bir direnç ile +5V a bağlaman lazım
high çıkış alabilmek için.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Mr.Thinking

Alıntı yapılan: mehmet - 03 Eylül 2019, 16:17:30ADC kapalı iken LCD de görüntü
var mı?

ADCON0 = 0b11000000; //Frc, ch0
ADCON1 = 0b11001110; // Frc, AN0

HAYIR ADC Yİ KAPATTIM YİNE GÖRÜNTÜ YOK.
ego=1/Knowledge

Mr.Thinking

Sanki a1 ve a2 bitleri çalışmıyor gibi.
porta.4 e 1k pullup ta yaptım ama. Yine çalışmadı.
ego=1/Knowledge

mehmet

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

Mr.Thinking

#12
Malesef tüm adc leri kapatıp
ADCON1=7 yapıp tüm bitleri de dijital yapmama rağmen porta.4 ede 1k pullup yapmama rağmen lcd yi A portunda çalıştıramıyorum.
Nerede hata var. lütfen yardımcı olurmusunuz.
LCD yi A portunda kullanan olmadımı hiç bu güne kadar.
ego=1/Knowledge

RaMu

Lcd kütüphanesini tanımak lazım,
büyük ihtimalle lcd kütüphanesi LCD Data bacaklarının
ancak sıralı alt 4 bit yada sıralı üst 4 bite
bağlanabilecek şekilde kullanılmasına izin veriyor.

CcsC için flex_lcd.c adında
istenen mcu pininin istenen lcd pinine
bağlanmasına izin veren kütüphane mevcut.
Bunun gibi PicBasic için olanı varsa bulup denenebilir.

Ek:
Bu derde çözüm üretmişler anlaşılan,
picbasic bilmediğimden kusura bakmayın.
DEFINE LCD_DREG        PORTA    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        2        'LCD data bacakları hangi bitten başlıyor?


Bir de MCLR bacağını +5V a bağlamalısın.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html