سلام به همه
من یه کدی نوشتم که کدهای مربوط به پیکسل های lcdn96 رو در میاده و داخل lcdn96 نمایش میده
اما مسئله اینه که سرعتش خیلی پایینه
تقریبا تو هر 16 ثانیه یه عکس رو نمایش میده
آقای پولاستار ( اسدی ) یه کدی نوشته بودن که خیلی سریع بود اگه کسی کدشو بتونه پیدا کنه ممنون میشم
یا اگه کدی که سریع باشه سراغ دارید لطفا بزارید
کدی که خودم نوشتم اینه
من یه کدی نوشتم که کدهای مربوط به پیکسل های lcdn96 رو در میاده و داخل lcdn96 نمایش میده
اما مسئله اینه که سرعتش خیلی پایینه
تقریبا تو هر 16 ثانیه یه عکس رو نمایش میده
آقای پولاستار ( اسدی ) یه کدی نوشته بودن که خیلی سریع بود اگه کسی کدشو بتونه پیدا کنه ممنون میشم
یا اگه کدی که سریع باشه سراغ دارید لطفا بزارید
کدی که خودم نوشتم اینه
کد:
void picture_display(char buff[]) { while ( res=f_mount(0,&drive) != FR_OK ); lcd_background_color(BLACK,4); while ( res=f_open(&file,buff,FA_READ) != FR_OK ); offset=0; while(1) { next_240_byte: while ( res=f_lseek (&file,offset) != FR_OK ); offset+=byte_read; while ( res=f_read(&file,buffer,byte_read,&nbytes) != FR_OK ); count_total_byte=0; if ( data_fully == 0 ) { while ( buffer[count_total_byte] =='\n' || buffer[count_total_byte] =='\r' ) count_total_byte++; if ( buffer[count_total_byte] =='x' ) count_total_byte++; else if ( buffer[count_total_byte] =='0' && buffer[count_total_byte+1] =='x' ) count_total_byte+=2; else if ( buffer[count_total_byte] ==',' ) { count_total_byte++; goto find_16_bit; } while( buffer[count_total_byte] !=',' ) buffer_data[count++] = buffer[count_total_byte++]; goto find_16_bit; } while(1) { count=0; data_fully=0; while ( 1 ) { if ( buffer[count_total_byte] =='\n' || buffer[count_total_byte] =='\r' ) { count_total_byte++; if ( count_total_byte > byte_read-1 ) goto next_240_byte; } else if ( buffer[count_total_byte] =='x' ) { count_total_byte++; if ( count_total_byte > byte_read-1 ) goto next_240_byte; break; } else { count_total_byte++; if ( count_total_byte > byte_read-1 ) goto next_240_byte; } } while( buffer[count_total_byte] !=',' ) { buffer_data[count++] = buffer[count_total_byte++]; if ( count_total_byte > byte_read-1 ) goto next_240_byte; } find_16_bit: data_fully=1; i0=count-1; while(i0>=0 && i0<4) { if ( buffer_data[i0] == 'f' ) c=15; else if ( buffer_data[i0] == 'e' ) c=14; else if ( buffer_data[i0] == 'd' ) c=13; else if ( buffer_data[i0] == 'c' ) c=12; else if ( buffer_data[i0] == 'b' ) c=11; else if ( buffer_data[i0] == 'a' ) c=10; else if ( buffer_data[i0] == '0' ) c=0; else if ( buffer_data[i0] == '1' ) c=1; else if ( buffer_data[i0] == '2' ) c=2; else if ( buffer_data[i0] == '3' ) c=3; else if ( buffer_data[i0] == '4' ) c=4; else if ( buffer_data[i0] == '5' ) c=5; else if ( buffer_data[i0] == '6' ) c=6; else if ( buffer_data[i0] == '7' ) c=7; else if ( buffer_data[i0] == '8' ) c=8; else if ( buffer_data[i0] == '9' ) c=9; i0--; i1=0; while(i1<4) { if ( c & (0b0001<<i1) ) { data_lcd = data_lcd | (0b0000000000000001<<i2); } i2++; i1++; } } i2=0; CS_LOW; LCD_DATAPORT_MSB_PORT=(data_lcd>>8); LCD_DATAPORT_LSB_PORT=data_lcd; WR_LOW; WR_HIGH; CS_HIGH; x++; if(x==240) { x=0; y++; } if(y==320 && x==0) { while ( res=f_close(&file) != FR_OK ); while ( res=f_mount(0,NULL) != FR_OK ); x=0; y=0; break; } data_lcd=0; } break; } }