|
Post by 邱老师 on Jan 2, 2021 10:07:40 GMT
多位数码管显示要用到段码和位码 接线:D0到D7,接到开发板J3插座上的D0到D7,D8、D9分别接到A端和B端 链接:https://pan.baidu.com/s/1fUIjoKn2Mq6yNBXhUTqTeg 提取码:77hq 视频链接
nano视频链接int ledCount=8;
//定义段码,这里是共阴段码,可以使用数码管段码软件改变数组值或者任意显示形状
const unsigned char dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//位码
unsigned char const dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
int ledPins[] = {
0,1,2, 3, 4, 5, 6, 7, }; // 对应的8位数据引脚LY-51S独立模块开发板上接J3,0脚接D0以此类推
int latchA = 8;//位码锁存控制端LY-51S独立模块开发板上接J2 A端
int latchB = 9;//段码锁存控制端LY-51S独立模块开发板上接J2 B端
void setup() {
// 循环设置,把对应的端口都设置成输出
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
pinMode(latchA, OUTPUT);
pinMode(latchB, OUTPUT);
}
}
// 数据处理,把需要处理的byte数据写到对应的引脚端口。
void deal(unsigned char value){
for(int i=0;i<8;i++)
digitalWrite(ledPins[i],bitRead(value,i));//使用了bitWrite函数,非常简单
// !bitRead(value,i),这里前面加!(非运算符号),取决于使用的是共阴还是共阳数码管。
}
// 主循环
void loop() {
// 循环显示0-9数字
for(int i=0;i<8;i++){
deal(0);//清空段码,不显示,不然会造成”鬼影“
deal(dofly_WeiMa[i]);//读取对应的位码值,写入到74hc573集成块
digitalWrite(latchA,HIGH);//写高电平到连接位码的74hc573的11脚位,并行输出8个引脚的高低电平,驱动相应数码管的com口。
digitalWrite(latchA,LOW);//复原
deal(dofly_DuanMa[i]);//同理读取对应的段码值,驱动数码管com口。
digitalWrite(latchB,HIGH);//并行输出,此时数码管点亮
digitalWrite(latchB,LOW);//复原
delay(500); //这里使用很长的延时,把动态扫描动作放慢,这样可以清楚的知道扫描原理。
}
}
|
|
徐晨涛
New Member
Posts: 29
|
Post by 徐晨涛 on Jan 16, 2021 12:18:33 GMT
完成
|
|
周佳祺
New Member
Posts: 32
|
Post by 周佳祺 on Jan 17, 2021 7:24:40 GMT
完成
|
|
翁锐喆
New Member
Posts: 13
|
Post by 翁锐喆 on Jan 17, 2021 8:10:57 GMT
完成
|
|