#define clk_pin 10 //时钟引脚
#define shld_pin 11 //数据加载引脚
#define so_pin 12 //串行数据输出引脚,对应单片机的输入引脚
void setup()
{
Serial.begin(9600); //波特率设置为9600
pinMode(clk_pin,OUTPUT); //时钟引脚设置为输出模式
pinMode(shld_pin,OUTPUT); //数据加载引脚设置为输出模式
pinMode(so_pin,INPUT);
digitalWrite(clk_pin,HIGH); //时钟引脚初始化为高电平
digitalWrite(shld_pin,HIGH); //数据加载引脚初始化为高电平
}
uint8_t i; //用于循环
uint16_t data; //读取数据
void loop()
{
digitalWrite(shld_pin,LOW); //加载数据引脚拉低电平获取74HC165并口的数据
delayMicroseconds(10); //延时10us
digitalWrite(shld_pin,HIGH); //拉高加载数据引脚
for(i=0;i<16;i++)
{
data <<= 1;
digitalWrite(clk_pin,LOW); //拉低时钟引脚
delayMicroseconds(10); //延时10us
//if(digitalRead(so_pin)==HIGH) //读数数据输出引脚的电平,如果为高电平则置1
data = data|digitalRead(so_pin);
digitalWrite(clk_pin,HIGH); //拉高时钟引脚
}
Serial.print("0X ");
Serial.println(data,HEX); //打印数据。
data = 0; //数据清零
delay(500); //延时500毫秒,进入下一轮数据读取。
}