PIC ile 8x16 kayan yazı.

Başlatan unforgiveenn, 01 Ocak 2015, 17:52:29

unforgiveenn

Merhaba arkadaşlar. PIC 16F877 kontrollü 8x16 led matrisle kayan yazı devresi yapmaya çalışıyorum. 10 farklı giriş butonu sayesinde butonlara basıldığında farklı yazılar yazılması isteniyor.

Hazır olan programı C ile düzenlemem gerekiyor. Benim sorunum pic877A da C ve D portlarına bağlayacağım butonlar sayesinde farklı yazılar yazdırabilmek. Aşağıda yazılı programa ekleme yapmam için yardımlarınızı bekliyorum.
C ve D portlarına buton bağlamak istediğim için bu pinleri nasıl kontrol edebilirim?  Aşağıdaki programda hangi komutlaarı eklemem lazım




#include <pic.h>
#include <delay.c>

main(void)
{
unsigned char gecici_dizi[16];
unsigned char i,a,toplam_sutun, metin[];
signed int kayma,deger;
unsigned const char metin1[]={
0xFF,0x89,0x89,0x89,0x76,0x00, // B
0x84,0xFD,0x84,0x00,           // İ
0xFF,0x80,0x80,0x80,0x80,0x00, // L
0x84,0xFD,0x84,0x00,           // İ
0xFF,0x02,0x0C,0x02,0xFF,0x00, // M
0x00,0x00,0x00,0x00,           // Bosluk
0x38,0x40,0x80,0x40,0x38,0x00, // v
0x70,0xA8,0xA8,0xA8,0xB0,0x00, // e
0x00,0x00,0x00,0x00,          // Bosluk
0x01,0x01,0xFF,0x01,0x01,0x00, // T
0xFF,0x89,0x89,0x89,0x81,0x00, // E
0xFF,0x18,0x24,0x42,0x81,0x00, // K
0xFF,0x04,0x08,0x10,0xFF,0x00, // N
0x84,0xFD,0x84,0x00,           // İ
0xFF,0x18,0x24,0x42,0x81,0x00};// K

unsigned const char metin2[]={
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0xFF,0x81,0x81,0x81,0x7E,0x00, // D
0xFF,0x04,0x08,0x10,0xFF,0x00, // N
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0xFF,0x04,0x08,0x10,0xFF,0x00}; // N

//Metindeki sütunların sayısını hesapla
toplam_sutun=80; //10x6+5x4=60+20=80

//Port ayarlama işlemleri
TRISB=0;
TRISA=0;
CMCON=0x07;
PORTB=0x00;


for(;;){//Ana döngü
//Geçici diziyi sıfırla
for(i=0;i<=15;i++){
gecici_dizi=0; //Dizi elemanları başlangıçta 0
}

//Kaydırma işlemleri   
for(kayma=-14;kayma<=toplam_sutun;kayma++){

//Metni 16 sütunluk parçalara böl
for(i=0;i<=15;i++){
deger=i+kayma;
if(deger<0)gecici_dizi=0; //metin girişi
if(deger>=0&&deger<=toplam_sutun-1)
gecici_dizi=metin1[deger];
if(deger>toplam_sutun)gecici_dizi=0; //metin çıkışı
}

//Tarama işlemleri
for(a=0;a<40;a++){ //Aynı görüntüyü 40 kez tekrarla
for(i=0;i<=15;i++){ //Geçici diziyi görüntüle
PORTB=gecici_dizi; // Veriyi PortB'ye gönder
PORTA=i; // ilgili sütun'u seç
DelayUs(200); // 200 mikrosaniye bekle
}}}

}// işlemleri tekrarla
}// Program sonu

Gökhan BEKEN

Butona basıldığını anlayınca metin1 adlı dizinin içindekileri silip, eklemeniz gerekenleri ekleyeceksiniz. Ancak, bunu yapabilmeniz için için her harfin nasıl yazılacağını belirten bir dizi oluşturmanız lazım. Tabi bunu yapabilmeniz için biraz hafızaya ihtiyacınız var.
Özel mesaj okumuyorum, lütfen göndermeyin.