#include "hal.h"
#define row_port PORT_A
#define col_port PORT_B
#define row7 0x80
#define col7 ~0x80
void dot_matrix(volatile uint8_t row_num,volatile uint8_t col_num);
void dot_matrix_off();
void dot_matrix_row_data(uint8_t);
void setup() {
// put your setup code here, to run once:
init_port(row_port,output);
init_port(col_port,output);
//capital letters
const uint8_t Cap_A[8]={0x00,0xf8,0x24,0x22,0x21,0x22,0x24,0xf8};
const uint8_t Cap_S[8]={0x46,0x49,0x49,0x49,0x49,0x49,0x49,0x31};
//numbers
const uint8_t num_1[8]={0x00,0x00,0x42,0x41,0x7f,0x40,0x40,0x00};
const uint8_t num_2[8]={0x79,0x49,0x49,0x49,0x49,0x49,0x49,0x4f};
//small letters
const uint8_t small_a[8]={0x00,0x00,0x31,0x49,0x49,0x49,0x36,0x40};
const uint8_t small_q[8]={0x06,0x09,0x09,0x09,0x09,0x76,0x80,0x40};
//symbols
const uint8_t symbol_dollar[8]={0x46,0x49,0x49,0xff,0xff,0x49,0x49,0x31};
const uint8_t symbol_hash[8]={0xa8,0x68,0xa8,0x78,0x2c,0x3a,0x2c,0x2a};
const uint8_t symbol_alpha[8]={0x18,0x24,0x24,0x18,0x1c,0x22,0x41,0x00};
const uint8_t symbol_ohm[8]={0x80,0xb8,0xc4,0x04,0x04,0xc4,0xb8,0x80};
while(1)
{
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(Cap_A);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(Cap_S);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(num_1);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(num_2);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(small_a);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(small_q);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(symbol_dollar);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(symbol_hash);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(symbol_alpha);
for(volatile long i=0;i<51;i++)
dot_matrix_row_data(symbol_ohm);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
//needed to remove ghosting
void dot_matrix_off()
{
port_drive_out(col_port,0xff);
}
void dot_matrix_row_data(const uint8_t input_arr[8])
{
for(volatile uint8_t col=0;col<8;col++)
{
dot_matrix_off();//clear display to remove ghosting
port_drive_out(row_port,input_arr[col]);
port_drive_out(col_port,~(1<<col));
for(volatile long i=0;i<1000;i++);
}
}