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.
FourDigitLED.cpp
- Committer:
- takashikojo
- Date:
- 2015-06-26
- Revision:
- 1:c94aa39af4c7
- Parent:
- 7segment4LED.cpp@ 0:7a8925d2a8e7
- Child:
- 2:c4e8b2fd8f7e
File content as of revision 1:c94aa39af4c7:
#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]) ;
}