Very simple library for controll a 7 segment display.

Dependents:   Demo_Led7seg TP1_EJER02_FERNANDEZ_CLERICI TP1_EJER3 Ejercicio3JalleVentiades ... more

Committer:
trombettamichele
Date:
Fri Apr 22 22:30:33 2011 +0000
Revision:
0:ccabe7ff24e8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
trombettamichele 0:ccabe7ff24e8 1 #include "mbed.h"
trombettamichele 0:ccabe7ff24e8 2 #include "Multi7Seg.h"
trombettamichele 0:ccabe7ff24e8 3 // Simple library that can controll a matrix of 7 segment led displays
trombettamichele 0:ccabe7ff24e8 4 // Created by Michele Trombetta
trombettamichele 0:ccabe7ff24e8 5 // Copyright 2010 5OFT. All rights reserved.
trombettamichele 0:ccabe7ff24e8 6
trombettamichele 0:ccabe7ff24e8 7 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) {
trombettamichele 0:ccabe7ff24e8 8 _ndisp = 2;
trombettamichele 0:ccabe7ff24e8 9 _speed = 0.001;
trombettamichele 0:ccabe7ff24e8 10 }
trombettamichele 0:ccabe7ff24e8 11
trombettamichele 0:ccabe7ff24e8 12 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) {
trombettamichele 0:ccabe7ff24e8 13 _ndisp = 3;
trombettamichele 0:ccabe7ff24e8 14 _speed = 0.001;
trombettamichele 0:ccabe7ff24e8 15 }
trombettamichele 0:ccabe7ff24e8 16
trombettamichele 0:ccabe7ff24e8 17 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) {
trombettamichele 0:ccabe7ff24e8 18 _ndisp = 4;
trombettamichele 0:ccabe7ff24e8 19 _speed = 0.001;
trombettamichele 0:ccabe7ff24e8 20 }
trombettamichele 0:ccabe7ff24e8 21
trombettamichele 0:ccabe7ff24e8 22 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) {
trombettamichele 0:ccabe7ff24e8 23 _ndisp = 5;
trombettamichele 0:ccabe7ff24e8 24 _speed = 0.001;
trombettamichele 0:ccabe7ff24e8 25 }
trombettamichele 0:ccabe7ff24e8 26
trombettamichele 0:ccabe7ff24e8 27 void Multi7Seg::write(unsigned int number) {
trombettamichele 0:ccabe7ff24e8 28 if (_format) { //Dec
trombettamichele 0:ccabe7ff24e8 29 _num1 = number / 10000;
trombettamichele 0:ccabe7ff24e8 30 _num2 = (number % 10000)/1000;
trombettamichele 0:ccabe7ff24e8 31 _num3 = (number % 1000)/100;
trombettamichele 0:ccabe7ff24e8 32 _num4 = (number % 100)/10;
trombettamichele 0:ccabe7ff24e8 33 _num5 = number % 10;
trombettamichele 0:ccabe7ff24e8 34 } else { //Hex
trombettamichele 0:ccabe7ff24e8 35 _num2 = (number % 65536)/4096;
trombettamichele 0:ccabe7ff24e8 36 _num3 = (number % 4096)/256;
trombettamichele 0:ccabe7ff24e8 37 _num4 = (number % 256)/16;
trombettamichele 0:ccabe7ff24e8 38 _num5 = number % 16;
trombettamichele 0:ccabe7ff24e8 39 }
trombettamichele 0:ccabe7ff24e8 40
trombettamichele 0:ccabe7ff24e8 41 switch (_ndisp) {
trombettamichele 0:ccabe7ff24e8 42 case 5:
trombettamichele 0:ccabe7ff24e8 43 _disps = 0;
trombettamichele 0:ccabe7ff24e8 44 _led_7seg.write((unsigned char)_num1);
trombettamichele 0:ccabe7ff24e8 45 _disps = 16;
trombettamichele 0:ccabe7ff24e8 46 wait(_speed);
trombettamichele 0:ccabe7ff24e8 47 case 4:
trombettamichele 0:ccabe7ff24e8 48 _disps = 0;
trombettamichele 0:ccabe7ff24e8 49 _led_7seg.write((unsigned char)_num2);
trombettamichele 0:ccabe7ff24e8 50 _disps = 8;
trombettamichele 0:ccabe7ff24e8 51 wait(_speed);
trombettamichele 0:ccabe7ff24e8 52 case 3:
trombettamichele 0:ccabe7ff24e8 53 _disps = 0;
trombettamichele 0:ccabe7ff24e8 54 _led_7seg.write((unsigned char)_num3);
trombettamichele 0:ccabe7ff24e8 55 _disps = 4;
trombettamichele 0:ccabe7ff24e8 56 wait(_speed);
trombettamichele 0:ccabe7ff24e8 57 case 2:
trombettamichele 0:ccabe7ff24e8 58 _disps = 0;
trombettamichele 0:ccabe7ff24e8 59 _led_7seg.write((unsigned char)_num4);
trombettamichele 0:ccabe7ff24e8 60 _disps = 2;
trombettamichele 0:ccabe7ff24e8 61 wait(_speed);
trombettamichele 0:ccabe7ff24e8 62
trombettamichele 0:ccabe7ff24e8 63 _disps = 0;
trombettamichele 0:ccabe7ff24e8 64 _led_7seg.write((unsigned char)_num5);
trombettamichele 0:ccabe7ff24e8 65 _disps = 1;
trombettamichele 0:ccabe7ff24e8 66 wait(_speed);
trombettamichele 0:ccabe7ff24e8 67 }
trombettamichele 0:ccabe7ff24e8 68 _disps = 0;
trombettamichele 0:ccabe7ff24e8 69 }
trombettamichele 0:ccabe7ff24e8 70
trombettamichele 0:ccabe7ff24e8 71 void Multi7Seg::setformat(bool format) {
trombettamichele 0:ccabe7ff24e8 72 _format = format;
trombettamichele 0:ccabe7ff24e8 73 }
trombettamichele 0:ccabe7ff24e8 74
trombettamichele 0:ccabe7ff24e8 75 void Multi7Seg::setspeed(float speed) {
trombettamichele 0:ccabe7ff24e8 76 _speed = speed;
trombettamichele 0:ccabe7ff24e8 77 }