when you do
char numero[10][7]={"1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1110011"};
the "1111110" (and others) are not stored on 7 bytes. this is a cString so there is a trailing '\0' that you don't see added by the compiler
If I were you I would check those indexes...
for(i=[color=red]7;i<14[/color];i++){
if(numero[p][color=red][ i][/color]=='1') digitalWrite(puerto[ i], HIGH);
else digitalWrite(puerto[ i], LOW);
}
you could just use const char * numero[] = {"1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1110011"};