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.
Dependents: ACC_LCD_341_Basic ESeif-SSD541-HW141 SBart_ACC_LCD_341_Basic ACC_LCD_341_Basic_Final_ALM
Fork of SLCD by
Revision 6:f4773221794b, committed 2014-03-14
- Comitter:
- Tomo2k
- Date:
- Fri Mar 14 15:13:15 2014 +0000
- Parent:
- 5:6e3c11967108
- Child:
- 7:0e084b33d730
- Commit message:
- Magic Wand formatted (MBED standard style)
Changed in this revision
--- a/FRDM-s401.h Thu Feb 27 22:02:34 2014 +0000 +++ b/FRDM-s401.h Fri Mar 14 15:13:15 2014 +0000 @@ -9,7 +9,7 @@ */ // HARDWARE_CONFIG Changing LCD pins Allows to verify all LCD pins easily -// if HARDWARE_CONFIG == 0 FRDM-KL46 RevB +// if HARDWARE_CONFIG == 0 FRDM-KL46 RevB // if HARDWARE_CONFIG == 1 FRDM-KL46 RevA #ifdef FRDM_REVA #define HARDWARE_CONFIG 1
--- a/LCDconfig.h Thu Feb 27 22:02:34 2014 +0000 +++ b/LCDconfig.h Fri Mar 14 15:13:15 2014 +0000 @@ -11,7 +11,7 @@ #define _LCDALRCLKSOURCE (0) // 0 -- External clock 1 -- Alternate clock #define _LCDCLKPSL (0) // Clock divider to generate the LCD Waveforms -#define _LCDSUPPLY (1) +#define _LCDSUPPLY (1) #define _LCDHREF (0) // 0 or 1 #define _LCDCLKSOURCE (1) // 0 -- External clock 1 -- Alternate clock #define _LCDLCK (1) //Any number between 0 and 7 @@ -23,7 +23,7 @@ #define _LCDCLKSOURCE (1) // 0 -- External clock 1 -- Alternate clock #define _LCDALRCLKSOURCE (0) // 0 -- External clock 1 -- Alternate clock #define _LCDCLKPSL (0) // Clock divider to generate the LCD Waveforms -#define _LCDSUPPLY (0) +#define _LCDSUPPLY (0) #define _LCDLOADADJUST (3) // CPSEL = 1 0 -- 8000 pf 1 -- 6000 pf 2 -- 4000 pf 3 -- 2000 pf #define _LCDALTDIV (0) // CPSEL = 1 0 -- 8000 pf 1 -- 6000 pf 2 -- 4000 pf 3 -- 2000 pf #define _LCDRVTRIM (0) // CPSEL = 1 0 -- 8000 pf 1 -- 6000 pf 2 -- 4000 pf 3 -- 2000 pf @@ -40,27 +40,27 @@ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~ LCD Control Register 0 ~|~|~|~|~|~|~|~|~|~|~|~|~*/ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|*/ -#define _LCDINTENABLE (1) +#define _LCDINTENABLE (1) /*~|~|~|~|~|~|~|~|~|~|~|~|~|~ LCD Control Register 1 ~|~|~|~|~|~|~|~|~|~|~|~|~|*/ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|*/ #define _LCDFRAMEINTERRUPT (0) //0 Disable Frame Frequency Interrupt - //1 Enable an LCD interrupt that coincides with the LCD frame frequency +//1 Enable an LCD interrupt that coincides with the LCD frame frequency #define _LCDFULLCPLDIRIVE (0) // 0 GPIO shared with the LCD. Inputs levels and internal pullup reference to VDD - // 1 If VSUPPLY=11and RVEN=0. Inputs levels and internal pullup reference to VLL3 +// 1 If VSUPPLY=11and RVEN=0. Inputs levels and internal pullup reference to VLL3 #define _LCDWAITMODE (0) // 0 Allows the LCD driver and charge pump to continue running during wait mode - // 1 Disable the LCD when the MCU goes into wait mode +// 1 Disable the LCD when the MCU goes into wait mode #define _LCDSTOPMODE (0) // 0 Allows the LCD driver and charge pump to continue running during stop2 or stop3 - // 1 Disable the LCD when and charge pump when the MCU goes into stop2 or stop3 +// 1 Disable the LCD when and charge pump when the MCU goes into stop2 or stop3 /*~|~|~|~|~|~|~|~|~|~|~|~|~|~ LCD Voltage Supply Register ~|~|~|~|~|~|~|~|~|~|~|~*/ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|*/ #define _LCDHIGHREF (0) //0 Divide input VIREG=1.0v - //1 Do not divide the input VIREG=1.67v +//1 Do not divide the input VIREG=1.67v #define _LCDBBYPASS (0) //Determines whether the internal LCD op amp buffer is bypassed - //0 Buffered mode - //1 Unbuffered mode - +//0 Buffered mode +//1 Unbuffered mode + /*~|~|~|~|~|~|~|~|~|~|~|~|~|~ LCD Regulated Voltage Control |~|~|~|~|~|~|~|~|~|~*/ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|*/ #define _LCDCONTRAST (1) //Contrast by software 0 -- Disable 1-- Enable @@ -69,13 +69,13 @@ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~ LCD Blink Control Register ~|~|~|~|~|~|~|~|~|~|~|~*/ /*~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|*/ #define _LCDBLINKCONTROL (1) //0 Disable blink mode - //1 Enable blink mode +//1 Enable blink mode #define _LCDALTMODE (0) //0 Normal display - //1 Alternate display for 4 backplanes or less the LCD backplane sequencer changes to otuput an alternate display +//1 Alternate display for 4 backplanes or less the LCD backplane sequencer changes to otuput an alternate display #define _LCDBLANKDISP (0) //0 Do not blank display - //1 Blank display if you put it in 0 the text before blank is manteined +//1 Blank display if you put it in 0 the text before blank is manteined #define _LCDBLINKMODE (0) //0 Display blank during the blink period - //1 Display alternate displat during blink period (Ignored if duty is 5 or greater) +//1 Display alternate displat during blink period (Ignored if duty is 5 or greater) //Calculated values @@ -83,8 +83,8 @@ #define _LCDDUTY (_LCDBACKPLANES-1) //Any number between 0 and 7 #define LCD_WF_BASE LCD->WF8B[0] -// General definitions used by the LCD library -#define LCD_WF(x) *((uint8 *)&LCD_WF_BASE + x) +// General definitions used by the LCD library +#define LCD_WF(x) *((uint8 *)&LCD_WF_BASE + x) /*LCD Fault Detections Consts*/ #define FP_TYPE 0x00 // pin is a Front Plane @@ -95,12 +95,12 @@ #define FDPRS_2 1 #define FDPRS_4 2 #define FDPRS_8 3 -#define FDPRS_16 4 +#define FDPRS_16 4 #define FDPRS_32 5 #define FDPRS_64 6 #define FDPRS_128 7 -// Fault Detect Sample Window Width Values +// Fault Detect Sample Window Width Values #define FDSWW_4 0 #define FDSWW_8 1 #define FDSWW_16 2
--- a/SLCD.cpp Thu Feb 27 22:02:34 2014 +0000
+++ b/SLCD.cpp Fri Mar 14 15:13:15 2014 +0000
@@ -2,257 +2,273 @@
#include "LCDconfig.h"
-const uint8_t WF_ORDERING_TABLE[ ] =
-{
- CHAR1a, // LCD81 --- Pin:5 LCDnAddress=51
- CHAR1b, // LCD82 --- Pin:6 LCDnAddress=52
- CHAR2a, // LCD83 --- Pin:7 LCDnAddress=53
- CHAR2b, // LCD84 --- Pin:8 LCDnAddress=54
- CHAR3a, // LCD85 --- Pin:9 LCDnAddress=55
- CHAR3b, // LCD86 --- Pin:10 LCDnAddress=56
- CHAR4a, // LCD87 --- Pin:11 LCDnAddress=57
- CHAR4b, // LCD88 --- Pin:12 LCDnAddress=58
- CHARCOM0, // LCD77 --- Pin:1 LCDnAddress=4D
- CHARCOM1, // LCD78 --- Pin:2 LCDnAddress=4E
- CHARCOM2, // LCD79 --- Pin:3 LCDnAddress=4F
- CHARCOM3, // LCD80 --- Pin:4 LCDnAddress=50
+const uint8_t WF_ORDERING_TABLE[ ] = {
+ CHAR1a, // LCD81 --- Pin:5 LCDnAddress=51
+ CHAR1b, // LCD82 --- Pin:6 LCDnAddress=52
+ CHAR2a, // LCD83 --- Pin:7 LCDnAddress=53
+ CHAR2b, // LCD84 --- Pin:8 LCDnAddress=54
+ CHAR3a, // LCD85 --- Pin:9 LCDnAddress=55
+ CHAR3b, // LCD86 --- Pin:10 LCDnAddress=56
+ CHAR4a, // LCD87 --- Pin:11 LCDnAddress=57
+ CHAR4b, // LCD88 --- Pin:12 LCDnAddress=58
+ CHARCOM0, // LCD77 --- Pin:1 LCDnAddress=4D
+ CHARCOM1, // LCD78 --- Pin:2 LCDnAddress=4E
+ CHARCOM2, // LCD79 --- Pin:3 LCDnAddress=4F
+ CHARCOM3, // LCD80 --- Pin:4 LCDnAddress=50
};
-const char ASCII_TO_WF_CODIFICATION_TABLE [ ] =
-{
-
- /*
- segA
- ________
- | |
- segF | | segB
- | |
- -segG--
- | |
- segE | | segC
- |________|
- segD
- */
-
-( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 0, offset=0
-(!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = 1, offset=4
-( SEGD+ SEGE+!SEGF+ SEGG) , (!SEGC+ SEGB+ SEGA) ,//Char = 2, offset=8
-( SEGD+!SEGE+!SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 3, offset=12
-(!SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = 4, offset=16
-( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = 5, offset=20
-( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = 6, offset=24
-(!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 7, offset=28
-( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 8, offset=32
-( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 9, offset=36
-(!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = :, offset=40
-(!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = ;, offset=44
-(!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = <, offset=48
-( SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = =, offset=52
-(!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = >, offset=56
-(!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ?, offset=60
-( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = @, offset=64
-(!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = A, offset=68
-( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = B, offset=72
-( SEGD+ SEGE+ SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = C, offset=76
-( SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = D, offset=80
-( SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = E, offset=84
-(!SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = F, offset=88
-( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = G, offset=92
-(!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = H, offset=96
-(!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = I, offset=100
-( SEGD+ SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = J, offset=104
-(!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = K, offset=108
-( SEGD+ SEGE+ SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = L, offset=112
-(!SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = M, offset=116
-(!SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = N, offset=120
-( SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = O, offset=124
-(!SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+ SEGB+ SEGA) ,//Char = P, offset=128
-( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = Q, offset=132
-(!SEGD+ SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = R, offset=136
-( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = S, offset=140
-( SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = T, offset=144
-( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = U, offset=148
-( SEGD+ SEGE+!SEGF+!SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = V, offset=152
-( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = W, offset=156
-(!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = X, offset=160
-( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = Y, offset=164
-( SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = Z, offset=168
-( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = [, offset=172
-( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = \, offset=176
-( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ], offset=180
-( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ^, offset=184
-( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = _, offset=188
-( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = `, offset=192
+const char ASCII_TO_WF_CODIFICATION_TABLE [ ] = {
+
+ /*
+ segA
+ ________
+ | |
+ segF | | segB
+ | |
+ -segG--
+ | |
+ segE | | segC
+ |________|
+ segD
+ */
+
+ ( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 0, offset=0
+ (!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = 1, offset=4
+ ( SEGD+ SEGE+!SEGF+ SEGG) , (!SEGC+ SEGB+ SEGA) ,//Char = 2, offset=8
+ ( SEGD+!SEGE+!SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 3, offset=12
+ (!SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = 4, offset=16
+ ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = 5, offset=20
+ ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = 6, offset=24
+ (!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 7, offset=28
+ ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 8, offset=32
+ ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = 9, offset=36
+ (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = :, offset=40
+ (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = ;, offset=44
+ (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = <, offset=48
+ ( SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = =, offset=52
+ (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = >, offset=56
+ (!SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ?, offset=60
+ ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = @, offset=64
+ (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = A, offset=68
+ ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = B, offset=72
+ ( SEGD+ SEGE+ SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = C, offset=76
+ ( SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = D, offset=80
+ ( SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = E, offset=84
+ (!SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = F, offset=88
+ ( SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = G, offset=92
+ (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = H, offset=96
+ (!SEGD+!SEGE+!SEGF+!SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = I, offset=100
+ ( SEGD+ SEGE+!SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = J, offset=104
+ (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = K, offset=108
+ ( SEGD+ SEGE+ SEGF+!SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = L, offset=112
+ (!SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = M, offset=116
+ (!SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = N, offset=120
+ ( SEGD+ SEGE+!SEGF+ SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = O, offset=124
+ (!SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+ SEGB+ SEGA) ,//Char = P, offset=128
+ ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+ SEGA) ,//Char = Q, offset=132
+ (!SEGD+ SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = R, offset=136
+ ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+!SEGB+ SEGA) ,//Char = S, offset=140
+ ( SEGD+ SEGE+ SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = T, offset=144
+ ( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = U, offset=148
+ ( SEGD+ SEGE+!SEGF+!SEGG) , ( SEGC+!SEGB+!SEGA) ,//Char = V, offset=152
+ ( SEGD+ SEGE+ SEGF+!SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = W, offset=156
+ (!SEGD+ SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = X, offset=160
+ ( SEGD+!SEGE+ SEGF+ SEGG) , ( SEGC+ SEGB+!SEGA) ,//Char = Y, offset=164
+ ( SEGD+!SEGE+!SEGF+ SEGG) , (!SEGC+!SEGB+!SEGA) ,//Char = Z, offset=168
+ ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = [, offset=172
+ ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = \, offset=176
+ ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ], offset=180
+ ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = ^, offset=184
+ ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = _, offset=188
+ ( SEGD+!SEGE+!SEGF+!SEGG) , (!SEGC+!SEGB+ SEGA) ,//Char = `, offset=192
};
-SLCD::SLCD() {
+SLCD::SLCD()
+{
init();
- CharPosition = 0;
+ CharPosition = 0;
}
-void SLCD::init(){
+void SLCD::init()
+{
SIM->SCGC5 |= SIM_SCGC5_SLCD_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;
-
- // configure pins for LCD operation
- PORTC->PCR[20] = 0x00000000; //VLL2
- PORTC->PCR[21] = 0x00000000; //VLL1
- PORTC->PCR[22] = 0x00000000; //VCAP2
- PORTC->PCR[23] = 0x00000000; //VCAP1
- // Enable IRCLK
- MCG->C1 |= MCG_C1_IRCLKEN_MASK | MCG_C1_IREFSTEN_MASK;
- MCG->C2 |= MCG_C2_IRCS_MASK ; //0 32KHZ internal reference clock; 1= 4MHz irc
-
- //Check if the Fast reference has its divide by 2 enabled (default):
- if ((MCG->SC & MCG_SC_FCRDIV_MASK) != 1<<1)
- error("Invalid clock configuration for SLCD\n");
- LCD->GCR = 0x0;
- LCD->AR = 0x0;
+
+ // configure pins for LCD operation
+ PORTC->PCR[20] = 0x00000000; //VLL2
+ PORTC->PCR[21] = 0x00000000; //VLL1
+ PORTC->PCR[22] = 0x00000000; //VCAP2
+ PORTC->PCR[23] = 0x00000000; //VCAP1
+ // Enable IRCLK
+ MCG->C1 |= MCG_C1_IRCLKEN_MASK | MCG_C1_IREFSTEN_MASK;
+ MCG->C2 |= MCG_C2_IRCS_MASK ; //0 32KHZ internal reference clock; 1= 4MHz irc
- // LCD configurartion
- LCD->GCR = ( LCD_GCR_RVEN_MASK*_LCDRVEN
+ //Check if the Fast reference has its divide by 2 enabled (default):
+ if ((MCG->SC & MCG_SC_FCRDIV_MASK) != 1<<1)
+ error("Invalid clock configuration for SLCD\n");
+ LCD->GCR = 0x0;
+ LCD->AR = 0x0;
+
+ // LCD configurartion
+ LCD->GCR = ( LCD_GCR_RVEN_MASK*_LCDRVEN
| LCD_GCR_RVTRIM(_LCDRVTRIM) //0-15
- | LCD_GCR_CPSEL_MASK*_LCDCPSEL
+ | LCD_GCR_CPSEL_MASK*_LCDCPSEL
| LCD_GCR_LADJ(_LCDLOADADJUST) //0-3
| LCD_GCR_VSUPPLY_MASK*_LCDSUPPLY //0-1
|!LCD_GCR_FDCIEN_MASK
| LCD_GCR_ALTDIV(1) //divide by something
- |!LCD_GCR_LCDDOZE_MASK
+ |!LCD_GCR_LCDDOZE_MASK
|!LCD_GCR_LCDSTP_MASK
|!LCD_GCR_LCDEN_MASK //WILL BE ENABLE ON SUBSEQUENT STEP
| LCD_GCR_SOURCE_MASK*1
- | LCD_GCR_ALTSOURCE_MASK*0
+ | LCD_GCR_ALTSOURCE_MASK*0
| LCD_GCR_LCLK(0) //0-7
| LCD_GCR_DUTY(_LCDDUTY) //0-7
- );
- uint8_t i;
- uint32_t *p_pen;
- uint8_t pen_offset; // 0 or 1
- uint8_t pen_bit; // 0 to 31
- LCD->PEN[0] = 0x0;
- LCD->PEN[1] = 0x0;
- LCD->BPEN[0] = 0x0;
- LCD->BPEN[1] = 0x0;
- p_pen = (uint32_t *)&LCD->PEN[0];
- for (i=0;i<_LCDUSEDPINS;i++)
- {
- pen_offset = WF_ORDERING_TABLE[i]/32;
- pen_bit = WF_ORDERING_TABLE[i]%32;
- p_pen[pen_offset] |= 1 << pen_bit;
- if (i>= _LCDFRONTPLANES) // Pin is a backplane
- {
- p_pen[pen_offset+2] |= 1 << pen_bit; // Enable BPEN
- LCD->WF8B[(uint8_t)WF_ORDERING_TABLE[i]] = 1 << (i - _LCDFRONTPLANES); // fill with 0x01, 0x02, etc
- }
- }
- LCD->GCR |= LCD_GCR_LCDEN_MASK;
+ );
+ uint8_t i;
+ uint32_t *p_pen;
+ uint8_t pen_offset; // 0 or 1
+ uint8_t pen_bit; // 0 to 31
+ LCD->PEN[0] = 0x0;
+ LCD->PEN[1] = 0x0;
+ LCD->BPEN[0] = 0x0;
+ LCD->BPEN[1] = 0x0;
+ p_pen = (uint32_t *)&LCD->PEN[0];
+ for (i=0; i<_LCDUSEDPINS; i++) {
+ pen_offset = WF_ORDERING_TABLE[i]/32;
+ pen_bit = WF_ORDERING_TABLE[i]%32;
+ p_pen[pen_offset] |= 1 << pen_bit;
+ if (i>= _LCDFRONTPLANES) { // Pin is a backplane
+ p_pen[pen_offset+2] |= 1 << pen_bit; // Enable BPEN
+ LCD->WF8B[(uint8_t)WF_ORDERING_TABLE[i]] = 1 << (i - _LCDFRONTPLANES); // fill with 0x01, 0x02, etc
+ }
+ }
+ LCD->GCR |= LCD_GCR_LCDEN_MASK;
}
-int SLCD::_putc(int c) {
+int SLCD::_putc(int c)
+{
Write_Char(c);
return 0;
}
-void SLCD::Write_Char (char lbValue) {
- uint8_t char_val;
- uint8_t temp;
- uint8_t *lbpLCDWF;
- uint8_t lbCounter;
- uint16_t arrayOffset;
- uint8_t position;
-
- if (CharPosition >= _CHARNUM)
- CharPosition = 0;
- lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
- /* only ascii character if value not writeable write as @ */
- if (lbValue>='a' && lbValue<='z') {
- lbValue -= 32; // UpperCase
- }
- if (lbValue<ASCCI_TABLE_START || lbValue >ASCCI_TABLE_END) {
- lbValue = BLANK_CHARACTER; // default value as space
- }
- lbValue -=ASCCI_TABLE_START; // Remove the offset to search in the ascci table
- arrayOffset = (lbValue * _CHAR_SIZE); // Compensate matrix offset
- // ensure bLCD position is in valid limit
- lbCounter = 0; //number of writings to complete one char
- while (lbCounter<_CHAR_SIZE) {
- position = (CharPosition) *_LCDTYPE + lbCounter;
- temp=0;
- if (lbCounter==1) {
- temp = lbpLCDWF[WF_ORDERING_TABLE[position]] & 0x01;//bit 0 has the special symbol information
- }
- char_val = ASCII_TO_WF_CODIFICATION_TABLE[arrayOffset + lbCounter];
- lbpLCDWF[WF_ORDERING_TABLE[position]] = char_val | temp;
- // if (char_val==0) lbCounter = _CHAR_SIZE; //end of this character
- lbCounter++;
- }
- CharPosition++;
+void SLCD::Write_Char (char lbValue)
+{
+ uint8_t char_val;
+ uint8_t temp;
+ uint8_t *lbpLCDWF;
+ uint8_t lbCounter;
+ uint16_t arrayOffset;
+ uint8_t position;
+
+ if (CharPosition >= _CHARNUM)
+ CharPosition = 0;
+ lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
+ /* only ascii character if value not writeable write as @ */
+ if (lbValue>='a' && lbValue<='z') {
+ lbValue -= 32; // UpperCase
+ }
+ if (lbValue<ASCCI_TABLE_START || lbValue >ASCCI_TABLE_END) {
+ lbValue = BLANK_CHARACTER; // default value as space
+ }
+ lbValue -=ASCCI_TABLE_START; // Remove the offset to search in the ascci table
+ arrayOffset = (lbValue * _CHAR_SIZE); // Compensate matrix offset
+ // ensure bLCD position is in valid limit
+ lbCounter = 0; //number of writings to complete one char
+ while (lbCounter<_CHAR_SIZE) {
+ position = (CharPosition) *_LCDTYPE + lbCounter;
+ temp=0;
+ if (lbCounter==1) {
+ temp = lbpLCDWF[WF_ORDERING_TABLE[position]] & 0x01;//bit 0 has the special symbol information
+ }
+ char_val = ASCII_TO_WF_CODIFICATION_TABLE[arrayOffset + lbCounter];
+ lbpLCDWF[WF_ORDERING_TABLE[position]] = char_val | temp;
+ // if (char_val==0) lbCounter = _CHAR_SIZE; //end of this character
+ lbCounter++;
+ }
+ CharPosition++;
}
void SLCD::Home (void)
- {
- CharPosition = 0;
- }
+{
+ CharPosition = 0;
+}
void SLCD::Contrast (uint8_t lbContrast)
-{
- lbContrast &= 0x0F; //Forced to the only values accepted
- LCD->GCR |= LCD_GCR_RVTRIM(lbContrast);
+{
+ lbContrast &= 0x0F; //Forced to the only values accepted
+ LCD->GCR |= LCD_GCR_RVTRIM(lbContrast);
}
-
+
void SLCD::All_Segments (int mode)
{
- uint8_t lbTotalBytes = _CHARNUM * _LCDTYPE;
- uint8_t lbCounter=0;
- uint8_t *lbpLCDWF;
-
- lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
- while (lbCounter < lbTotalBytes)
- {
- if (mode==1){lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[lbCounter++]]=_ALLON;}
- else {lbpLCDWF[WF_ORDERING_TABLE[lbCounter++]]=0;}
- }
+ uint8_t lbTotalBytes = _CHARNUM * _LCDTYPE;
+ uint8_t lbCounter=0;
+ uint8_t *lbpLCDWF;
+
+ lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
+ while (lbCounter < lbTotalBytes) {
+ if (mode==1) {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[lbCounter++]]=_ALLON;
+ } else {
+ lbpLCDWF[WF_ORDERING_TABLE[lbCounter++]]=0;
+ }
+ }
}
void SLCD::DP1 (int mode)
{
- uint8_t *lbpLCDWF;
- lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
- if (mode==1){lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[1]]|=1;}
- else {lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[1]]&=~1;}
+ uint8_t *lbpLCDWF;
+ lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
+ if (mode==1) {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[1]]|=1;
+ } else {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[1]]&=~1;
+ }
}
-
+
void SLCD::DP2 (int mode)
{
- uint8_t *lbpLCDWF;
- lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
- if (mode==1){lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[3]]|=1;}
- else {lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[3]]&=~1;}
-}
+ uint8_t *lbpLCDWF;
+ lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
+ if (mode==1) {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[3]]|=1;
+ } else {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[3]]&=~1;
+ }
+}
void SLCD::DP3 (int mode)
{
- uint8_t *lbpLCDWF;
+ uint8_t *lbpLCDWF;
lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
- if (mode==1){lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[5]]|=1;}
- else {lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[5]]&=~1;}
+ if (mode==1) {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[5]]|=1;
+ } else {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[5]]&=~1;
+ }
}
-
+
void SLCD::Colon (int mode)
{
- uint8_t *lbpLCDWF;
- lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
- if (mode==1){lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[7]]|=1;}
- else {lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[7]]&=~1;}
+ uint8_t *lbpLCDWF;
+ lbpLCDWF = (uint8_t *)&LCD->WF8B[0];
+ if (mode==1) {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[7]]|=1;
+ } else {
+ lbpLCDWF[(uint8_t)WF_ORDERING_TABLE[7]]&=~1;
+ }
}
-
-void SLCD::blink(int blink) {
+
+void SLCD::blink(int blink)
+{
if (( blink > 7) || (blink < 0))
LCD->AR &= ~LCD_AR_BLINK_MASK;
else
LCD->AR |= LCD_AR_BLINK_MASK | blink;
}
-
-void SLCD::deepsleepEnable(bool enable) {
+
+void SLCD::deepsleepEnable(bool enable)
+{
MCG->C1 &= ~MCG_C1_IREFSTEN_MASK;
MCG->C1 |= enable << MCG_C1_IREFSTEN_SHIFT;
LCD->GCR &= ~LCD_GCR_LCDSTP_MASK;
--- a/SLCD.h Thu Feb 27 22:02:34 2014 +0000
+++ b/SLCD.h Fri Mar 14 15:13:15 2014 +0000
@@ -5,15 +5,15 @@
#include "mbed.h"
#include "SLCD.h"
-
+
SLCD slcd;
-
+
main()
{
slcd.printf("1234"); // standard printf function, only charaters in ASCII_TO_WF_CODIFICATION_TABLE will display
- slcd.putc("A"); // prints a single character
+ slcd.putc("A"); // prints a single character
slcd.Write_Char('A'); // prints a single character
- slcd.All_Segments(y); // y=1 for ALL segments on, 0 for ALL segments off
+ slcd.All_Segments(y); // y=1 for ALL segments on, 0 for ALL segments off
slcd.DPx(y); // x=DP1 to DP3, y=1 for on 0 for off
slcd.Colon(y); // y=1 for on, 0 for off
slcd.CharPosition=x; // x=0 to 3, 0 is start position
@@ -21,29 +21,30 @@
slcd.Contrast (x); // set contrast x=0 - 15, 0 lightest, 15 darkest
slcd.blink(x); // set display to blink, 0-7 is blink rate (default = 3), -1 disables blink
slcd.deepsleepEnable(x);// true (default) keeps the lcd enabled in deepsleep, false disables its 4MHz internal oscillator clock. Total power consumption ~= 40uA
- }
+ }
*/
-class SLCD : public Stream {
- public:
+class SLCD : public Stream
+{
+public:
SLCD();
-
+
void Home (void);
void Contrast (uint8_t lbContrast);
- void All_Segments (int);
+ void All_Segments (int);
void DP1 (int);
void DP2 (int);
void DP3 (int);
- void Colon (int);
+ void Colon (int);
uint8_t CharPosition;
void blink(int blink = 3);
void deepsleepEnable(bool enable);
-
- private:
+
+private:
void Write_Char(char lbValue);
void init();
virtual int _putc(int c);
virtual int _getc() {
return 0;
- }
+ }
};
