|
发表于 2019-2-24 16:12:34
|
显示全部楼层
本帖最后由 Ansifa 于 2019-2-24 16:13 编辑
试一下 - // Serial.println("1th");
- // byte data1 = B10000100;//Led数码管,Q7~Q0
- // byte data2 = B10001111;//双色LED,Q7~Q0
- // digitalWrite(loadPin, LOW);
- // shiftOut(dataPin, clockPin, MSBFIRST, data2);//双色LED
- // shiftOut(dataPin, clockPin, MSBFIRST, data1);//Led数码管
- // digitalWrite(loadPin, HIGH);
- const int dataPin = 13; //数据
- const int loadPin = 14; //锁存
- const int clockPin = 0; //时钟
- const int enPin = 2;//en@
- const int mrPin = 15;//MR@
- unsigned char count[] = {0xC0, 0xFC, 0x92, 0x94, 0xAC, 0x85, 0x81, 0xDC, 0x80, 0x84, 0x88, 0xA1, 0xC3, 0xB0, 0x83, 0x8B}; //数码管0~9,A~F真值表
- //SMG定义:0=写数码管,1=写LED
- void write_data(unsigned int SMG, unsigned char data)
- {
- if (SMG == 0)
- {
- if (data < 10)
- {
- byte data2 = B01111111;//双色LED,Q7~Q0,关闭第二数码管显示
- digitalWrite(loadPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, data2);//双色LED
- shiftOut(dataPin, clockPin, MSBFIRST, count[data]);//Led数码管
- digitalWrite(loadPin, HIGH);
- }
- else
- {
- byte data2 = B11111111;//双色LED,Q7~Q0 显示十位
- digitalWrite(loadPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, data2);//双色LED
- shiftOut(dataPin, clockPin, MSBFIRST, 0x7f & count[data / 10]);//Led数码管 关闭个位
- digitalWrite(loadPin, HIGH);
- delay(60);
- data2 = B01111111;//双色LED,Q7~Q0,显示个位
- digitalWrite(loadPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, data2);//双色LED
- shiftOut(dataPin, clockPin, MSBFIRST, count[data % 10]);//Led数码管
- digitalWrite(loadPin, HIGH);
- delay(60);
- }
- }
- if (SMG == 1)
- {
- byte data2 = B10001111;//双色LED,Q7~Q0
- digitalWrite(loadPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, data2);//双色LED
- shiftOut(dataPin, clockPin, MSBFIRST, count[data]);//Led数码管
- digitalWrite(loadPin, HIGH);
- }
- }
- void setup()
- {
- pinMode(dataPin, OUTPUT);
- pinMode(loadPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(enPin, OUTPUT);
- digitalWrite(enPin, LOW);//启用芯片
- pinMode(mrPin, OUTPUT);
- digitalWrite(mrPin, LOW);//复位
- delay(500);
- digitalWrite(mrPin, HIGH);
- Serial.begin(115200);
- }
- void loop()
- {
- for (unsigned char i = 0; i < 16; i++)
- {
- write_data(0, i);
- delay(200);
- }
- }
复制代码 |
|