drv_ea_ldp8008.c File Reference

Draw drivers for Embedded Adventures LDP-8008 LED panel and similar. More...

Include dependency graph for drv_ea_ldp8008.c:

Defines

#define MAX_BRIGHTNESS   3
#define set_pins_r_g()

Functions

uns8 drv_get_pixel (uns8 x, uns8 y)
void drv_init ()
void drv_paint ()
void drv_print_buffer ()
void drv_refresh ()
void drv_set_display_brightness (uns8 brightness)
void drv_setup_io ()

Variables

uns8 bright_count = 0
uns8 bright_level = 3
char buffer0 [256]
uns8 buffer_position0 = 0
uns8 current_row = 0

Detailed Description


Define Documentation

#define MAX_BRIGHTNESS   3
 
#define set_pins_r_g (  ) 
Value:
set_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin); \
    set_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);

Function Documentation

uns8 drv_get_pixel ( uns8  x,
uns8  y 
)

00290                                    {
00291     //Should do something to look up the pixel
00292 }

void drv_init (  ) 

00298                 {
00299     ea_ldp8008_init();
00300 }   

Here is the call graph for this function:

void drv_paint (  ) 

00072                  {
00073     uns8 count;
00074     start_crit_sec();
00075     count = 0;
00076     
00077     do {
00078         buffer0[count] = draw_buffer0[count];
00079         #if ea_ldp8008_displays == 2
00080             buffer1[count] = draw_buffer1[count];
00081         #endif;
00082         #if ea_ldp8008_displays == 3
00083             buffer2[count] = draw_buffer2[count];
00084         #endif
00085         #if ea_ldp8008_displays == 4
00086             buffer3[count] = draw_buffer3[count];
00087         #endif
00088         count++;
00089     } while (count !=160);
00090     end_crit_sec(); 
00091 }

void drv_print_buffer (  ) 

00093                         {
00094 uns8 count;
00095 
00096     count = 0;
00097     do {
00098         serial_print_int(buffer0[count]);
00099         serial_print_spc();
00100         count++;
00101     } while (count != 0);   
00102     serial_print_nl();
00103 
00104 }

Here is the call graph for this function:

void drv_refresh (  ) 

