메뉴 건너뛰기

목록
2022.05.29 11:25

아두이노 공부 fnd 2편

profile
조회 수 66 댓글 1 예스잼 0 노잼 0

74ls48-ic.png

 

오늘의 목표는 이 7448 ic를 이용하여 fnd를 동작시켜 보는것임 

 

요것은 bcd 코드를 fnd에 맞춰서 내보내주는 ic임 

 

그냥 다이렉트로 아두이노로 연결해도 되는데 이 ic를 굳이 사용하는 이유는 bcd 코드를 바꿔준다는 것과 포트수를 절약할수 있다는 것에 있음 

 

a10ea988113bda8184b35e69c89d56cd.png

 

이것은 저번에 올렸던 숑소에 올린 fnd 회로도인데 아두이노에 바로 연결한 회로도임

 

대충보면 fnd에 총 12개의 포트가 연결되어 있는것을 볼수있음 

 

 

47b4fb32952c4fede539499e9f93c45c.png

 

 

abcdefg 단자를 모두 아두이노와 직접 연결시켰기 때문에 포트수가 늘어날 뿐더러 

 

0을 표시하고 싶다고 하면 a,b,c,d,e,f 번 led를 켜겠다는 신호를 주어야하고 

 

1을 표시하고 싶다면 b,c, 번 led를 켜겠다는 신호를 주어야함 이러한 불편함을 없엘수 있는것이 7448ic임 

 

7448 ic를 이용하면 포트를 7개에서 4개로 줄일 뿐더러 bcd 코드를 입력하면 자동으로 a,b,c,d,e,f,g 중 무엇을 켜야하는지 자동으로 출력해줌!!!!! 

 

여기서 아까부터 계속말한 bcd코드가 무엇인지 궁금할텐데 

 

img1.daumcdn.png

 

 

걍 이 표를 보면됨 0~9 의 10진수를 4자리의 2진수로서 표현함. 

 

7448 ic를 보면 대문자 A B C D  단자가 있는것을 볼수있음 

 

74ls48-pinout.png

 

 

그림3.png

 

그리고 이 표의 입력부분에 BCD 코드를 입력하면 fnd를 제어할수있는 7자리인 abcdefg로 변환해줌 

 

대충 설명은 이정도로 하고 아두이노에 직접 배선해보겟으ㅜㅁ 

 

KakaoTalk_20220529_112445043.jpg

 

짜잔 

 

오늘도 띵커캐드로 그릴까 했는데 존나 귀찮아서 못그리겠음 

 

대충 4,5,6,7 번포트가 ic로가고 

 

ic에서는 각 포트에 맞춰 저항통해서 fnd로감 

 

8,9,10,11이 fnd 디지트 단자로 갔음

 

 

#include <Arduino.h>
 
int bcd_pins[4] = {8,9,10,11};
int digit_pins[4] = {4,5,6,7};
 
void display_number(int num){
  switch(num){
    case 0:
    digitalWrite(bcd_pins[0] , 0);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 1:
    digitalWrite(bcd_pins[0] , 1);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 2:
    digitalWrite(bcd_pins[0] , 0);
    digitalWrite(bcd_pins[1] , 1);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 3:
    digitalWrite(bcd_pins[0] , 1);
    digitalWrite(bcd_pins[1] , 1);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 4:
    digitalWrite(bcd_pins[0] , 0);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 1);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 5:
    digitalWrite(bcd_pins[0] , 1);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 1);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 6:
    digitalWrite(bcd_pins[0] , 0);
    digitalWrite(bcd_pins[1] , 1);
    digitalWrite(bcd_pins[2] , 1);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 7:
    digitalWrite(bcd_pins[0] , 1);
    digitalWrite(bcd_pins[1] , 1);
    digitalWrite(bcd_pins[2] , 1);
    digitalWrite(bcd_pins[3] , 0);
    break;
 
    case 8:
    digitalWrite(bcd_pins[0] , 0);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 1);
    break;
 
    case 9:
    digitalWrite(bcd_pins[0] , 1);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 1);
    break;
 
    default:
    digitalWrite(bcd_pins[0] , 0);
    digitalWrite(bcd_pins[1] , 0);
    digitalWrite(bcd_pins[2] , 0);
    digitalWrite(bcd_pins[3] , 0);
    break;
  }
}
 
void display7segments(unsigned int value) {
  for(int i = 0; i < 100; i++) {
    display_number(value);
    delay(10);
  }
}
 
void setup() {
  for(int i = 0; i < 4; i++) {
    pinMode(bcd_pins[i], OUTPUT);
    pinMode(digit_pins[i] , OUTPUT);
  }
}
 
void loop() {
  display7segments(5);
}    

 

코드는 diplay7segments() 함수에 0~9까지의 숫자를 넣게되면 그 숫자를 4칸에 표시해주도록 하였음 

 

 


List of Articles
번호 제목 글쓴이 날짜 조회 수 추천
공지 수용소닷컴 이용약관 file asuka 2020.05.16 1312 1
930 명령창 투명하게 하니 참 편하노 clownpepe 2020.09.10 56 0
929 쓰레기 공부계획 ㅇ 2 그라드 2020.09.12 67 0
928 책이 왔기에 또 공부를 합니다 ... 그라드 2020.09.16 41 0
927 PS5 499, 399달러 / 11월 19일 전세계 출시 (한국 11월 12일) file shiho 2020.09.17 46 0
926 삭제된 게시글입니다. 스마일 2020.09.17 45 0
925 삭제된 게시글입니다. 스마일 2020.09.18 57 0
924 삭제된 게시글입니다. clownpepe 2020.09.19 41 0
923 그간 SSD를 너무 병신같이 쓰고있었음 1 하야한아이 2020.09.20 84 0
922 네트워크프로그래밍 1 그라드 2020.09.23 53 0
921 C++, 데이터베이스 공부중 2 그라드 2020.09.24 53 0
920 삭제된 게시글입니다. 스마일 2020.09.26 69 0
919 요새 백엔드보다 응용프로그램 만드는게 더 잼난듯 1 MDR 2020.09.26 74 0
918 요새 material ui 쓰는데 ㅈㄴ 안 예쁜거 같음 9 file MDR 2020.09.26 65 0
917 크로스 플랫폼이 말이 좋아 크로스인듯 1 MDR 2020.09.26 61 0
916 vscode에서 C 돌리려고 하다가 실패함 3 clownpepe 2020.09.27 73 0
915 아 ios 개발하려면 맥북 사는 거 밖에 없냐? 3 file MDR 2020.09.27 40 0
914 내가 이 분야로 취업할 수 있을까? 1 그라드 2020.09.27 73 0
913 Heruko 써본 놈 있냐? 3 MDR 2020.09.28 42 0
912 삭제된 게시글입니다. 스마일 2020.09.28 55 0
911 앞으론 개인 프로젝트를 귀찮다고 private repo로 만들지 않겠습니다... 11 clownpepe 2020.09.28 48 0
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 56 Next
/ 56