Very simple library for controll a 7 segment display.

Dependents:   Demo_Led7seg TP1_EJER02_FERNANDEZ_CLERICI TP1_EJER3 Ejercicio3JalleVentiades ... more

Multi7Seg.cpp

Committer:
trombettamichele
Date:
2011-04-22
Revision:
0:ccabe7ff24e8

File content as of revision 0:ccabe7ff24e8:

#include "mbed.h"
#include "Multi7Seg.h"
//  Simple library that can controll a matrix of 7 segment led displays
//  Created by Michele Trombetta
//  Copyright 2010 5OFT. All rights reserved.

Multi7Seg::Multi7Seg(PinName a, PinName b, PinName c, PinName d, PinName e, PinName f, PinName g, PinName disp1, PinName disp2, bool led_type): _disps(disp1, disp2), _led_7seg(a, b, c, d, e, f, g, led_type) {
    _ndisp = 2;
    _speed = 0.001;
}

Multi7Seg::Multi7Seg(PinName a, PinName b, PinName c, PinName d, PinName e, PinName f, PinName g, PinName disp1, PinName disp2, PinName disp3, bool led_type): _disps(disp1, disp2, disp3), _led_7seg(a, b, c, d, e, f, g, led_type) {
    _ndisp = 3;
    _speed = 0.001;
}

Multi7Seg::Multi7Seg(PinName a, PinName b, PinName c, PinName d, PinName e, PinName f, PinName g, PinName disp1, PinName disp2, PinName disp3, PinName disp4, bool led_type): _disps(disp1, disp2, disp3, disp4), _led_7seg(a, b, c, d, e, f, g, led_type) {
    _ndisp = 4;
    _speed = 0.001;
}

Multi7Seg::Multi7Seg(PinName a, PinName b, PinName c, PinName d, PinName e, PinName f, PinName g, PinName disp1, PinName disp2, PinName disp3, PinName disp4, PinName disp5, bool led_type): _disps(disp1, disp2, disp3, disp4, disp5), _led_7seg(a, b, c, d, e, f, g, led_type) {
    _ndisp = 5;
    _speed = 0.001;
}

void Multi7Seg::write(unsigned int number) {
    if (_format) {  //Dec
        _num1 = number / 10000;
        _num2 = (number % 10000)/1000;
        _num3 = (number % 1000)/100;
        _num4 = (number % 100)/10;
        _num5 = number % 10;
    } else {    //Hex
        _num2 = (number % 65536)/4096;
        _num3 = (number % 4096)/256;
        _num4 = (number % 256)/16;
        _num5 = number % 16;
    }

    switch (_ndisp) {
        case 5:
            _disps = 0;
            _led_7seg.write((unsigned char)_num1);
            _disps = 16;
            wait(_speed);
        case 4:
            _disps = 0;
            _led_7seg.write((unsigned char)_num2);
            _disps = 8;
            wait(_speed);
        case 3:
            _disps = 0;
            _led_7seg.write((unsigned char)_num3);
            _disps = 4;
            wait(_speed);
        case 2:
            _disps = 0;
            _led_7seg.write((unsigned char)_num4);
            _disps = 2;
            wait(_speed);

            _disps = 0;
            _led_7seg.write((unsigned char)_num5);
            _disps = 1;
            wait(_speed);
    }
    _disps = 0;
}

void Multi7Seg::setformat(bool format) {
    _format = format;
}

void Multi7Seg::setspeed(float speed) {
    _speed = speed;
}