시프트 레지스터(8bits)
더 많은 입출력 포트 필요 -> 시프트 레지스터추가
시프트 레지스터 : 시리얼 비트 스트림을 받아 이 값을 동시에 입출력 핀으로 출력하는 장치(병렬)
- LOW -> HIGH로 변할 때마다(상승 에지) 작동
- 새로 입력된 값을 출력(또는 이동한 값) -> LATCH핀 HIGH로 설정
시프트 레지스터 활용 분야
-> 7세그먼트 디스플레이 (한 글자 0~9 표현)
-> Dot Matrix LED (전광판) 등 다수 LED (Uno로는 불가능)
16개 RGB LED 구동을 위해 필요한 디지털 핀? 48개 (16 * 3)
병렬 전송 (parallel transmission)
- 시프트 병렬 레지스터 사용
-> 시리얼 전송 데이터 병렬 데이터 전송으로 변환
-> 시리얼 입력, 병렬 출력 동작(SIPO : Serial-In Parallel-Out)
시프트 레지스터 구조
1~7, 15 출력 (Qa~Qh)
8 GND
16 Vcc 5V
14 SER : Data핀 (시리얼) : 이 핀에 비트값 8개 차레로 입력
11 SRCLK : 시프트 레지스터 CLOCK 핀 : HIGH일때마다 시프트 레지스터 값 1비트씩 이동
-> 1바이트 전송시 High-Low를 8번 발생
12 RCLK : 레지스터 클럭핀 LATCH(걸쇠)
- 저장 값 한꺼번에 병렬 출력, 데이터를 칩에 차례로 이동할 때 사용
13 OE : GND 연결, Low-active 신호, Low면 시프트 레지스터 출력 활성화(Output Enable)
10 SRCLR : 5V연결, 시프트 레지스터 모든 값 지움 (CLEAR)을 활성화하지 않음
9 Qh = 7번 Qh와 동일한 신호 내보냄
시리얼 데이터 이동 : shiftOut()
- shiftOut(DATA, CLOCK, MSBFIRST, B10101010); // B는 2진수 표시
- MSBFIRST : 최상위 비트 우선 (맨 왼쪽부터)
- LSBFIRST : 최하위 비트 (맨 오른쪽부터)
Dasiy-chain 방법
시프트 레지스터 1개 - 3핀으로 8개 출력
시프트 레지스터 2개 - 가장 먼저 입력된 마지막 핀 Qh`에서 출력
-> Qh`핀을 다음 두번째 시프트 레지스터 DATA핀에 연결
-> 첫번째 시프트 레지스터의 LATCH, CLOCK 핀을 두번째 시프트 레지스터와 공유하게함
=> 16비트 시프트 레지스터 완성 (shiftOut()을 두번 실행해야함)
-> LED 개수가 늘어나면 전원 공급 문제를 생각해야함(무한이 레지스터 연결X)
'학교수업' 카테고리의 다른 글
<시험정리> 가상현실프로그래밍 (0) | 2021.10.23 |
---|---|
가상현실프로그래밍 7주차 (0) | 2021.10.23 |
<시험 정리>정보보호개론 (0) | 2021.10.20 |
<시험정리>사물인터넷개론 (0) | 2021.10.19 |
<시험정리> 웹 개발 기초 (0) | 2021.10.17 |