mbed code for Farrari board

Dependencies:   DDRO_Farrari mbed

Fork of DDRO_Farrari by Liangzhen Lai

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers lcd.cpp Source File

lcd.cpp

00001 #include "mbed.h"
00002 #include "lcd.h"
00003 
00004 int lcdlinenum;
00005 
00006 void dual_printf(char* a){
00007     pc.printf(a); 
00008     pc.printf("\r\n");
00009     
00010     lcd_clear_line(lcdlinenum);
00011   
00012     lcd_printf(a);
00013     if(lcdlinenum > 3){
00014         lcdlinenum = 1;
00015     }else{
00016         lcdlinenum++;
00017     }
00018 }
00019 
00020 /********************************************************************
00021  lcd default
00022 ********************************************************************/
00023 void lcd_default()
00024 {
00025     lcdlinenum = 1;
00026     lcd.frequency(10000);
00027     lcd_clear();
00028     lcd_set_contrast( 40 );
00029     lcd_backlight_level( 8 );
00030     lcd_cursor_blink(1);
00031 }
00032 /********************************************************************
00033  lcd clear
00034 ********************************************************************/
00035 void lcd_clear()
00036 {
00037     char data[10];
00038     data[0] = 0xFE;
00039     data[1] = 0x51;
00040     lcd.write(LCDADDR, data, 2, false);    
00041     wait_ms(2);
00042 }
00043 /********************************************************************
00044  lcd home
00045 ********************************************************************/
00046 void lcd_home()
00047 {
00048     char data[10];
00049     data[0] = 0xFE;
00050     data[1] = 0x46;
00051     lcd.write(LCDADDR, data, 2, false);    
00052     wait_ms(2);
00053 }
00054 
00055 void lcd_printf(char* message){
00056     lcd.write(LCDADDR, message, strlen(message), false);   
00057 }
00058 
00059 /********************************************************************
00060  clear one line of display
00061 ********************************************************************/
00062 void lcd_clear_line(unsigned int line)
00063 {
00064     switch (line){
00065         case 1:
00066             lcd_goto( LINE1_BEGIN );
00067             lcd_printf("                    ");
00068             lcd_goto( LINE1_BEGIN );
00069             break;
00070         case 2:
00071             lcd_goto( LINE2_BEGIN );
00072             lcd_printf("                    ");
00073             lcd_goto( LINE2_BEGIN );
00074             break;
00075         case 3:
00076             lcd_goto( LINE3_BEGIN );
00077             lcd_printf("                    ");
00078             lcd_goto( LINE3_BEGIN );
00079             break;
00080         case 4:
00081             lcd_goto( LINE4_BEGIN );
00082             lcd_printf("                    ");
00083             lcd_goto( LINE4_BEGIN );
00084             break;
00085         default:
00086             break;
00087     }
00088     wait_ms(5);
00089 }
00090 
00091 void lcd_cursor_blink(bool blink){
00092     char data[10];
00093     data[0] = 0xFE;
00094     if(blink){
00095         data[1] = 0x4b;
00096     }else{
00097         data[1] = 0x4c;
00098     }    
00099     
00100     lcd.write(LCDADDR, data, 2, false);    
00101     
00102     wait_ms(2);
00103 }
00104 
00105 /********************************************************************
00106  lcd cursor goto
00107 ********************************************************************/
00108 void lcd_goto(unsigned int position)
00109 {
00110     char data[10];
00111     data[0] = 0xFE;
00112     data[1] = 0x45;
00113     data[2] = position;
00114     lcd.write(LCDADDR, data, 3, false);    
00115     
00116     wait_ms(2);
00117 }
00118 /********************************************************************
00119  lcd set contrast
00120 ********************************************************************/
00121 void lcd_set_contrast(unsigned int level)
00122 {
00123     if(level > 50){ level = 50; }
00124     
00125     char data[10];
00126     data[0] = 0xFE;
00127     data[1] = 0x52;
00128     data[2] = level;
00129     lcd.write(LCDADDR, data, 3, false);  
00130       
00131     wait_ms(10);
00132 }
00133 /********************************************************************
00134  lcd set backlight level
00135 ********************************************************************/
00136 void lcd_backlight_level(unsigned int level)
00137 {
00138     if(level > 8){ level = 8; }
00139     
00140     char data[10];
00141     data[0] = 0xFE;
00142     data[1] = 0x53;
00143     data[2] = level;
00144     lcd.write(LCDADDR, data, 3, false);   
00145     
00146     wait_ms(2);
00147 }
00148 /********************************************************************
00149  lcd set backlight level
00150 ********************************************************************/
00151 void lcd_shift_right()
00152 {
00153     char data[10];
00154     data[0] = 0xFE;
00155     data[1] = 0x56;
00156     lcd.write(LCDADDR, data, 2, false);   
00157     
00158     wait_ms(1);
00159 }
00160 /********************************************************************
00161  lcd set backlight level
00162 ********************************************************************/
00163 void lcd_shift_left()
00164 {
00165     char data[10];
00166     data[0] = 0xFE;
00167     data[1] = 0x55;
00168     lcd.write(LCDADDR, data, 2, false);   
00169     
00170     wait_ms(1);
00171 }
00172 /********************************************************************
00173  lcd set backlight level
00174 ********************************************************************/
00175 void lcd_cursor_right()
00176 {
00177     char data[10];
00178     data[0] = 0xFE;
00179     data[1] = 0x4A;
00180     lcd.write(LCDADDR, data, 2, false);   
00181     
00182     wait_ms(1);
00183 }
00184 /********************************************************************
00185  lcd set backlight level
00186 ********************************************************************/
00187 void lcd_cursor_left()
00188 {
00189     char data[10];
00190     data[0] = 0xFE;
00191     data[1] = 0x49;
00192     lcd.write(LCDADDR, data, 2, false);   
00193     
00194     wait_ms(1);
00195 }
00196 /********************************************************************
00197  lcd set backlight level
00198 ********************************************************************/
00199 void lcd_backspace()
00200 {
00201     char data[10];
00202     data[0] = 0xFE;
00203     data[1] = 0x4E;
00204     lcd.write(LCDADDR, data, 2, false);   
00205 
00206     wait_ms(1);
00207 }