Alphanumeric display for iHvZ

AlphaNumDisplay.cpp

Committer:
etherealflaim
Date:
2010-12-12
Revision:
2:48d04cc40e1c
Parent:
1:d5692deaa688

File content as of revision 2:48d04cc40e1c:

#include "mbed.h"
#include "AlphaNumDisplay.hpp"

unsigned char AlphaNumDisplay::m_alphadisplay[][11]= { // < Table of symbols
        {0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0 }, // 0
        {1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 }, // 1
        {0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 }, // 2
        {0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1 }, // 3
        {1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1 }, // 4
        {0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1 }, // 5
        {0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1 }, // 6
        {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 }, // 7
        {0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1 }, // 8
        {0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1 }, // 9
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, // blank
        {0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1 }, // A
        {1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1 }, // B
        {0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 }, // C
        {1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1 }, // D
        {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 }, // E
        {0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1 }, // F
        {0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1 }, // G
        {1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1 }, // H
        {0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1 }, // I
        {1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1 }, // J
        {1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1 }, // K
        {1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 }, // L
        {0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1 }, // M
        {1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1 }, // N
        {0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1 }, // O
        {0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1 }, // P
        {0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1 }, // Q
        {0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1 }, // R
        {0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1 }, // S
        {0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 }, // T
        {1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1 }, // U
        {1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1 }, // V
        {1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1 }, // W
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, // X
        {1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1 }, // Y
        {0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0 }, // Z
        {1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0 }, // *
        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0 }  // check mark   
    };
    
    AlphaNumDisplay::AlphaNumDisplay(PinName ht, PinName hm, PinName hb,
        PinName vtl, PinName vbl, PinName vtm, PinName vbm, 
        PinName vtr, PinName vbr, PinName dtl, PinName dtr)
    : m_htop(ht), m_hmiddle(hm), m_hbottom(hb), m_vtopleft(vtl), m_vbottomleft(vbl),
        m_vtopmiddle(vtm),  m_vbottommiddle(vbm),  m_vtopright(vtr),  m_vbottomright(vbr),
        m_dtopleft(dtl), m_dtopright(dtr) 
    {
    }
      
    void AlphaNumDisplay::display(unsigned char c) {
        unsigned char index = ALPHA_NUM_CLEAR_I;
        if(c == ALPHA_NUM_CHECK) index = ALPHA_NUM_CHECK_I;
        if(c == ALPHA_NUM_CLEAR) index = ALPHA_NUM_CLEAR_I;
        if(c == ALPHA_NUM_STAR)  index = ALPHA_NUM_STAR_I;
        if(c < 10)               index = c + ALPHA_NUM_ZERO_I;
        if(c >= '0' && c <= '9') index = c - '0' + ALPHA_NUM_ZERO_I;
        if(c >= 'a' && c <= 'z') index = c - 'a' + ALPHA_NUM_A_I;
        if(c >= 'A' && c <= 'Z') index = c - 'A' + ALPHA_NUM_A_I;
    
        m_htop = AlphaNumDisplay::m_alphadisplay[index][0];
        m_hmiddle = AlphaNumDisplay::m_alphadisplay[index][1];
        m_hbottom = AlphaNumDisplay::m_alphadisplay[index][2];
        m_vtopleft = AlphaNumDisplay::m_alphadisplay[index][3];
        m_vbottomleft = AlphaNumDisplay::m_alphadisplay[index][4];
        m_vtopmiddle = AlphaNumDisplay::m_alphadisplay[index][5];
        m_vbottommiddle = AlphaNumDisplay::m_alphadisplay[index][6];
        m_vtopright = AlphaNumDisplay::m_alphadisplay[index][7];
        m_vbottomright = AlphaNumDisplay::m_alphadisplay[index][8];
        m_dtopleft = AlphaNumDisplay::m_alphadisplay[index][9];
        m_dtopright = AlphaNumDisplay::m_alphadisplay[index][10];        
    }