avatar_elektro77

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

Başlatan elektro77, 03 Eylül 2019, 14:26:54

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

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

aşağıaki gibi olmalı.

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)
ete


onurinci

PortA.4 PullUp falan gerçek devrede LCD çalıştımı ?

elektro77

DEFINE LCD_DREG        PORTA    'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT        4        '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

'------------------------------------------------------------------------------
pause 200
lcdout $fe,1
PAUSE 200

basla:
LCDOUT $FE,$C0,"NASILSINIZ"



goto basla

Hocam yukarıdaki gibi sizin dediklerinizide ekleyip yaptım ama simülasyonda binlerce hata veriyor.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

[HD44780] Controller received data whilst busy. [LCD1]

verdiği hata mesajı bu. bu binlerce satır uzuyor.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

onurinci

Forumda zeki bir üye bir yöntem geliştirmişti,istediği bacağı istediği yere bağlayabiliyordu..A4 'ü kullanmayıp başka bir yer kaldıysa bağlayabilirsin sanıyorum...

https://etepic.com/index.php/topic,3465.0.html

elektro77

Alıntı yapılan: onurinci - 04 Eylül 2019, 00:34:35Forumda zeki bir üye bir yöntem geliştirmişti,istediği bacağı istediği yere bağlayabiliyordu..A4 'ü kullanmayıp başka bir yer kaldıysa bağlayabilirsin sanıyorum...

https://etepic.com/index.php/topic,3465.0.html
çok teşekkürler. Bu işimi görebilir
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

A portunda lcd yi çalıştırmayı başardım: sadece adc yi ekranda 4 hane şeklinde çıkramıyorum.
Birde başka bir şey eklemek istesem nereye yazacağımı,hangi komutla ekrana yazdıracağımı inanın anlamadım. Kafam bu algoritmada allak bullak oldu.
Örneğin:
Adc=1023 ise  ekrana "Basılan tus"="M1Y"  nasıl yazdırırım bilmiyorum.
Yardımcı olabilecek varsa yardımcı olabilirse çok sevinirim.
Devre simülasyonu ve yazılım ektedir.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Bu mesaj bana garip geldi. Programda örneği mevcut zaten.
Yapman gereken,
IF TEMPOLC=1023 then
  for sayac=0 to 14
  LOOKUP sayac,["BASILAN TUS=M1Y"],temp
  rs=1
  GoSub lcdgonder
  next
ENDIF
Şeklinde bir kodu adc okumanın ardından eklemek.

Ete

elektro77

Alıntı yapılan: ete - 04 Eylül 2019, 14:57:34Bu mesaj bana garip geldi. Programda örneği mevcut zaten.
Yapman gereken,
IF TEMPOLC=1023 then
  for sayac=0 to 14
  LOOKUP sayac,["BASILAN TUS=M1Y"],temp
  rs=1
  GoSub lcdgonder
  next
ENDIF
Şeklinde bir kodu adc okumanın ardından eklemek.

Ete
Adc de tus takımı kullanımından kaynaklanan bazı sorunlardan dolayı bu sefer de usart seri iletisime gectim hocam. Mailinize bakınız.
Hocam birde 20 mhz de aşağıdaki ayarlar ne olmalıdır.
sadece tuş takımını kablo ile rs487 kullanıp yapıyorum. devreyi ve yazılımı simülasyonda çalıştırdım. Fakat o kadar çok kod ve dallanma varki 4 mhz de tus basıp cevap alma sureleri biraz uzadı.
20 mhz de aşağıdaki ayarlar ne olmalıdır.
verici
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
alıcı
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"


elektro77

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

dnaci

Kodun hepsini yükleyin siteye alıcı verici ayrı. Bir de simulasyonda işlemci çalışma frekansı kaç. 1 veya 5 mhz deneyin.

elektro77

Alıntı yapılan: dnaci - 05 Eylül 2019, 18:57:46Kodun hepsini yükleyin siteye alıcı verici ayrı. Bir de simulasyonda işlemci çalışma frekansı kaç. 1 veya 5 mhz deneyin.
simülassyon frekansını 5 mhz yapınca çalıştı. bu ne demek.
Yani 5 mhz yapmak ne anlama geliyor
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

dnaci

@elektro77 işlemciye 20mhz kristal bağlı ama işlemci 4te 1 oranında frekansta çalışıyor. Sizde simulasyonda 5 yapınca frekansı çalışmasını sağladınız. Daha ayrıntılı hesaplamalar pic datasheetinde bulunabilir.

Powered by EzPortal