제가 ATmega로 7-세그먼트를 작동시키고있는데요
4개의 7세그먼트를 좌->우로 1~4로 번호를 주었습니다.
예를들어 stt=1이면 1번 세그먼트를 지칭하는거고요
같은 방식으로 sst2는 세그먼트에 나타넬 값으로 0~9, All off, All on을 배열 buf에 0~11까지 주었습니다.
작동을 해보니(off=X)
XXXX
stt1=1, stt2=2 로 명령을 주면
2XXX
이런식으로 작동하읍니다
문제는 위상태에서 추가로 값을 주면(stt1=3, stt2=9)
XX9X
이렇게 뜨읍니다...
원하는건
2X9X 이런식으로 값이 유지되면서 갱신되는건데
짜놓은걸 보니 당연... 한거긴 한데;;; 어찌해야 값이 유지되는지 잘모르겠읍니다...
C로 짰고요
아래는 코드... 코드 발로 짜서 죄송합니다 ㅠㅠ
while (1)
{
// Place your code here
printf("COMMAND>>");
scanf("%s", buf);
if(buf[0]=='d'&&buf[1]=='i'&&buf[2]=='s'&&buf[3]=='p'&&buf[4]=='l'&&buf[5]=='a'&&buf[6]=='y')
{
if(buf[7]=='1')
{
stt1=1;
}
else if(buf[7]=='2')
{
stt1=2;
}
else if(buf[7]=='3')
{
stt1=3;
}
else if(buf[7]=='4')
{
stt1=4;
}
if(buf[8]=='0')
{
stt2=0;
}
else if(buf[8]=='1')
{
stt2=1;
}
else if(buf[8]=='2')
{
stt2=2;
}
else if(buf[8]=='3')
{
stt2=3;
}
else if(buf[8]=='4')
{
stt2=4;
}
else if(buf[8]=='5')
{
stt2=5;
}
else if(buf[8]=='6')
{
stt2=6;
}
else if(buf[8]=='7')
{
stt2=7;
}
else if(buf[8]=='8')
{
stt2=8;
}
else if(buf[8]=='9')
{
stt2=9;
}
printf("\r\nDISPLAY (COLUMN: %d, NUMBER: %d )\r\n",stt1,stt2);
check_flag=0;
}
else if (buf[0]=='c' && buf[1]=='l' && buf[2]=='e' && buf[3]=='a' && buf[4]=='r')
{
if(buf[5]=='1')
{
stt1=1;
}
else if(buf[5]=='2')
{
stt1=2;
}
else if(buf[5]=='3')
{
stt1=3;
}
else if(buf[5]=='4')
{
stt1=4;
}
printf("\r\nCLEAR FND\r\n");
check_flag=1;
}
else if (buf[0]=='d' && buf[1]=='e' && buf[2]=='m' && buf[3]=='o')
{
printf("\r\nDEMO FND \r\n");
check_flag=2;
}
else
{
check_flag=3;
}
if (check_flag==0)
{
Display_FND(stt1,stt2);
}
else if (check_flag==1)
{
Display_FND(stt1,10);
delay_ms(500);
}
else if (check_flag==2)
{
for (i=0;i<4;i++)
{
for (j=0;j<12;j++)
{
Display_FND(i,j);
delay_ms(330);
}
}
}
};
}
str 관련 함수들 알려주면 이새끼 자살할듯 ^^
strcmp(char* x, char *y)