Bài này mình sẽ hướng dẫn các bạn làm việc với IC 74hc595
1, Chức năng :
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 .
Sơ đồ chân:
Giải thích ý nghĩa hoạt động của một số chân quan trọng:
(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)
QA=>QH : 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 Qa và Qb (chú ý chiều dịch dữ liệu từ Qa=>Qh)
(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)
Sơ đồ hoạt động của chíp :
Điều Kiện hoạt động của IC 74hc595
Sơ đồ Logic
Ví dụ Minh họa:
Mình sẽ làm một ví dụ điều khiển LED 7 thanh sử dụng 2 IC 74hc595
Mô Phỏng:
Code:
//*******Chao Mung Cac Ban Den Voi Website Techshowvn.com ***********
#include <REGX52.H> //goi thu vien ham
sbit data_595=P3^0;
sbit clk_595=P3^2; //dinh nghia chan
sbit latch_595=P3^1;
unsigned char a,b,c,d;
unsigned char maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; //khi bao ma led
//ham delay
void delay(unsigned int time);
void truyen(unsigned char d)
{
unsigned char i,temp;
for(i=0;i<8;i++) //vong lap 8 de gui lan luot 8 bit du lieu
{
temp=d; //gan du lieu can truyen cho temp
temp=temp&0x80; //and voi 0x80 de kiem tra bit la 0 hay 1
if(temp==0x80) //neu bang 1
data_595=1; //thi bit thu i la 1
else
data_595=0; //nguoc lai se la 0
d=d*2; //dich bit
clk_595=0; //tao xung clock
clk_595=1;
}
}
// ham hien thi
void hienthi(unsigned int n)
{
a=n/1000;
b=(n00)/100;
c=(n0)/10;
d=n;
truyen(maled[a]);latch_595=1;latch_595=0;delay(100);truyen(0x02);
truyen(maled[b]);latch_595=1;latch_595=0;delay(100);truyen(0x04);
truyen(maled[c]);latch_595=1;latch_595=0;delay(100);truyen(0x08);
truyen(maled[d]);latch_595=1;latch_595=0;delay(100);truyen(0x01);
}
//ham tre
void delay(unsigned int time)
{
while(time--);
}
void main(void)
{
while(1)
{
hienthi(1234);
}
}
Mong nhận được sự đóng góp của các bạn để bài viết thêm hoàn chỉnh hơn
Nguồn: Quét Led 7 Thanh với IC 74HC595
1, Chức năng :
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 .
Sơ đồ chân:
Giải thích ý nghĩa hoạt động của một số chân quan trọng:
(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)
QA=>QH : 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 Qa và Qb (chú ý chiều dịch dữ liệu từ Qa=>Qh)
(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)
Sơ đồ hoạt động của chíp :
Điều Kiện hoạt động của IC 74hc595
Sơ đồ Logic
Ví dụ Minh họa:
Mình sẽ làm một ví dụ điều khiển LED 7 thanh sử dụng 2 IC 74hc595
Mô Phỏng:
Code:
//*******Chao Mung Cac Ban Den Voi Website Techshowvn.com ***********
#include <REGX52.H> //goi thu vien ham
sbit data_595=P3^0;
sbit clk_595=P3^2; //dinh nghia chan
sbit latch_595=P3^1;
unsigned char a,b,c,d;
unsigned char maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; //khi bao ma led
//ham delay
void delay(unsigned int time);
void truyen(unsigned char d)
{
unsigned char i,temp;
for(i=0;i<8;i++) //vong lap 8 de gui lan luot 8 bit du lieu
{
temp=d; //gan du lieu can truyen cho temp
temp=temp&0x80; //and voi 0x80 de kiem tra bit la 0 hay 1
if(temp==0x80) //neu bang 1
data_595=1; //thi bit thu i la 1
else
data_595=0; //nguoc lai se la 0
d=d*2; //dich bit
clk_595=0; //tao xung clock
clk_595=1;
}
}
// ham hien thi
void hienthi(unsigned int n)
{
a=n/1000;
b=(n00)/100;
c=(n0)/10;
d=n;
truyen(maled[a]);latch_595=1;latch_595=0;delay(100);truyen(0x02);
truyen(maled[b]);latch_595=1;latch_595=0;delay(100);truyen(0x04);
truyen(maled[c]);latch_595=1;latch_595=0;delay(100);truyen(0x08);
truyen(maled[d]);latch_595=1;latch_595=0;delay(100);truyen(0x01);
}
//ham tre
void delay(unsigned int time)
{
while(time--);
}
void main(void)
{
while(1)
{
hienthi(1234);
}
}
Mong nhận được sự đóng góp của các bạn để bài viết thêm hoàn chỉnh hơn
Nguồn: Quét Led 7 Thanh với IC 74HC595