const int dataPin = 2; //Ds(D)
const int clockPin = 4; //SH_CP(C)
const int latchPin = 16; //ST_CP(L)
const byte NUM[ ]= {
0b11111100, 0b01100000, 0b11011010, 0b11110010,
0b01100110, 0b10110110, 0b10111110, 0b11100000,
0b11111110, 0b11110110, 0b00000001}; //保存0~9和!.
int digit = 2;
//在4位数码管第2位显示
int number = 2;
//显示的具体数字'2',number 值为10时显示!
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
digitalWrite(clockPin, LOW);
digitalWrite(latchPin, LOW);
//初始化引脚为低电平状态
//初始化引脚为低电平状态
}
void loop(){
specialDigitDisplay(digit,number);//调用位数据显示函数
//=======================
// 在指定位上显示指定的数字
// digit:数码管的位号,从左到右依次为1~4
//num:显示的数字
//=======================
}
void specialDigitDisplay(int digit, int num){
byte val = 0;
val= bitSet(val, digit - 1);
shiftOut(dataPin, clockPin, MSBFIRST, val);
//将digit对应位号置位①
//串行移位函数②
shiftOut(dataPin, clockPin, LSBFIRST,~NUM[num]);//0
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
}