본문 바로가기
임베디드

[오제이 튜브의 임베디드 강의] 21강. FND 제어 소스 분석!

by 덤더리덤떰 2025. 1. 25.

1. send 함수 분석 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 내가 보내고 싶은 한 바이트의 숫자에 따라 패킷 생성해서 HIGH/LOW 로 바꿈
  • DIO,SCLK 선 사용 
  • 이때, 맨마지막 FOR문이 끝나고 나면 HIGH로 바꾸기에 클럭의 기본상태는 HIGH임
    => H L H L H L ... 의 클럭 생성
  • 이때, main함수에서 단순히 send(0xF8); 수행시 FND에 출력 안됨

 

1-1. FND에 7 출력

=> send(0b001); 부터 아래 사진처럼 소스코드 추가해야 정상적으로 실행 

=> send_port가 기본 단위의 함수인데 이때 내가 보낼 데이터와 0b0001을 보내고 RCLK을 HIGH -> LOW 하면 내가 쓰고 싶은 데이터가 FND에 써짐

=> 이때, 0b0001은 FND에 4개 LED가 있기 때문에 0001, 0010, 0100, 1000은 각각 1/2/3/4번째 led를 키는 것을 의미 

 

1-2. digit4_replay 함수 분석 

  • FND에 LED가 총 4개 있을 때 4 3 2 1 이라 한다면 각각 쓸 데이터 n에 따라 FND 켜지는 위치 제어 
    ex) 789 => n1 = 9, n2 = 8, n3 = 7, n4 = 0
  • showZero가 true이면 0이 출력되게하여 만약 98인 경우 fnd에 0098로 출력되게 

2. 소수점 표현하는 소스코드 작성하기

  • 0X7F 와 &연산하면 숫자가 어떤 숫자이든 MSB는 & 연산 결과가 0이므로 소수점이 찍히게 됨