MAX7219 DP AKTİF ETME

Başlatan alfurkan1064, 09 Mart 2021, 23:05:01

alfurkan1064

Merhabalar max7219 ile sürülen digitlerin dp lerini nasıl aktif edebilirim ?

Not:Normal olarak çalıştırabiliyoırum sadece dp(.) pinlerini aktif edemiyorum.


Max7219 Kütüphanesi:
/* 
****************************************************************************************************** 
* Chip        : MAX7219 
* Author      : Burak HANÇERLİ 
* Mail        : bhancerli@gmail.com 
* Description : MAX7219 LED Display Driver Routines - v1.1 
*    
*  
*  The Maxim MAX7219 is a led display driver. It can control up to 64 individual leds or eight 
*  7-segment-display. 
* 
*  Max7912 uses 3-wire to communicate with microcontroller. 
*    - DATA   : Used to transmit data. 
*    - CLOCK  : Used to generate clock signal which is required for transmitting each bite of data. 
*    - LOAD   : Used to load data to the Max7913's Dual-Port SRam. 
*                  
*  DESCRIPTION OF USER FUNCTIONS 
* ------------------------------- 
*  init7219()                      : Required for initialize MAX7219. This function have has to be called before calling any function. 
*  write7219(digit, data)          : Writes data to the specified digit number. If Decimal Point needed on any digit, just add 
                                     128 to the data. 
                                     For example : write7219(1,3)   = writes "3"  to first digit. 
                                                   write7219(1,131) = writes "3." to first digit. 
*  shutdown7219(operatingMode)     : Set operatingMode = 0 to Shutdown mode 
*                                    Set operatingMode = 1 to Normal mode 
*  decode7219(decodeMode)          : Sets digit-decode mode. code-B or no-decode mode. Look up datasheet for detailed instructions. 
*                                    For example, if user sets decodeMode = 4, (4=0b00000100), then 3. digit will be 
*                                    decoded as code-B algorithm, but other pins don't have any decode mode. 
*  brightness7219(brightnessLevel) : Sets brightness level of digits. 
*                                    brightnessLevel = 0  ; minimum brightness level 
*                                    brightnessLevel = 15 ; maximum brigthness level 
*                                    
*  scanLimit7219(totalDigitNumber) : Sets number of connected digits to the MAX7219. When init7912() function is called, 
                                     number of digit will be setted to 4 as default. 
                                      
*  test7219(testMode)              : Sets 7-segment-display test-mode on or off. 
                                     testMode = 0 ; normal operation mode 
                                     testMode = 1 ; display test mode 
                                      
** THIS LIBRARY CAN BE USED, DEVELOPED OR SHARED WITH REFERRING THE AUTHOR.                                    
******************************************************************************************************/ 


// CONSTANTS // 
// - Connection Pins (CHANGE THESE PINS AS YOU WISH) 
#define CLK       pin_D7
#define LOAD      pin_D6 
#define SEND_DATA pin_D5

// - Mode Selection 
#define decode 0x09 
#define brightness 0x0A 
#define scanLimit 0x0B 
#define shutDown 0x0C 
#define dispTest 0x0F 

// Firt 4 bites (not used generally) 
#define firstBites 0x0 

// Wait function 
#define wait delay_ms(1) 

long serialData=0; 



void clock7219() // clock (CLK) pulse 
{ 
   output_low(CLK); 
   wait; 
   output_high(CLK); 
} 

void load7219()  // load (LOAD) pulse 
{ 
   output_low(LOAD); 
   wait; 
   output_high(LOAD); 
} 

void send7219(long data) // send 16 bit data word to the 7219 
{ 

   int count; 
   for (count=0; count<16; ++count) 
   { 
      output_bit(SEND_DATA, shift_left(&data,2,0)); // set data (DIN) level 
      clock7219(); // clock data in 
   } 
   load7219(); // latch the last 16 bits clocked 
} 

