20 Ekim 2019, 21:18:04

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


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

Başlatan elektro77, 03 Eylül 2019, 17:31:42

elektro77

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


mehmet

nothing

elektro77

---------------------------------------------
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 PIC16f877WDT_OFF
DEVICE PIC16f877BOD_ON
DEVICE PIC16f877PWRT_ON
DEVICE PIC16f877PROTECT_OFF
DEVICE PIC16f877HS_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 

uzaylivolkan

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

elektro77

Alıntı yapılan: mehmet - 03 Eylül 2019, 18:10:2539582b.pdf.
S. 128
ADCON1:

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.

elektro77

Alıntı yapılan: uzaylivolkan - 03 Eylül 2019, 18: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.

elektro77

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

mehmet

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

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

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

elektro77

Alıntı yapılan: mehmet - 03 Eylül 2019, 19: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.

elektro77

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

mehmet

nothing

elektro77

03 Eylül 2019, 20:04:39 #12 Son düzenlenme: 03 Eylül 2019, 20:06:31 elektro77
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.

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