Thứ Ba, 15 tháng 9, 2015

Lap trinh vi dieu khien - giao tiếp IC ghi dịch 74HC595​

Lap trinh vi dieu khien - giao tiếp IC ghi dịch 74HC595
1. Sơ lược về IC ghi dịch 74HC595:

Là ic ghi dịch 8bit kết hợp chốt dữ liệu , đầu vào nối tiếp đầu ra song song .
Chức năng: Thường dùng trong các mạch quét led 7 , led matrix …để tiết kiệm số chân VDK tối đa (3 chân) . Có thể mở rộng số chân vi điều khiển bao nhiêu tùy thích mà k ic nào có thể làm dc bằng việc mắc nối tiếp đầu vào dữ liệu các ic với nhau .

Cách mở rộng ta chỉ việc nối Q7' của IC trước với chân DATA (chân 14) của IC sau, với IC đầu tiên nhận dữ liệu từ VĐK

2. Sơ đồ chân IC:


Giải thích ý nghĩa hoạt động của một số chân quan trọng cho các bạn lap trinh co ban:
(input)
Chân 14 : đầu vào dữ liệu nối tiếp . Tại 1 thời điểm xung clock chỉ đưa vào được 1 bit
(output)
Q0=>Q7 : trên các chân (15,1,2,3,4,5,6,7)
Xuất dữ liệu khi chân chân 13 tích cực ở mức thấp và có một xung tích cực ở sườn âm tại chân chốt 12
(output-enable)
Chân 13 : Chân cho phép tích cực ở mức thấp (0) .Khi ở mức cao, tất cả các đầu ra của 74595 trở về trạng thái cao trở, không có đầu ra nào được cho phép.
(SQH)
Chân 9: Chân dữ liệu nối tiếp . Nếu dùng nhiều 74595 mắc nối tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo khi đã dịch đủ 8bit.
(Shift clock)
Chân 11: Chân vào xung clock . Khi có 1 xung clock tích cực ở sườn dương(từ 0 lên 1) thì 1bit được dịch vào ic.
(Latch clock)
Chân 12 : xung clock chốt dữ liệu . Khi có 1 xung clock tích cực ở sườn dương thì cho phép xuất dữ liệu trên các chân output . lưu ý có thể xuất dữ liệu bất kỳ lúc nào bạn muốn ,ví dụ đầu vào chân 14 dc 2 bit khi có xung clock ở chân 12 thì dữ liệu sẽ ra ở chân Q0và Q1 (chú ý chiều dịch dữ liệu từ Q0=>Q7)
(Reset)
Chân 10: khi chân này ở mức thấp(mức 0) thì dữ liệu sẽ bị xóa trên chip)
3. CODE giao tiếp lap trinh c
Mã:
#include <REGX51.H>
#define CLK  P2_0 //Chan 11 clock
#define SDI  P2_1 //Chan 14 data
#define STR  P2_2 //Chan 12 chot
unsigned char i;
unsigned char ma[10]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00}; //Mang LED
void delay(unsigned char time){ //Chuong trinh tao tre 50ms
    unsigned char t;
    for(t=0;t<time;t++){
        TH0=0x3c;
        TL0=0xb0;
        TR0=1;
        while(!TF0);
        TF0=TR0=0;
    }
}
void truyen(unsigned char b1, unsigned char b2, unsigned char b3){
/*Chuong trinh truyen du lieu vao 3 IC 74HC595
Cac ban co the mo rong them bao nhieu IC tuy thich
bang cach them code theo mau cua chuong trinh goc
*/
    unsigned char i,Q;
    Q=b3; for(i=0;i<8;i++){SDI=Q&0x80;CLK=0;CLK=1;Q<<=1;} //ic 3
    Q=b2; for(i=0;i<8;i++){SDI=Q&0x80;CLK=0;CLK=1;Q<<=1;} //ic 2
    Q=b1; for(i=0;i<8;i++){SDI=Q&0x80;CLK=0;CLK=1;Q<<=1;} //ic 1
    STR=0; STR=1; //Chot hien thi du lieu
}

void main(){ //Chuong trinh chinh
TMOD=0x01;    //Khoi tao timer 0 che do 16bit
while(1){
    for(i=0;i<10;i++){      //Truyen 3 du lieu khac nhau vao 3 ic
        truyen(0xff,ma[i],ma[9-i]);    //Truyen du lieu vao 3 IC
        delay(5);
        truyen(0x00,ma[i-1],ma[9-i]);
        delay(5);
    }
}
}
4. Mạch mô phỏng trên Proteus:
 

Chúc các bạn tu hoc lap trinh thành công!!!

0 nhận xét:

Đăng nhận xét