void dataMaker(byte mode, int dataIncoming) // Standart data package function 
{ 
   serialData=firstBites; 
   serialData<<=4; 
   serialData|=mode; 
   serialData<<=8; 
   serialData|=dataIncoming; 
   send7219(serialData); 
} 

void write7219(byte digit, int data) // Send data to digits 
{ 
   dataMaker(digit, data); 
} 

void shutdown7219(int operatingMode) 
{ 
   dataMaker(shutDown,operatingMode); 
} 

void decode7219(int decodeMode) 
{ 
   dataMaker(decode, decodeMode); 
} 

void brightness7219(int brightnessLevel) 
{ 
   dataMaker(brightness, brightnessLevel); 
} 

void scanLimit7219(int totalDigitNumber) 
{ 
   dataMaker(scanLimit, totalDigitNumber); 
} 

void test7219(int testMode) 
{ 
   dataMaker(dispTest, testMode); 
} 

void init7219() 
{ 
   dataMaker(shutDown, 1);     // No-Shutdown mode. Normal Operation mode. 
   dataMaker(decode, 0xFF);      // All digits are programmed as code-B decode mode. 
   dataMaker(scanLimit, 7);    // Total digit number set to 4. 
   dataMaker(brightness, 15);  // Full brightness. 
}

CCS C Kodu
write7219(1, (hedef_1%100)/10);
write7219(2, hedef_1%10);


mehmet

write7219(2, (hedef_1%10) + 0x80);
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

alfurkan1064

Alıntı yapılan: mehmet - 11 Mart 2021, 13:40:12
write7219(2, (hedef_1%10) + 0x80);

Mehmet hocam ilginize teşekkür ederim,

Kütüphane içerisindede açıklaması mevcutmuş
*  write7219(digit, data)          : Writes data to the specified digit number. If Decimal Point needed on any digit, just add 
                                     128 to the data. 
                                     For example : write7219(1,3)   = writes "3"  to first digit. 
                                                   write7219(1,131) = writes "3." to first digit.

Lakin şuanda Max7219 ile bu kütüphane üzerinden Harf yazmakta problem yaşıyorum örneğin E harfini yazmak istiyorum Ortak Katot Ekranda :0x79 olması gerekiyor lakin bu hexi ekrana gönderdiğimde saçma bir karakter gösteriyor E'nin karşılıgı :0X7B olarak çıkıyor,bu konuda yardımınızı bekliyorum hocam.

Saygılarımla.

yas

#3
MAX7219 datasheet in 8 . sayfasında 0X0B gönderilmesi gerektiğini söylüyor, yani %xxxx1011 (0X0B) ile %01111011 (0x7B) arasında bir fark olmamış oluyor bu durumda çünkü 4,5,6 ıncı bitler sonucu değiştirmiyor. Muhtemelen decode modunu Code-B olarak kullanıyorsunuz.

mehmet

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

alfurkan1064

Alıntı yapılan: yas - 11 Mart 2021, 21:59:55MAX7219 datasheet in 8 . sayfasında 0X0B gönderilmesi gerektiğini söylüyor, yani %xxxx1011 (0X0B) ile %01111011 (0x7B) arasında bir fark olmamış oluyor bu durumda çünkü 4,5,6 ıncı bitler sonucu değiştirmiyor. Muhtemelen decode modunu Code-B olarak kullanıyorsunuz.
Alıntı yapılan: mehmet - 12 Mart 2021, 01:23:33"E" -> 11

İlginize teşekkür ederim decode modlu ve modsuz olarak kullanıyorum,decode modsuz istediğim değerleri veriyor lakin decode modunda istediğim harfi nasıl yazabilirim ? H-E-L-P- - Dışında örneğin "r"  örnek olarak dediğime bakmayın direk mantığını öğrenmek benim için daha yararlı olur.

Saygılarmla.

mehmet

Decode 0 için karakter tablosunu
kendiniz oluşturacaksınız.
decode7219(0x00);
write7219(0, 0xFF); // ilk haneye 8. yazması gerekir
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr