esp8266 python 74hc595_esp8266 for arduino 通过595驱动2位数码管的求助

//  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)

{

switch (SMG) {

case 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);

}

break;

}

case 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);

break;

}

}

}

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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值