Giỏ hàng
Danh mục sản phẩm

Lập trình STM32 ,STM32H7 Mở rộng IO Đầu vào 74HC165

Đăng bởi Trần Văn Bùi ngày bình luận

Hôm nay mình giới thiệu các bạn IC mở rộng đầu vào số tốc độ cao ,74HC165 .

Các chân dữ liệu đầu vào .

Chân Số 1 Load hoặc lựa chọn .

Chân số 2 CLK xung clock 

Chân số 9:đầu ra dữ liệu ,Là đầu vào vi điều khiển 

Chân 10 :chân nối tiếp IC tiếp theo

Nguyên lý hoạt động :

giản đồ xung như hình vẽ sau .

Chương trình STM32F1,F4,H7 :


 #define DATA_74HC165  PA_7 // chan nhan du lieu noi tiep P26
#define LOAD_74HC165 PA_4 // pin load data P48
#define CLK_74HC165 PA_5 // pin clock   P47
//  #define DATA_74HC165  37 // chan nhan du lieu noi tiep
//#define LOAD_74HC165 45 // pin load data
//#define CLK_74HC165 46 // pin clock
unsigned char byte_2=0,byte_1=0;
unsigned char byte_3=0,byte_4=0;
long int cnt=0;

    unsigned char  i1;
    
  unsigned char   temp = 0;
void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);

  
    pinMode(CLK_74HC165, OUTPUT);
    pinMode(LOAD_74HC165,OUTPUT);
    pinMode(DATA_74HC165,INPUT);
}

void loop() {
//  digitalWrite(CLK_74HC165,LOW); digitalWrite(LOAD_74HC165,LOW);  delay(1000);digitalWrite(CLK_74HC165, HIGH);   digitalWrite(LOAD_74HC165, HIGH);delay(1000); 
  read_74165();
  if(++cnt>10) {  cnt=0;Serial.println(byte_1);}

 // delay(100);
 // Serial.println(byte_2);
//  Serial.println(byte_3);
  // put your main code here, to run repeatedly:
  // digitalWrite(CLK_74HC165, HIGH); digitalWrite(LOAD_74HC165, HIGH); digitalWrite(DATA_74HC165, HIGH);delay(1000);
// digitalWrite(CLK_74HC165, LOW); digitalWrite(LOAD_74HC165, LOW); digitalWrite(DATA_74HC165, LOW);delay(1000);
//read_74165();
 //printf("SPI:_CH1:%d_CH2:%d_CH3:%d\n\r",byte_1,byte_2,byte_3,byte_4);
// delay(10);
}
 

unsigned char Read_74HC165(void)
{
  unsigned char i,data;
 long int cnt_time=0;
//  LOAD_74HC165 = 0;  // load data
 // LOAD_74HC165 = 1;
  data = 0;  
 // digitalWrite(CLK_74HC165, HIGH); digitalWrite(CLK_74HC165,LOW); 
  for( i=8;i>=1;i-- )
   {
     digitalWrite(CLK_74HC165,LOW);digitalWrite(CLK_74HC165, HIGH); 
     data = data << 1;
      if( digitalRead(DATA_74HC165) == 0)
      {
        data |= 0x01 ;
      }
       
     
 

     //  digitalWrite(CLK_74HC165,LOW);digitalWrite(CLK_74HC165, HIGH); 
      // delay(1);
   
      
     //  delay(10);
      
//
   
    };
  return(data);
}


void read_74165(void)
{
   //  byte_3 =  Read_74HC165();  // Doc U4
   // byte_2 =  Read_74HC165();  // Doc U3
 
     
     byte_1 =  Read_74HC165();  // doc U1
        
     digitalWrite(LOAD_74HC165,LOW);     digitalWrite(LOAD_74HC165, HIGH);
       
  

      

     
}

Để ổn định các bạn tham khảo thêm FPGA Có sẵn 74HC165

Cảm ơn các bạn đã ghé thăm shop 

 


Cũ hơn Mới hơn