Giao Tiếp Với IC Ghi Dịch 74HC595 - Thiết Kế Mạch Điện Tử
Có thể bạn quan tâm
Sign in Đăng nhập tài khoản Tài khoản mật khẩu của bạn Forgot your password? Get help Password recovery Khởi tạo mật khẩu email của bạn Mật khẩu đã được gửi vào email của bạn. Thứ Năm, Tháng 1 29, 2026 Đăng nhập/Đăng ký FacebookInstagramTwitterVimeoYoutube
Tìm kiếm Trang Chủ VI ĐIỀU KHIỂN VI ĐIỀU KHIỂN MSP 430 Giao tiếp với IC ghi dịch 74HC595 - VI ĐIỀU KHIỂN
- VI ĐIỀU KHIỂN MSP 430

74HC595 thuộc dòng 74xx595 (xx là ký hiệu có thể khác nhau giữa các hãng) là IC ghi dịch 8bit chốt dữ liệu, đầu vào nối tiếp, đầu ra song song. Dùng để mở rộng cổng ra của MCU (Vi điều khiển) sử dụng giao tiếp SPI. Chúng ta có thể mắc nối tiếp các IC 595 với nhau để mở rộng tùy thích.

74HC595 Pinout
Giao tiếp SPI với IC 595 gồm 3 đường:
- DATA: (14) – Dữ liệu từ MCU sẽ đưa vào chân này, dữ liệu được đưa vào theo kiểu nối tiếp. Để dễ hình dung, bạn có thể hiểu giống như bạn đưa các đồng xu vào ống vậy. Tức dữ liệu sẽ được đẩy dồn vào các ngăn nhớ của 595.
- CLK: (11) – Đây là tín hiệu đồng bộ quá trình giao tiếp giữa MCU và IC 595. Cứ mỗi bit dữ liệu được gửi đi đồng nghĩa với việc gửi đi 1 xung clock. Tức khi có 1 xung tích cực ở sườn dương (từ 0 lên 1) thì 1 bit sẽ được dịch vào IC.
- SCK: (12) – Là chân Shift Clock, dùng để chốt dữ liệu. Khi có 1 xung tích cực ở sườn dương thì dữ liệu ở trong IC 595 sẽ được đẩy ra các chân Output tương ứng, và bạn có thể đẩy dữ liệu ra bất cứ lúc nào. VD: Bạn dịch 3bits vào IC, khi có tín hiệu chốt, dữ liệu sẽ được đưa ra ở Qa – Qb – Qc. Chiều dịch dữ liệu là từ Qa đến Qh. Vì vậy nên cần chú ý chiều dịch dữ liệu.
Một số chân chức năng khác trên IC 595:
- OE (13): Output Enable – Dữ liệu được phép xuất ra khi chân này ở mức tích cực thấp.
- MR (10): Memory Clear – Khi chân này ở mức tích cực thấp sẽ xóa dữ liệu đã đưa vào IC.
- Q7′ (9): Chân dữ liệu nối tiếp, chân này sẽ nối với chân DATA của IC 595 tiếp theo trong trường hợp mắc nối tiếp nhiều IC. Dữ liệu sẽ được dịch qua chân này khi đã dịch đủ 8bits cho IC trước đó.

