1. Cơ bản về IC 74HC595
74hc595 là IC ghi dịch 8 bit kết hợp chốt dữ liệu, đầu vào nối tiếp đầu ra song song. IC này thường sử dụng để mở rộng Port của vi điều khiển để quét LED 7 đoạn....
2. Cách thức hoạt động:
IC74HC595 với đầu vào nhận dữ liệu nối tiếp, đầu ra song song. Khi 1 bit được đưa đến chân nhận dữ liệu DS, muốn đẩy bit này vào thanh ghi dịch ta cần kích một xung vào chân SHCP (xung sườn dương từ 0->1). Cứ lần lượt vậy sau khi đưa hết hết 8 bit vào thanh ghi dịch, 8 bit này vẫn nằm trong bụng của 74HC595 (trong 8-bit storage register). Muốn xuất cùng một lúc cả 8 bit này ra các chân ngõ ra (từ Q0 -> Q7) ta cần tạo ra một xung lên chân STCP (xung sườn dương từ 0->1). Do thanh ghi dịch chỉ lưu trữ tối đa 8 bit nên khi bit dữ liệu thứ 9 tiếp tục được đưa vào thanh ghi dịch thì bit dữ liệu đầu tiên được đẩy ra chân Q7S.
Nếu kết nối chân Q7S này đến chân DS của IC 74HC595 tiếp theo. Ta có thể mở rộng rất nhiều port xuất.
Chân MR (chân số 10): khi chân này ở mức thấp, dữ liệu chứa trong thanh ghi dịch bị xóa hết. Khi chân này ở mức cao 74HC595 hoạt động bình thường
Chân OE (chân số 13): Khi OE=0 cho phép xuất ngõ ra.
3. Giao tiếp led 7 đoạn + IC74HC595
#include <16F877A.h> #device *=16 ADC=10 #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT unsigned char Code7Seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; /* Dinh nghia cac chan cua IC74HC595 */ #define SHCP_PIN PIN_C0 #define DS_PIN PIN_C1 #define STCP_PIN PIN_C2 void IC_74hc595(int data) { int i; output_low(SHCP_PIN); for(i=0;i<=7;i++) { if((data & 0x80)==0) output_low(DS_PIN); else output_high(DS_PIN); data=data<<1; output_high(SHCP_PIN); output_low(SHCP_PIN); } } void IC_74HC595_Output() { output_low(STCP_PIN); delay_us(5); output_high(STCP_PIN); output_low(STCP_PIN); } void main(void) { IC_74hc595(Code7Seg[9]); IC_74hc595(Code7Seg[8]); IC_74hc595(Code7Seg[7]); IC_74hc595(Code7Seg[6]); IC_74HC595_Output(); } |
Không có nhận xét nào:
Đăng nhận xét