Bạn đã bao giờ muốn điều khiển nhiều LED chưa? Hay bạn có khi nào bạn cần thêm chân I / O không? Bài viết này này Điện Tử Tương Lai sẽ nói về những điều cơ bản bạn cần biết về một công nghệ cho phép bạn thực hiện điều đó. Nó được gọi là thanh ghi dịch hay shift register. Vậy nó chính xác là gì? Tại sao nó hữu ích? Làm thế nào để sử dụng nó? Đây là tất cả các câu hỏi mà Điện Tử Tương Lai sẽ cố gắng trả lời trong bài viết này.
Thanh ghi dịch hay shift register là một thiết bị cho phép thêm các đầu vào hoặc đầu ra bổ sung vào vi điều khiển.
Điều này được thực hiện bằng cách chuyển đổi dữ liệu giữa các định dạng song song và nối tiếp. Bộ vi xử lý giao tiếp với thanh ghi dịch bằng cách sử dụng thông tin nối tiếp và thanh ghi dịch thu thập hoặc xuất thông tin ở định dạng song song (nhiều chân).
>>> Tìm ngay thanh ghi dịch bạn cần tại Điện Tử Tương Lai
https://dientutuonglai.com/ic-chuc-nang-2/
Thanh ghi dịch có hai loại cơ bản. Một loại là SIPO là viết tắt của Serial-In-Parallel-Out. Loại còn lại là PISO viết tắt là Parallel-In-Serial-Out. Loại đầu tiên SIPO rất hữu ích để kiểm soát một số lượng lớn đầu ra, ví dụ như LED. Trong khi loại thứ hai, PISO sử dụng để thu thập một số lượng lớn đầu vào, ví dụ như nút nhấn.
Nếu bạn cần nhiều hơn 8 đường I / O bổ sung, bạn có thể dễ dàng liên kết nhiều thanh ghi dịch với nhau bằng cách kết nối phía đầu ra của bo breakout với phía bên phải của bo khác.
Shift register thường được sử dụng với mục đích tiết kiệm các chân trên vi điều khiển. Mọi bộ vi điều khiển đều có một số chân giới hạn cho các đầu vào và đầu ra chung (GPIO).
Nếu một dự án cần điều khiển 16 LED, thông thường sẽ yêu cầu 16 chân của vi điều khiển. Trong trường hợp bạn không có 16 chân I / O khả dụng, thì bạn sẽ cần đến thanh ghi dịch. Với hai thanh ghi dịch được mắc nối tiếp, chúng ta có thể điều khiển 16 LED chỉ với 4 chân I / O. Đó là một sự khác biệt, và bạn có thể tiết kiệm được nhiều chân hơn khi có nhiều thanh ghi dịch liên kết với nhau.
Một ví dụ thực tế về việc sử dụng thanh ghi dịch để thu thập đầu vào là bộ điều khiển Nintendo ban đầu. Bộ vi điều khiển chính của NES cần nhận các lần nhấn nút từ bộ điều khiển và nó đã sử dụng shift register để thực hiện nhiệm vụ đó.
Kết nối phần cứng
Chúng ta sẽ sử dụng breakout board 74HC165 và Arduino Uno để cho thấy cách thực hiện vào song song (Parallel-In) đến ra nối tiếp (Serial-Out) cho ví dụ này.
Một thanh ghi dịch 8 bit cần 4 line của vi điều khiển. Một để đồng hồ định thời gian truyền dữ liệu, một để bật đồng hồ, một để tải / chốt / dịch chuyển các bit và một để truyền dữ liệu nối tiếp.
Kết nối đồng hồ (CLK) với chân 12 và bật đồng hồ (CE) với chân 9. CLK đặt tần số mà các bit được dịch chuyển còn đường CE cho phép tín hiệu đồng hồ truyền qua mạch dịch.
Kết nối shift / load (SH / LD) với chân 8. Quá trình chuyển đổi xuống mức thấp trên chân load cho thanh ghi dịch biết trạng thái hiện tại của 8 chân đầu vào (A-H). Các chân A-H có thể được kết nối với một số loại đầu vào như nút, công tắc hoặc mạch transistor kỹ thuật số. Nếu bạn đang kiểm tra chúng, thì nối trực tiếp chúng vào nguồn điện hoặc đất để đảm bảo mọi thứ hoạt động chính xác. Trong ví dụ này sẽ kết nối một cái với một nút có điện trở kéo lên và những cái còn lại với nguồn hoặc nối đất.
Kết nối nối tiếp ra (SER_OUT) với chân 11. Chân này là nơi nhận thông tin nối tiếp từ thanh ghi dịch. Ngoài ra, kết nối nối tiếp trong (SER_IN) với đất. Nếu bạn xâu chuỗi nhiều shift register với nhau, nối tiếp vào sẽ được gắn với nối tiếp ra khỏi thanh ghi dịch cuối cùng. Thanh ghi đầu tiên trong line sẽ vẫn có chân nối tiếp của nó được nối đất còn thanh ghi cuối cùng trong chuỗi sẽ có đầu ra nối tiếp của nó kết nối trở lại bộ vi xử lý thay vì một thanh ghi dịch khác.
Đừng quên kết nối nguồn (2V-6V) và nối đất. Khi mọi thứ đã kết nối xong, chúng ta hãy xem xét firmware.
Firmware
Chúng ta sẽ tóm tắt ngắn gọn những gì code làm được. Đầu tiên, nó khởi tạo tất cả các chân mà chúng ta đã kết nối với đầu ra, ngoại trừ chân mà chúng ta nhận được thông tin nối tiếp. Chúng ta đặt chân đồng hồ và dịch về trạng thái ban đầu (CAO) như mô tả trong datasheet. Để đọc trạng thái của các chân A-H, chúng ta cần báo cho thanh ghi dịch để nắm bắt trạng thái của các chân. Chúng ta thực hiện việc này bằng cách kéo chân load THẤP một thời gian ngắn (5 micro giây). Khi các chân được tải, chúng ta đảm bảo phần còn lại của các chân ở trạng thái bắt đầu như trong mô tả datasheet và sử dụng chức năng Arduino shiftIn để kéo tất cả 8 giá trị chân A-H vào một byte. Các giá trị được xuất ra trên chân nối tiếp. Sau đó nó sẽ đợi và lặp lại. Nếu bạn đang kết nối các chân như chúng ta đã làm ở trên, sẽ dễ dàng kiểm tra xem phần cứng của bạn có hoạt động chính xác hay không.
Bây giờ, hãy thử kết nối từng đầu vào với các nút hoặc thêm một thanh ghi dịch khác vào hỗn hợp. Nếu bạn nối nhiều hơn, bạn sẽ phải sửa đổi mã một chút bằng cách tải một lần, sau đó thực hiện shiftIn cho mỗi shift register bạn có trước khi tải lại.
>>> Tìm ngay thanh ghi dịch bạn cần tại Điện Tử Tương Lai
Hotline: 0979 466 469