Very simple library for controll a 7 segment display.
Dependents: Demo_Led7seg TP1_EJER02_FERNANDEZ_CLERICI TP1_EJER3 Ejercicio3JalleVentiades ... more
Multi7Seg.cpp@0:ccabe7ff24e8, 2011-04-22 (annotated)
- Committer:
- trombettamichele
- Date:
- Fri Apr 22 22:30:33 2011 +0000
- Revision:
- 0:ccabe7ff24e8
Who changed what in which revision?
User | Revision | Line number | New 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 | } |