전기전자/Atmega128
[0x05] FND
jemin0619
2024. 3. 28. 14:57
IC 7447 : 디코더 IC로, A~D 입력에 0~15의 신호를 넣으면 output에 신호를 준다.
산업기사에 나오므로 핀맵을 꼭 외워야 한다.
숫자 파싱하기
Array FND의 Dynamic Driving을 위해선 n자리 숫자를 n개의 배열에 한 자리씩 저장해야 한다.
그렇게 해서 각 자리에 맞는 FND의 전원선에 HIGH를 주고, 그 자리에 맞는 숫자를 Array FND에 보내주는 작업을 반복하면 숫자가 동시에 떠있는 것으로 보인다.
int arr[2]={0,}; //파싱한 숫자 저장
void parseNum(int number){
int idx=0;
while(number){
arr[idx++]=(number%10);
number/=10;
}
}
Array FND에 숫자 출력하기
PortD가 FND의 전원선이고, PortA가 7447의 A~D 입력일 경우 이런 식으로 동적 구동이 가능하다.
7447을 사용하지 않는 환경이라면 7447 역할을 할 수 있는 FND Pattern 배열을 만들어 사용하면 된다.
ex) PORTA = FNDPattern[arr[i]];
void FND_output(){
for(int i=0;i<2;i++){
PORTD = (0b00000001<<i);
PORTA = arr[i];
_delay_ms(5);
}
}