00115                    {
00116 
00117 
00118 uns8 x;
00119 uns8 data;
00120 
00121     bright_count++;
00122 
00123     if (bright_count > bright_level) {
00124         // Turn off display
00125         clear_pin(ea_ldp8008_en_port, ea_ldp8008_en_pin);
00126     }
00127     //if (bright_count == 1) {
00128     //  bright_count = 0;
00129     //} 
00130     if (bright_count == MAX_BRIGHTNESS) {
00131         bright_count = 255;
00132     
00133 
00134     // Start upper at the top
00135 
00136     //  count_lower = 64 * 2 * 16 / 8;  // Start lower at the second half
00137     #if ea_ldp8008_displays == 2
00138     #warning "This doesn't work!!"
00139     //      uns8 count_byte_disp2 = 0;
00140         //uns16 count_upper_disp2, count_lower_disp2;
00141     //  count_upper_disp2 = (64 * 2 * 16 / 8) * 2;
00142     //  count_lower_disp2 = (64 * 2 * 16 / 8) * 3;
00143     #endif
00144         
00145     for (x = 0; x < 20; x++) {  // 20*8bits/2bpp = 80 pixels across
00146         data = buffer0[buffer_position0];
00147         
00148         set_pins_r_g();
00149         
00150         if (data.0) { 
00151             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00152         }
00153         if (data.1) {
00154             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00155         }
00156             
00157         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00158         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00159         
00160         set_pins_r_g();
00161         
00162         if (data.2) { 
00163             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00164         }
00165         if (data.3) {
00166             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00167         }
00168         
00169         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00170         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00171         
00172         set_pins_r_g();
00173         
00174         if (data.4) { 
00175             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00176         }
00177         if (data.5) {
00178             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00179         }
00180             
00181         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00182         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00183         
00184         set_pins_r_g();
00185         
00186         
00187         if (data.6) { 
00188             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00189         }
00190         if (data.7) {
00191             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00192         }
00193             
00194         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00195         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00196         
00197         buffer_position0++;
00198     }   
00199 
00200 #if ea_ldp8008_displays == 2
00201     #warning "need to work on this"
00202     for (x = 0; x < 16; x++) {
00203         data_upper = buffer2[count_byte_disp2];
00204         data_lower = buffer3[count_byte_disp2];
00205         
00206         set_pins_r_g();
00207         
00208         if (data_upper.0) { 
00209             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00210         }
00211         if (data_upper.1) {
00212             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00213         }
00214             
00215         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00216         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00217         
00218         set_pins_r_g();
00219         
00220         if (data_upper.2) { 
00221             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00222         }
00223         if (data_upper.3) {
00224             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00225         }
00226         
00227         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00228         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00229         
00230         set_pins_r_g();
00231         
00232         if (data_upper.4) { 
00233             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00234         }
00235         if (data_upper.5) {
00236             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00237         }
00238         
00239         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00240         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00241         
00242         set_pins_r_g();
00243         
00244         
00245         if (data_upper.6) { 
00246             clear_pin(ea_ldp8008_r_port, ea_ldp8008_r_pin);
00247         }
00248         if (data_upper.7) {
00249             clear_pin(ea_ldp8008_g_port, ea_ldp8008_g_pin);
00250         }
00251             
00252         clear_pin(ea_ldp8008_s_port, ea_ldp8008_s_pin);
00253         set_pin  (ea_ldp8008_s_port, ea_ldp8008_s_pin);
00254         
00255         count_byte_disp2++;
00256     } // x loop 
00257     
00258 #endif
00259         
00260 
00261     clear_pin(ea_ldp8008_en_port, ea_ldp8008_en_pin);   // turn enable off
00262     
00263     clear_pin(ea_ldp8008_a_port, ea_ldp8008_a_pin);
00264     clear_pin(ea_ldp8008_b_port, ea_ldp8008_b_pin);
00265     clear_pin(ea_ldp8008_c_port, ea_ldp8008_c_pin);
00266     if (current_row.0) {
00267         set_pin(ea_ldp8008_a_port, ea_ldp8008_a_pin);
00268     }       
00269     if (current_row.1) {
00270         set_pin(ea_ldp8008_b_port, ea_ldp8008_b_pin);
00271     }   
00272     if (current_row.2) {
00273         set_pin(ea_ldp8008_c_port, ea_ldp8008_c_pin);
00274     }       
00275     // latch data   
00276     set_pin(ea_ldp8008_l_port, ea_ldp8008_l_pin);
00277     clear_pin(ea_ldp8008_l_port, ea_ldp8008_l_pin);
00278     
00279     // enable display of row
00280     set_pin(ea_ldp8008_en_port, ea_ldp8008_en_pin);
00281 
00282     current_row++;
00283     if (current_row == 8) {
00284         buffer_position0 = 0;
00285         current_row = 0;
00286     }   
00287 }
00288 
00289 }

void drv_set_display_brightness ( uns8  brightness  ) 

00107                                                  {
00108     if (brightness < MAX_BRIGHTNESS) {
00109         bright_level = brightness;
00110     } else {
00111         bright_level = MAX_BRIGHTNESS;
00112     }
00113 }   

void drv_setup_io (  ) 

00294                     {
00295     ea_ldp8008_setup_io();
00296 }

Here is the call graph for this function:


Variable Documentation

uns8 bright_count = 0
uns8 bright_level = 3
char buffer0[256]
uns8 buffer_position0 = 0
uns8 current_row = 0

Generated on Fri Aug 19 09:05:03 2011 for Pic Pack Library by  doxygen 1.6.1