#include #include "AwesomeLIB.h" #include "lcd.h" void lcd_int(char data) { char val; // ascii results char temp; char div; char i; bool dozero; dozero = false; div = 100; if(data == 0) // always print 0 { lcd_char('0'); return; } /* * adjust for sign * */ if(data & 10000000b) { lcd_char('-'); data = ~data + 1; } for(i=0; i <= 2; ++i) // get all 3 digits { val = data/div; // get most signif. digit if(val != 0 || dozero) { lcd_char(val + '0'); // print digit delay_us(100); dozero = true; } temp = val * div; // subtract off data = data - temp; // what we’ve printed div=div/10; // adjust divisor } return; } void lcd_dec(char data) { lcd_char(((data /100) & 255) + 0x30); delay_us(10); data = data % 100; lcd_char( ((data / 10) & 255) + 0x30 ); delay_us(10); lcd_char( ((data % 10) & 255) + 0x30 ); return; } void lcd_put_data(char data) // Send data via SPI to ZigBee { Z_INT = 0; //Reset interrupt flag LCD_CS = 0; // Turn chip select on sspbuf = data; //place inputted data into the buffer (prepared for transmit) while(!Z_INT){} // Wait until transmission is complete LCD_CS = 1; //Turn chip select off return; } void lcd_init(void) { lcd_cmd(0x41); delay_ms(2); lcd_cmd(0x51); delay_ms(2); lcd_cmd(0x4C); delay_ms(2); return; } void lcd_clear(void) { lcd_cmd(0x51); delay_us(15); return; } void lcd_cmd(char data) { lcd_put_data(0xFE); delay_us(50); lcd_put_data(data); return; } void lcd_line2(void) { lcd_cmd(0x46); lcd_cmd(0x45); lcd_put_data(0x40); return; } void lcd_char(char data) { lcd_put_data(data); return; } void lcd_printf( const char* text ) { char i = 0; while( text[i] != 0 ) { lcd_char( text[i++] ); delay_ms(5); } return; } void lcd_hex(char data) { char n; n = ((data >> 4) & 0x0F) + 0x30; if (n > 0x39) n = n+7; lcd_put_data(n); delay_ms(1); n = ((data) & 0x0F) + 0x30; if (n > 0x39) n = n+7; lcd_put_data(n); }