Ben Gordon
/
Muscle_Controlled_Servo
LCD.cpp
- Committer:
- BenRJG
- Date:
- 2018-04-05
- Revision:
- 5:11489c0bd020
- Parent:
- 4:bcef9164776e
- Child:
- 8:462ce856429b
File content as of revision 5:11489c0bd020:
#include "LCD.h" void LCD_INIT(void) { // Preload some arrays // char hello_world[] ="Hello World"; char splash_screen1[]="Martin Simpson"; char splash_screen2[]="Plymouth UNI"; char DVM[] ="Voltage="; lcd_cls(); lcd_locate(1,1); lcd_display(splash_screen1); //Credit line 1 lcd_locate(2,2); lcd_display(splash_screen2); //Credit line 2 wait(2); lcd_cls(); lcd_locate(1,0); lcd_display(DVM); //Type Voltage display lcd_locate(1,13); lcd_display("V"); //Units display } int lcd_cls(void){ spi_write_data(CS_LCD,0x0001); wait_us(CD); //Clear Screen return 0; } int lcd_locate(uint8_t line, uint8_t column){ uint8_t line_addr; uint8_t column_addr; switch(line){ case 1: line_addr=0x80; break; case 2: line_addr=0xC0; break; default: return -1; //return code !=0 is error } if(column<16){column_addr=column;} else{return -1;} spi_write_data(CS_LCD,(line_addr+column_addr)); wait_us(CD); //DDRAM location Second line is 0x00C0 first line starts at 0x0080 return 0; } int lcd_display(char* str){ if (strlen(str)>16){return -1;} //return code !=0 is error uint8_t command_data=1; uint32_t wait_time; switch(command_data){ case 0: wait_time=DD; break; case 1: wait_time=CD; break; default: return -1; } for (int i=0; i<strlen(str);i++){ spi_write_data(CS_LCD,((command_data<<8)+str[i])); wait_us(wait_time); } return 0; } int bar_graph(uint8_t level){ if (level>16){return -1;} //return code !=0 is error spi_write_data(CS_LCD,0x00C0); wait_us(CD); //DDRAM location Second line is 0x00C0 first line starts at 0x0080 for (int i=1; i<=level ;i++) { if(level>0){spi_write_data(CS_LCD,0x01FF);wait_us(DD);} // BLACK SPACE else{spi_write_data(CS_LCD,0x0120);wait_us(DD);} // WHITE SPACE } for (int i=level; i<=16 ;i++) { spi_write_data(CS_LCD,0x0120);wait_us(DD); // SPACE } return 0; // return code ==0 is OK }