7 segment display library for mbed This routine support 2,4 and 8 digit anode-common or cathode-common LED.
Revision 7:a19431131213, committed 2014-09-21
- Comitter:
- morecat_lab
- Date:
- Sun Sep 21 08:32:50 2014 +0000
- Parent:
- 6:1de2abf828d6
- Child:
- 9:6d3229c8dc0f
- Commit message:
- add _sinkDriver flag to drive segment pin
Changed in this revision
Sseg.cpp | Show annotated file Show diff for this revision Revisions of this file |
Sseg.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/Sseg.cpp Thu Aug 07 11:44:22 2014 +0000 +++ b/Sseg.cpp Sun Sep 21 08:32:50 2014 +0000 @@ -29,6 +29,7 @@ _updateInterval = (8333 / 2); _zeroSupress = true; _kcommon = false; + _sinkDriver = false; } // 4 digit @@ -41,6 +42,7 @@ _updateInterval = (8333 / 4); _zeroSupress = true; _kcommon = false; + _sinkDriver = false; } // 8 digit @@ -54,6 +56,7 @@ _updateInterval = (8333 / 8); _zeroSupress = true; _kcommon = false; + _sinkDriver = false; } @@ -70,6 +73,10 @@ _kcommon = true; } +void Sseg::setSinkDriver(void) { + _sinkDriver = true; +} + char Sseg::segCh(char i) { return Sseg::numConv[i]; } @@ -267,7 +274,7 @@ void Sseg::updateSeg(void) { if( (++_dig) >= _numOfDigs) _dig = 0; - _segPins = ( _kcommon) ? _buffer[_dig] : ~_buffer[_dig]; + _segPins = (( _kcommon) || (_sinkDriver)) ? _buffer[_dig] : ~_buffer[_dig]; } bool Sseg::update(void) {
--- a/Sseg.h Thu Aug 07 11:44:22 2014 +0000 +++ b/Sseg.h Sun Sep 21 08:32:50 2014 +0000 @@ -48,6 +48,7 @@ int _dig; // support 4 or 8 bool _zeroSupress; bool _kcommon; // Cathode-common flag + bool _sinkDriver; // invert segment drive, if true void initConv(void); Timer timer; public: @@ -129,6 +130,11 @@ * use Anode Common LED (default) */ void setAcommon(void); + + /** + * sink driver + */ + void setSinkDriver(void); /** * get a charcter pattern from a number