Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: FourDigitLED.cpp
- Revision:
- 1:c94aa39af4c7
- Parent:
- 0:7a8925d2a8e7
- Child:
- 2:c4e8b2fd8f7e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FourDigitLED.cpp Fri Jun 26 08:01:58 2015 +0000 @@ -0,0 +1,62 @@ +#include <mbed.h> +#include "FourDigitLED.h" + +static unsigned char SegPattern[] = { + 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f, + 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 +}; + +FourDigitLED::FourDigitLED(PinName seg0, PinName seg1, PinName seg2, PinName seg3, + PinName seg4, PinName seg5, PinName seg6, PinName dot, + PinName digit0, PinName digit1, PinName digit2, PinName digit3 +) +{ + LEDs = new BusOut( seg0, seg1, seg2, seg3, seg4, seg5, seg6, dot, digit0, digit1, digit2, digit3) ; + scan_digit = 0 ; + /* test LEDs */ + LEDs->write(0xfe00 | MASK_DOT | 0x0) ; + wait(1.0) ; + setNum(0, 8); setNum(1, 8); setNum(2, 8); setNum(3, 8); + setDot(0, 1); setDot(1, 1); setDot(2, 1); setDot(3, 1); + /* end test */ + Scan_tick.attach(this, &FourDigitLED::Scan, 0.005); + wait(1.0) ; + val[0] = 0 ; val[1] = 0 ; val[2] = 0 ; val[3] = 0 ; +} + +FourDigitLED::~FourDigitLED() +{ +} + +void FourDigitLED::Scan (void) +{ + int d ; + d= ++scan_digit ; + d= d % DIGITS ; + LEDs->write(~(0x100 << d) & 0xff00 | (val[d] & 0xff) ) ; +} + +unsigned int FourDigitLED::setPtn(int d, unsigned int ptn) +{ + val[d] = ptn & 0xff; + return ptn ; +} + +int FourDigitLED::setNum(int d, int n) +{ + if((n <0) || (n >= 16)) + val[d] = val[d] & 0xff80 ; + else + val[d] = (val[d] & 0xff80) | SegPattern[n] ; + return n ; +} + +int FourDigitLED::setDot(int d, bool n) +{ + val[d] = (val[d] & 0xff7f) | ((n == false) ? 0x0 : 0x80) ; + return n ; +} + +void FourDigitLED::dump(void) { + printf("val = %02x, %02x, %02x, %02x\n", val[3], val[2], val[1], val[0]) ; +}