Hôm nay mình sẽ giới thiệu các bạn IC 595 để mở rộng đầu ra cho chíp MCU

Trong mạch ứng dụng thực tế IC595 dùng rất nhiều trong công nghiệp như điều khiển led 7 đoạn

Mở rộng đầu ra cho MCU

Mình đã từng nghiên cứu mạch chạy công nghiệp của nhật dùng 89 nhưng chạy tương đối tốt

-Vấn đề khi ra chợ trời mua linh kiện toàn hàng chất lượng kém khi mua chạy kém không rõ lý do

-Đối với mạch thiết kế tương đối quan trọng ,

-IC 595 chuyển tư nối tiếp sang song song

ShftOut_Schm1

-ở đây mình dùng 3 đường tín hiệu bao gồm clk.data,load

-Data đẩy dữ liệu từ MCU

-Clk cấp xung

-Load load data

Sơ đồ xung

595

Về code :

//--------------------------------------------------
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
// khao bao cac chan 74hc595 de lap trinh
sbit dulieu = P2^1;   // chan du lieu
sbit xung   = P2^0;   // chan xung dich tung bit
sbit chot   = P2^2;   // chan chot du lieu
unsigned int n,m,k;
//****Chuong trinh tao tre**********/
void delay(unsigned char ms )
{
 int i,j;
 for(i=0;i<ms;i++)
 {
  for(j=0;j<125;j++);
 }
}
   // chuong trinh lap trinh cho 74hc595 chuyen noi tiep sang song song
void convert(unsigned char x)
{   // do chuc nang ghi dich 8 bit vao noi tiep ra song song
     // do do vong for duoi se cho dich 8 lan de du 8 chan dau ra cho vdk
 int i,tam;
 for(i=0;i<8;i++) // 8 lan dich de co 8 bit
 {
  tam=x;
  tam=tam&0x80;
  if(tam==0x80) dulieu=1;
  else dulieu=0;
  x=x<<1;    // dich bit nhu sau
  xung=0;
  xung=1;
 }
}
//********************Hieu ung sang duoi******************************************/
void sangduoi()
{
 int j;
 unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;   // khi dich du 8 biut thi chot du lieu va xuat ra output
  chot=1;
  delay(1000);
 }
}
//*******************Hieu ung sang dan******************************/
void sangdan()
{
 int j;
 unsigned char mang[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;
  chot=1;
  delay(1000);
 }
}
//*******************hieu ung chop tat led*************
void choptat()
{
 int j;
 unsigned char mang[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;   // khi dich du 8 biut thi chot du lieu va xuat ra output
  chot=1;
  delay(1000);
 }
}
//*****************hieu ung sang chan le****************//
void chanle()
{
 int j;
 unsigned char mang[]={0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa};
 for(j=0;j<8;j++)
 {
  convert(mang[j]);
  chot=0;
  chot=1;
  delay(1000);
 }
}
//*************chuong trinh chinh***************
 void main(void)
{
  sangdan();
  chanle();
  choptat();
  sangduoi();
}

Thank you !

Bình luận

Bình luận