Sơ đồ kết nối mạch
Sơ đồ kết nối mạch

Shift Register: Giải pháp mở rộng Input/Output cho Vi điều khiển

Shift Register là một linh kiện cho phép mở rộng số lượng chân input hoặc output cho vi điều khiển. Linh kiện này thực hiện việc chuyển đổi dữ liệu giữa dạng song song (parallel) và dạng nối tiếp (serial). Vi điều khiển giao tiếp với shift register bằng thông tin serial, và shift register sẽ thu thập hoặc xuất ra thông tin ở dạng parallel (nhiều chân).

Một shift register 8-bit đơn giản như SN74HC595N có thể giúp mở rộng khả năng điều khiển của vi điều khiển.

Có hai loại shift register cơ bản: SIPO (Serial-In-Parallel-Out) và PISO (Parallel-In-Serial-Out). Loại SIPO hữu ích cho việc điều khiển một số lượng lớn output, chẳng hạn như LED. Trong khi đó, loại PISO phù hợp cho việc thu thập một số lượng lớn input, ví dụ như từ các nút nhấn.

Shift register giúp điều khiển nhiều nút nhấn một cách hiệu quả.

SparkFun cung cấp cả hai loại shift register này, bao gồm 74HC595 (SIPO) và 74HC165 (PISO). Nếu cần nhiều hơn 8 đường I/O, bạn có thể dễ dàng nối nhiều shift register lại với nhau bằng cách kết nối đầu ra của board này với đầu vào của board tiếp theo.

Ưu điểm của việc sử dụng shift register là tiết kiệm số lượng chân trên vi điều khiển. Mỗi vi điều khiển đều có một số lượng chân GPIO (General Purpose Input/Output) hạn chế. Ví dụ, nếu một dự án cần điều khiển 16 đèn LED, thông thường sẽ cần 16 chân của vi điều khiển. Tuy nhiên, với hai shift register được nối tiếp, chúng ta có thể điều khiển 16 đèn LED chỉ với 4 chân I/O.

Bộ điều khiển NES của SparkFun sử dụng shift register.

Một ví dụ thực tế về việc sử dụng shift register để thu thập input là bộ điều khiển Nintendo (NES) đời đầu. Vi điều khiển chính của NES cần nhận tín hiệu từ các nút nhấn trên bộ điều khiển, và nó đã sử dụng một shift register để thực hiện nhiệm vụ này.

Để minh họa cách sử dụng shift register, chúng ta có thể dùng board 74HC165 breakout và Arduino Uno để thực hiện chuyển đổi parallel-in sang serial-out. Một shift register 8-bit cần 4 đường kết nối với vi điều khiển: Clock (CLK), Clock Enable (CE), Shift/Load (SH/LD) và Serial Data Out (SER_OUT).

Sơ đồ chân của board breakout 74HC165.

Kết nối CLK với chân 12, CE với chân 9, SH/LD với chân 8 và SER_OUT với chân 11 của Arduino Uno. Các chân A-H của shift register có thể được kết nối với các loại input như nút nhấn, công tắc hoặc mạch transistor kỹ thuật số.

Sơ đồ kết nối mạch với Arduino Uno.

Code Arduino sẽ khởi tạo các chân đã kết nối, thiết lập trạng thái ban đầu cho CLK và SH/LD, đọc giá trị từ các chân A-H bằng hàm shiftIn và in kết quả ra Serial Monitor. Bạn có thể tìm thấy code mẫu chi tiết trên trang web của SparkFun.

Sau khi đã hiểu rõ về shift register, bạn có thể mở rộng dự án của mình bằng cách kết nối nhiều input hơn hoặc sử dụng nhiều shift register nối tiếp với nhau. Tìm hiểu thêm về logic kỹ thuật số và flip-flop sẽ giúp bạn hiểu sâu hơn về nguyên lý hoạt động của shift register.

Sử dụng shift register với SparkFun Inventor Kit.

Comments

No comments yet. Why don’t you start the discussion?

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *