//版本一
int DS=7;
int SH_CP=9;
int ST_CP=8;
void setup() {
pinMode(DS,OUTPUT);
pinMode(SH_CP,OUTPUT);
pinMode(ST_CP,OUTPUT);
}
void shift(int x){
digitialWrtie(SH_CP,LOW);
digitialWrite(DS,x);
digitialWrtie(SH_CP,HIGH);
}
void loop() {
digitialWrtie(ST_CP,LOW);
shift(1);
shift(0);
shift(1);
shift(1);
shift(1);
shift(0);
shift(1);
shift(1);
digitialWrtie(ST_CP,HIGH);
}
//版本二、1
int DS=7;
int SH_CP=9;
int ST_CP=8;
void setup() {
pinMode(DS,OUTPUT);
pinMode(SH_CP,OUTPUT);
pinMode(ST_CP,OUTPUT);
}
void shift(int SH_CP,int DS,int x){
digitialWrtie(SH_CP,LOW);
digitialWrite(DS,x);
digitialWrtie(SH_CP,HIGH);
}
//数据类型是八位二进制数byte
void shiftout(int SH_CP,int DS,byte num){
int s=1;
for(int i=0;i<8;i++)
{
shift(SH_CP,DS,num&s)
s<<=1;//等价于s=s<<1,s左移一位,原来s=0001,左移一位s=0010
}
}
void loop() {
digitialWrtie(ST_CP,LOW);
shift(SH_CP,DS,221);
digitialWrtie(ST_CP,HIGH);
}
//版本二、2
int DS=7;
int SH_CP=9;
int ST_CP=8;
const int MSB=1;
const int LSB=0;
void setup() {
pinMode(DS,OUTPUT);
pinMode(SH_CP,OUTPUT);
pinMode(ST_CP,OUTPUT);
}
void shift(int SH_CP,int DS,int x){
digitialWrtie(SH_CP,LOW);
digitialWrite(DS,x);
digitialWrtie(SH_CP,HIGH);
}
//数据类型是八位二进制数byte
void shiftout(int SH_CP,int DS,int order,byte num){
int s;
order==LSB?s=1:s=128;
for(int i=0;i<8;i++)
{
shift(SH_CP,DS,num&s)
order==LSB?s<<=1:s>>=1;//等价于s=s<<1,s左移一位,原来s=0001,左移一位s=0010
//s=1即s=0000 0001;s=128即s=1000 0000
}
}
void loop() {
digitialWrtie(ST_CP,LOW);
shift(SH_CP,DS,MSB,123);//Q7‘接下一个拓展板的DS,以此拓展16个并行输出口
shift(SH_CP,DS,MSB,221);
digitialWrtie(ST_CP,HIGH);
}



