add exponent character

This commit is contained in:
Jeff Wang 2019-04-01 02:38:17 -04:00
parent d45c9702b0
commit bb102add67
3 changed files with 31 additions and 21 deletions

View File

@ -45,7 +45,6 @@ static int row, col;
#define LCD_BUSY P2_7 //LCD D7 #define LCD_BUSY P2_7 //LCD D7
static void outCsrBlindNibble(unsigned char command); static void outCsrBlindNibble(unsigned char command);
static void outCsrBlind(unsigned char command);
static void outCsr(unsigned char command); static void outCsr(unsigned char command);
static char readBusy(void); static char readBusy(void);
static void wait_busy(void); static void wait_busy(void);
@ -66,13 +65,6 @@ static void outCsrBlindNibble(unsigned char command) {
LCD_E = 0; LCD_E = 0;
} }
static void outCsrBlind(unsigned char command) {
outCsrBlindNibble(command >> 4); // ms nibble, E=0, RS=0
_delay_us(100);
outCsrBlindNibble(command); // ls nibble, E=0, RS=0
_delay_us(100); // blind cycle 90 us wait
}
static void outCsr(unsigned char command) { static void outCsr(unsigned char command) {
DISABLE_INTERRUPTS(); DISABLE_INTERRUPTS();
outCsrBlindNibble(command >> 4); // ms nibble, E=0, RS=0 outCsrBlindNibble(command >> 4); // ms nibble, E=0, RS=0
@ -143,6 +135,7 @@ static void LCD_OutChar(unsigned char c) {
} }
void LCD_Open(void) { void LCD_Open(void) {
uint8_t i;
//set ports to push-pull output M[1:0] = b01 //set ports to push-pull output M[1:0] = b01
//P2 entire port //P2 entire port
P2M1 = 0; P2M1 = 0;
@ -161,21 +154,35 @@ void LCD_Open(void) {
outCsrBlindNibble(0x02); // DL=1 switch to 4 bit mode (only high 4 bits are sent) outCsrBlindNibble(0x02); // DL=1 switch to 4 bit mode (only high 4 bits are sent)
_delay_us(100); // blind cycle 100 us wait _delay_us(100); // blind cycle 100 us wait
//set increment, no shift //set increment, no shift
outCsrBlind(0x4 + LCDINC + LCDNOSHIFT); outCsr(0x4 + LCDINC + LCDNOSHIFT);
#ifdef DEBUG #ifdef DEBUG
//set display on, cursor on, blink on: //set display on, cursor on, blink on:
outCsrBlind(0x0c + LCDCURSOR + LCDBLINK); outCsr(0x0c + LCDCURSOR + LCDBLINK);
#else #else
//set display on, cursor and blink off: //set display on, cursor and blink off:
outCsrBlind(0x0c + LCDNOCURSOR + LCDNOBLINK); outCsr(0x0c + LCDNOCURSOR + LCDNOBLINK);
#endif #endif
//set display shift on and to the right //set display shift on and to the right
outCsrBlind(0x10 + LCDNOSCROLL + LCDRIGHT); outCsr(0x10 + LCDNOSCROLL + LCDRIGHT);
//set 4-bit mode, 2 line, 5x7 display: //set 4-bit mode, 2 line, 5x7 display:
outCsrBlind(0x20 + LCD2LINE + LCD7DOT); outCsr(0x20 + LCD2LINE + LCD7DOT);
outCsr(0x40); //set cgram address to 0
//program CGRAM
for (i = 0; i < 2; i++){
//define exponent and negative exponent sign
LCD_OutChar(0x0);
LCD_OutChar(i ? 0x0f : 0);
LCD_OutChar(0x0);
LCD_OutChar(0x1c);
LCD_OutChar(0x10);
LCD_OutChar(0x18);
LCD_OutChar(0x10);
LCD_OutChar(0x1c);
}
//clear display //clear display
// LCD_Clear(); LCD_Clear();
// _delay_ms(50);
} }
//row and columns indexed from 0 //row and columns indexed from 0

View File

@ -17,6 +17,9 @@ void LCD_ClearToEnd(uint8_t curr_row);
unsigned char LCD_Timeout_Error(void); unsigned char LCD_Timeout_Error(void);
//CGRAM character address
#define CGRAM_EXP 0
#define CGRAM_EXP_NEG 1
#endif #endif

View File

@ -168,10 +168,10 @@ int main()
} else { //have exponent to display } else { //have exponent to display
LCD_OutString(Buf, MAX_CHARS_PER_LINE - 3); LCD_OutString(Buf, MAX_CHARS_PER_LINE - 3);
if (disp_exponent < 0){ if (disp_exponent < 0){
TERMIO_PutChar('-'); TERMIO_PutChar(CGRAM_EXP_NEG);
disp_exponent = -disp_exponent; disp_exponent = -disp_exponent;
} else { } else {
TERMIO_PutChar(' '); TERMIO_PutChar(CGRAM_EXP);
} }
TERMIO_PutChar((disp_exponent / 10) + '0'); TERMIO_PutChar((disp_exponent / 10) + '0');
TERMIO_PutChar((disp_exponent % 10) + '0'); TERMIO_PutChar((disp_exponent % 10) + '0');
@ -376,10 +376,10 @@ int main()
} else { //have exponent to display } else { //have exponent to display
LCD_OutString(Buf, MAX_CHARS_PER_LINE - 3); LCD_OutString(Buf, MAX_CHARS_PER_LINE - 3);
if (disp_exponent < 0){ if (disp_exponent < 0){
TERMIO_PutChar('-'); TERMIO_PutChar(CGRAM_EXP_NEG);
disp_exponent = -disp_exponent; disp_exponent = -disp_exponent;
} else { } else {
TERMIO_PutChar(' '); TERMIO_PutChar(CGRAM_EXP);
} }
TERMIO_PutChar((disp_exponent / 10) + '0'); TERMIO_PutChar((disp_exponent / 10) + '0');
TERMIO_PutChar((disp_exponent % 10) + '0'); TERMIO_PutChar((disp_exponent % 10) + '0');
@ -408,9 +408,9 @@ int main()
} }
//print exponent sign //print exponent sign
if (entering_exp == ENTERING_EXP_NEG){ if (entering_exp == ENTERING_EXP_NEG){
TERMIO_PutChar('-'); TERMIO_PutChar(CGRAM_EXP_NEG);
} else { } else {
TERMIO_PutChar(' '); TERMIO_PutChar(CGRAM_EXP);
} }
//print exp //print exp
TERMIO_PutChar(ExpBuf[1] + '0'); TERMIO_PutChar(ExpBuf[1] + '0');