Elektronik ve Teknoloji Merkezi Elektrotekno.com
Elektronik ve Teknoloji Merkezi




Click here to go to the original topic
Sayfaya git 1, 2  Sonraki
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
Yazar Mesaj
treeangle
Tarih: 08.10.2007, 14:27 Mesaj konusu: saa 1064 ve pıcbasıc

Merhaba,

SAA1064 entegresi ve PIC kullanarak 4 x 7 Segment Displaye, PicBasic ile
birşey yazdırabilecek arkadaşların yardımını bekliyorum. Çok Teşekkürler.
tyildizak
Tarih: 08.10.2007, 15:03 Mesaj konusu:

Konu I2C'dir, pic basic'de hazır kütüphanesi var, size gereken nedir?
treeangle
Tarih: 08.10.2007, 15:24 Mesaj konusu:

doğru i2cwrite ile yazdırılıyor fakat bir türlü programı yazıp,
simüle edemedim. interneti arayınca bir sürü birşeyler çıkıyor ama.
işe yarar düzgün birşey yok. bana picbasic kaynak kodları ile saa1064'ü
kullanarak 4 x 7 segment displaye herhangi birşey (Örnek: 1,2,3,4)
yazabilir miyiz?
tyildizak
Tarih: 08.10.2007, 19:28 Mesaj konusu:

entegrenin datasheetini bulup iyice okuyun
Pic basic'te hazır komutlar var, bu büyük kolaylık, yardım dosyasını inceleyin
I2C şöyle:

I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]{,Label}


Shiftout ile de senkronize data gönderilebilir
SHIFTOUT datapin,clockpin,LSBFIRST,[BYTE0,BYTE1,BYTE2,BYTE3]

Bunları devreyi kurup, dediğim gibi datasheet'i çok iyi inceleyip denemek gerek,
benim buradan %100 çalışır diyebileceğim bir kod yazmam zor...
treeangle
Tarih: 09.10.2007, 09:06 Mesaj konusu:

yardımcı olmaya çalıştığınız için çok teşekkürler. yalnız datasheetini inceledim. dediğim
gibi internette de epey araştırdım ve ic2write'ı denedim. fakat 7 segmentte herhangi bir
değer göremedim. o yüzden yardımcı olabilecek var mı diye yazdım. çok teşekkür ederim.
Ayrıca,



// SAA1064

//4MHz
#define TMR1Sconst 3906

#include <pic.h>
#include "always.h"
#include "i2c.inc"


unsigned int tu=0;
unsigned char ts=0;


bit fs = 0;

void interrupt timer(void) {

if (T0IF && T0IE) {
T0IF = 0;
tu++;
if (tu == TMR1Sconst) { //
tu = 0;
ts++;
fs = 1;
}
}
}

void main(void) {

STATUS = 0;
TRISA = 0b00010000;
TRISB = 0b00000000;
TRISC = 0b00000100;
PORTA = 0;
PORTB = 0;
PORTC = 0;
OPTION = 0b10001111;
INTCON = 0;
ADCON1 = 0b00000110;
SSPCON=0;
T0IF = 0;
T0IE = 1;
GIE = 1;

init_I2C();


I2C_stable();
I2C_start();
I2C_sendbyte(0x76); //
I2C_sendbyte(0x00); //
I2C_sendbyte(0x07); //
I2C_sendbyte(0x06); //1
I2C_sendbyte(0x5B); //2
I2C_sendbyte(0x4F); //3
I2C_sendbyte(0x66); //4
I2C_stop();


while (1) {
}
}

yukarıdaki c kodları çalışmaktadır. yalnız ben c bilmiyorum ve programa
benim müdahale etmem lazım. bu kodları picbasic'e çevirebilecek bir arkadaş var mı?
saa 1064'ün proteus modeli elektrotekno'da aratırsanız extra library olarak karşınıza
çıkacaktır. yardımlarınız için çok teşekkürler...
treeangle
Tarih: 18.10.2007, 12:24 Mesaj konusu:

ETE Abi, yardımlarını bekliyoruz. Mail adresini bulamadım. Yardımcı olabilir misin?
ete
Tarih: 18.10.2007, 16:03 Mesaj konusu:

Ne elimde SAA1064 var nede önceden bu aleti kullandım. O yüzden data sheete bakarak yardımcı olmaya çalışacağım.

Bende ekrana 1234 yazdıracak komutu vermeye çalışayım.

I2CWRITE DTA,CLK,%01110110,[0,7,6,91,79,102]

Burada, komut şöyle çalışmaktadır,

I2CWRITE DTA,CLK,%01110110,[Instr.Byte,Control Byte,BIR Rakamı karşılığı,IKI Rakamı Karşılığı,UC Karşılığı,DORT Karşılığı]

Buna bakarak programın gerisini halledebilirsin. Sanırım.

Aslında Slave adress byte ı olan %01110110 yerine %01110000 da verilebilir sanıyorum. Devresi olana denemesi bedava dene onayla.

Bu alette hoşuma gitmeyen bir durum var. 4 adet displayin ortak Anot uçları (yada ortak katod) ikişer ikişer guruplanmış. Peki bu durumda 4 adet displayi nasıl multiplex leyecek anlamadım doğrusu. 1 nolu displaye 1 değerini yazdırırken aynı değer 3 nolu displayde de gözükmesi gerekmezmi. İşin bu kısmını nasıl halletmiş anlayan varsa açıklasın lütfen.


Ete
patan_mustafa
Tarih: 18.10.2007, 21:01 Mesaj konusu:

Merhaba; devre şemasından görebildiğim kadarıyla ilk grup ile ikinci grup arasında segmentleri farklı bağlamış. yani 1. displey ile 3. displeyin ortak katot/anot uçları aynı yerde ama segmentleri farklı yerde. yani 1. displeyde 1 yazmak için gerekli veriyi 1. grubun segmentlerine verirken, 2. grubda 3. displeyde görünmesini istediği rakamın bilgisinide 2. grubun segmentlerine verirse displeyleri kullanmış olur ortak uçları aynı yere bağlı olmuş olsa bile.
ete
Tarih: 18.10.2007, 21:42 Mesaj konusu:

Haklısın segmentleri aynı yere bağlı zannetmiştim. Bilgi için teşekkürler.
Ete
treeangle
Tarih: 19.10.2007, 09:00 Mesaj konusu:

yukarıda i2cwrite ile yazılmış satırı uyguladım. fakat sonuç alamadım.
acaba bu segmentlerin değişik yerde olmasından dolayı program da
değişecek mi? portc.4 data, portc.3'ü de clk olarak bağladım.
yani,

I2CWRITE portc.4,portc.3,%01110110,[0,7,6,91,79,102]

programa başka herhangi birşey yazmadım.
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
1. sayfa (Toplam 2 sayfa)
Sayfaya git 1, 2  Sonraki

saa 1064 ve pıcbasıc

Gizlilik Politikası

PLC programming