Your blocks of characters are 7 characters long. Why are you using indexes 7 through 13?!? Did you intend to use "numero[p][i-7]"?
char numero[10][7]={"1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1110011"};
for(i=7;i<14;i++){
if(numero[p][i]=='1')
digitalWrite(puerto[i], HIGH);
else
digitalWrite(puerto[i], LOW);
}