i have a projet that sends data using com port and it will be displayed using 7 segment displays.
when i send data for the first time i will be displayed perfectly but when i send data again 7 segment displays still display the old data
this is my isis project
and my mikro c program
hope that yo help me
************************************************************
Code: Select all
unsigned short count1;
char count;
char message[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //initialisation du message
/*******************************************************************************/
unsigned short mask(char num) { //fonction affichaage de chaque entier
switch (num) {
case '0' : return 0xFC;
case '1' : return 0x60;
case '2' : return 0xDA;
case '3' : return 0xF2;
case '4' : return 0x66;
case '5' : return 0xB6;
case '6' : return 0xBE;
case '7' : return 0xE0;
case '8' : return 0xFE;
case '9' : return 0xF6; } //case end
}
/*******************************************************************************/
void decodeur(int B){ //decodage pour l'affichage de chaque digit
switch (B) {
case 0 : PORTD.F4=1;PORTD.F5=0;break;
case 1 : PORTD.F4=0;PORTD.F5=1;break;
case 2 : PORTD.F4=1;PORTD.F5=1;break;
case 3 : PORTD.F6=1;PORTD.F7=0;break;
case 4 : PORTD.F6=0;PORTD.F7=1;break;
case 5 : PORTD.F6=1;PORTD.F7=1;break;
case 6 : PORTE.F1=1;PORTA.F1=0;break;
case 7 : PORTE.F1=0;PORTA.F1=1;break;
case 8 : PORTE.F1=1;PORTA.F1=1;break;
case 9 : PORTE.F2=1;PORTA.F5=0;break;
case 10 : PORTE.F2=0;PORTA.F5=1;break;
case 11 : PORTE.F2=1;PORTA.F5=1;break;
}
}
/*******************************************************************************/
void Send_Data( unsigned short A){
unsigned short Mask=0b00000001 ,t,F;
for (t=0;t<8;t++){
F = A & Mask;
if(F==0) PORTB.F0 = 0;
else PORTB.F0 = 1;
PORTB.F1 = 1;
PORTB.F1 = 0;
Mask = Mask << 1;
}
PORTB.F2 = 1;
PORTB.F2 = 0;
}
/*******************************************************************************/
void Send_Data1( unsigned short A){ //envoie des données
unsigned short Mask=0b00000001 ,t,F;
for (t=0;t<8;t++){
F = A & Mask;
if(F==0) PORTB.F3 = 0;
else PORTB.F3 = 1;
PORTB.F4 = 1;
PORTB.F4 = 0;
Mask = Mask << 1;
}
PORTB.F5 = 1;
PORTB.F5 = 0;
}
/*******************************************************************************/
void Send_Data2( unsigned short A){ //envoie des données
unsigned short Mask=0b00000001 ,t,F;
for (t=0;t<8;t++){
F = A & Mask;
if(F==0) PORTB.F6 = 0;
else PORTB.F6 = 1;
PORTB.F7 = 1;
PORTB.F7 = 0;
Mask = Mask << 1;
}
PORTC.F0 = 1;
PORTC.F0 = 0;
}
/*******************************************************************************/
void Send_Data3( unsigned short A){ //envoie des données
unsigned short Mask=0b00000001 ,t,F;
for (t=0;t<8;t++){
F = A & Mask;
if(F==0) PORTC.F1 = 0;
else PORTC.F1 = 1;
PORTC.F2 = 1;
PORTC.F2= 0;
Mask = Mask << 1;
}
PORTC.F3 = 1;
PORTC.F3 = 0;
}
/*******************************************************************************/
void Send_Data4( unsigned short A){ //envoie des données
unsigned short Mask=0b00000001 ,t,F;
for (t=0;t<8;t++){
F = A & Mask;
if(F==0) PORTC.F4 = 0;
else PORTC.F4 = 1;
PORTC.F5 = 1;
PORTC.F5= 0;
Mask = Mask << 1;
}
PORTA.F0 = 1;
PORTA.F0 = 0;
}
/******************************************************************************/
void DECOD1( unsigned short A){ //envoie des données
unsigned short Mask=0b00000001 ,t,F;
for (t=0;t<8;t++){
F = A & Mask;
if(F==0) PORTD.F1 = 0;
else PORTD.F1 = 1;
PORTD.F2 = 1;
PORTD.F2= 0;
Mask = Mask << 1;
}
PORTD.F3 = 1;
PORTD.F3 = 0;
}
/******************************************************************************/
void newline(){
UART1_Write(13); // Carriage Return
UART1_Write(10); // Line Feed
}
/*******************************************************************************/
void main() {
ADCON1 = 0x07;
TRISA=0x00;
TRISB=0x00;
TRISC=0x80;
TRISD=0x00;
TRISE=0b000;
PORTA=0x00;
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=1;
PORTE=0;
UART1_Init(9600); //initialisation du taux d'envoie des données
Delay_ms(100); // stabilisation
UART1_Write_Text("START AFFICHEUR");
newline();
while(!UART1_Data_Ready());
UART1_Read_Text(message,"a",21);
UART1_write_Text(message);
newline();
do {
/*******************************************************************************/
DECOD1(0b10111111);
count1= mask(message[0]);
Send_Data(count1);
delay_ms(2);
DECOD1(0b11011111);
count1= mask(message[1]);
Send_Data(count1);
delay_ms(2);
DECOD1(0b11101111);
count1= mask(message[2]);
Send_Data(count1);
delay_ms(2);
DECOD1(0b11110111);
count1= mask(message[3]);
Send_Data(count1);
delay_ms(2);
DECOD1(0b11111011);
count1= mask(message[4]);
Send_Data(count1);
delay_ms(2);
DECOD1(0b11111101);
count1= mask(message[5]);
Send_Data(count1);
delay_ms(2);
DECOD1(0b11111110);
count1= mask(message[6]);
Send_Data(count1);
delay_ms(2);
decodeur(0);
count1= mask(message[7]);
Send_Data1(count1);
delay_ms(2);
decodeur(1);
count1= mask(message[8]);
Send_Data1(count1);
delay_ms(2);
decodeur(2);
count1= mask(message[9]);
Send_Data1(count1);
delay_ms(2);
decodeur(3);
count1= mask(message[10]);
Send_Data2(count1);
delay_ms(2);
decodeur(4);
count1= mask(message[11]);
Send_Data2(count1);
delay_ms(2);
decodeur(5);
count1= mask(message[12]);
Send_Data2(count1);
delay_ms(2);
decodeur(6);
count1= mask(message[13]);
Send_Data3(count1);
delay_ms(2);
decodeur(7);
count1= mask(message[14]);
Send_Data3(count1);
delay_ms(2);
decodeur(8);
count1= mask(message[15]);
Send_Data3(count1);
delay_ms(2);
decodeur(9);
count1= mask(message[16]);
Send_Data4(count1);
delay_ms(2);
decodeur(10);
count1= mask(message[17]);
Send_Data4(count1);
delay_ms(2);
decodeur(11);
count1= mask(message[18]);
Send_Data4(count1);
delay_ms(2);
/*******************************************************************************/
} while(1);
}
/*******************************************************************************/