output text on Seven-segment display, 4 digits, SPI, 74HC4094PW

Dependents:   Exam_TK Exam_TK

QuadDisplay2.cpp

Committer:
docent
Date:
2019-06-13
Revision:
0:f8d176816ac2

File content as of revision 0:f8d176816ac2:

#include "QuadDisplay2.h"
#include "mbed.h"

QuadDisplayMy::QuadDisplayMy(SPI *spi, PinName cs_pin) : 
        _dev_spi(spi), _cs_pin(cs_pin)
{
    assert (spi);
   _cs_pin = 0;  
}

void QuadDisplayMy::displayDigits(uint8_t *text)
{
    int i;
     _dev_spi->lock();
     _cs_pin = 0;  
     for (i=0;i<4;i++)
        _dev_spi->write(conv(text[i])); 
     _cs_pin = 1;
     _dev_spi->unlock(); 
}

uint8_t QuadDisplayMy::conv(uint8_t c)
{
    uint8_t a;
    switch (c){
       case char(0):
          a=QD_NONE;
          break; 
       case char(1):
          a=QD_DOT;
          break; 
       case char(2):
          a=QD_MINUS;
          break;           
       case char(3):
          a=QD_UNDERSCORE;
          break; 
       case char(4):
          a=QD_DEGREE;
          break; 
       case char(5):
          a=QD_UNDER_DEGREE;
          break;         
       case char(6):
          a=QD_UPPERSCORE;
          break; 
       case char(7):
          a=QD_COMMAS;
          break; 
       case char(8):
          a=QD_UNDERCOMMAS;
          break;                            
       
       case '-':     
          a=QD_MINUS;  
          break;                                              
       case '0':
          a=QD_0;
          break;
       case '1':
          a=QD_1; 
          break;
       case '2':
          a=QD_2; 
          break;          
       case '3':
          a=QD_3;
          break;
       case '4':
          a=QD_4;
          break; 
       case '5':
          a=QD_5;
          break;
       case '6':
          a=QD_6;
          break; 
       case '7':
          a=QD_7;
          break; 
       case '8':
          a=QD_8;
          break;
       case '9':
          a=QD_9;
          break;  
       case 'd':
       case 'D':         
          a=QD_d;
          break;            
       case 'P':
       case 'p':         
          a=QD_P;
          break;    
       case 'H':
       case 'h':         
          a=QD_H;
          break;                                
       default:
          a=QD_NONE;                                         
    }  
    return a^0xff;     
}