Sơ đồ vào ra của IC 74HC595
Code tham khảo giao tiếp với 74HC595 trên MSP430 điều khiển led chạy qua chạy lại. Các bạn có thể nhìn trong phần khai báo để nối mạch cho đúng chức năng của từng chân với MCU.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #include <msp430.h> //Define our pins #define DATA BIT2 //DS (SER) – P1.2 #define CLOCK BIT4 // SH_CP (SCK) – P1.4 #define LATCH BIT3 // ST_CP (RCK) – P1.3 #define ENABLE BIT6 // OE (G) – P1.6 // The OE pin can be tied directly to ground, but controlling // it from the MCU lets you turn off the entire array without // zeroing the register // Declare functions void delay ( unsigned int ); void pulseClock ( void ); void shiftOut ( unsigned char ); void enable ( void ); void disable ( void ); void pinWrite ( unsigned int, unsigned char ); int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= (DATA + CLOCK + LATCH + ENABLE); // Setup pins as outputs enable(); // Enable output (pull OE low) int i; //Do a “ping-pong” effect back and forth for(;;){ for ( i = 0 ; i < 8 ; i++ ){ shiftOut(1 << i); delay(50); } for ( i = 7 ; i >= 0 ; i— ){ shiftOut(1 << i); delay(50); } } } // Delays by the specified Milliseconds void delay(unsigned int ms) { while (ms—) { __delay_cycles(1000); // set for 16Mhz change it to 1000 for 1 Mhz } } // Writes a value to the specified bitmask/pin. Use built in defines // when calling this, as the shiftOut() function does. // All nonzero values are treated as “high” and zero is “low” void pinWrite( unsigned int bit, unsigned char val ) { if (val){ P1OUT |= bit; } else { P1OUT &= ~bit; } } // Pulse the clock pin void pulseClock( void ) { P1OUT |= CLOCK; P1OUT ^= CLOCK; } // Take the given 8-bit value and shift it out, LSB to MSB void shiftOut(unsigned char val) { //Set latch to low (should be already) P1OUT &= ~LATCH; char i; // Iterate over each bit, set data pin, and pulse the clock to send it // to the shift register for (i = 0; i < 8; i++) { pinWrite(DATA, (val & (1 << i))); pulseClock(); } // Pulse the latch pin to write the values into the storage register P1OUT |= LATCH; P1OUT &= ~LATCH; } // These functions are just a shortcut to turn on and off the array of // LED’s when you have the enable pin tied to the MCU. Entirely optional. void enable( void ) { P1OUT &= ~ENABLE; } void disable( void ) { P1OUT |= ENABLE; } |
Khi muốn gửi dữ liệu có độ dài lớn, trong khi thanh ghi của MSP430G2xxx chỉ là 16bits, vì vậy bạn cần cắt dữ liệu thành các đoạn 16bits để gửi đi.
Khi tôi gửi 32bits tới 4 IC 74HC595, tôi sẽ phải gửi 2 lần:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <msp430.h> //Define our pins #define DATA BIT2 // DS #define CLOCK BIT4 // SH_CP #define LATCH BIT3 // ST_CP #define ENABLE BIT6 // OE // Declare functions void delay ( unsigned int ); void pulseClock ( void ); void shiftOut(unsigned long, unsigned long); void enable ( void ); void disable ( void ); void pinWrite ( unsigned int, unsigned char ); int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= (DATA + CLOCK + LATCH + ENABLE); // Setup pins as outputs enable(); // Enable output (pull OE low) while(1) { shiftOut(0x0000, 0x003c); //split value from 0x0000003c (32bits) } } // Delays by the specified Milliseconds void delay(unsigned int ms) { while (ms—) { __delay_cycles(1000); } } void pinWrite( unsigned int bit, unsigned char val ) { if (val){ P1OUT |= bit; } else { P1OUT &= ~bit; } } // Pulse the clock pin void pulseClock( void ) { P1OUT |= CLOCK; P1OUT ^= CLOCK; } //LSB to MSB void shiftOut(unsigned long val2, unsigned long val1) { //Set latch to low (should be already) P1OUT &= ~LATCH; char i; for (i = 0; i < 16; i++) { pinWrite(DATA, ((val1 >> i) & 0x01)); pulseClock(); } for (i = 0; i < 16; i++) { pinWrite(DATA, ((val2 >> i) & 0x01)); pulseClock(); } P1OUT |= LATCH; P1OUT &= ~LATCH; } void enable( void ) { P1OUT &= ~ENABLE; } void disable( void ) { P1OUT |= ENABLE; } |
Chia sẻ:
- Click to share on Twitter (Opens in new window)
- Click to share on Facebook (Opens in new window)
BÀI VIẾT LIÊN QUANXEM THÊM
VI ĐIỀU KHIỂN Điện trở treo – Điện trở kéo là gì?
VI ĐIỀU KHIỂN GIAO TIẾP I2C (PHẦN 2)
VI ĐIỀU KHIỂN GIAO TIẾP I2C (PHẦN 1)
Leave a ReplyCancel reply
Làm mạch điện tử theo yêu cầu
Làm mạch điện tử theo yêu cầu
Bài viết mới
Pure Sine Inverter 16F684
25 Tháng 1, 2016Sửa lỗi OUT of ROM CCS Complier
25 Tháng 1, 2016Demo giao tiếp Ethernet Pic
24 Tháng 1, 2016Bài viết phổ biến
Virtual Serial Port Driver – Tạo cổng COM ảo
17 Tháng 12, 2015Bài 2: Đại số Boole và ứng dụng
11 Tháng 1, 2016TẢI CCS 5.015 Full
17 Tháng 12, 2015Danh mục
- VIDEO32
- DỊCH VỤ30
- VI ĐIỀU KHIỂN PIC29
- ĐIỆN TỬ CƠ BẢN26
- VI ĐIỀU KHIỂN 805121
- VI ĐIỀU KHIỂN MSP 43011
- VI ĐIỀU KHIỂN AVR11
- LẬP TRÌNH C11
Giới thiệu
Điện Tử RDVIET Nhận Thiết Kế Mạch Theo Yêu Cầu, Nhận Lập Trình STM32, ARDUINO, PIC, NUVOTON..., Tự Động Hóa Trong Công Nghiệp.
Email: [email protected]
Kết nối
BloggerFacebookFlickrInstagramVKontakte© RDVIET - Thiết Kế Mạch Điện Tử
Loading Comments... Write a Comment... Email (Required) Name (Required) WebsiteTừ khóa » Cách Sử Dụng Ic 74hc595
-
Cách Sử Dụng 74HC595 - Mobitool
-
IC 74HC595 Là Gì, Sơ đồ Chân, Cách Sử Dụng ... - ĐIỆN TỬ TƯƠNG LAI
-
Cách Dùng 74HC595 - CHIPN24.COM
-
74hc595 Là Gì ? Hướng Dẫn Sử Dụng IC 74hc595 - Học Wiki
-
8051 | Bài 6 - Hướng Dẫn Sử Dụng IC GHI DỊCH 74HC595 - Part 1
-
Arduino Với IC 74HC595 — Điện Tử Ứng Dụng
-
Giao Tiếp IC Ghi Dịch 74HC595 Với Arduino Uno - Điện Tử Việt
-
Arduino: điều Khiển Nhiều LED Dùng IC 74HC595 | Anh Nguyễn
-
Cách Sử Dụng 74HC595 - Học Điện Tử - Blog OLP Tiếng Anh
-
Tìm Hiểu Cách Sử Dụng IC 74HC595 Trong Việc Hiển Thị Số Với LED 7 ...
-
[Kiến Thức] IC Thanh Ghi Dịch 74HC595 Giao Tiếp Với Arduino
-
IC 74HC595 Là Gì, Sơ đồ Chân, Cách Sử Dụng, Datasheet
-
Cách Sử Dụng 74Hc595 — Điện Tử Ứng Dụng, Giao Tiếp Với Ic Ghi ...
-
Ic 74Hc595 Là Gì, Sơ Đồ Chân, Cách Sử Dụng 74Hc595