【arduino】4位8段数码管的使用

    技术2022-07-13  62

    参考文章 原理分析: a,b,c,d,e,f,g,dp控制8段灯,其他4针脚控制位显示。 但是如何控制不同位同时显示不同数字,比如第一位显示1,第二位显示二,其实实际上是不同时显示,只不过是视觉效果。我们先选择1位置,然后点亮数字1,然后熄灭1位置,打开2位置,点亮2,整个过程十分迅速,所以看起来是显示12. 这里用同时点亮1位置b段和2位置c段做测试

    void setup() { pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); } //使用共阳4位数码管,相应的数字位为高电平则选中,相应的段位低电平在点亮 void loop() { digitalWrite(9,1); //9号端口高电平 digitalWrite(2,0); //2号端口低电平 digitalWrite(2,1); digitalWrite(9,0); digitalWrite(10,1); digitalWrite(3,0); digitalWrite(10,0); digitalWrite(3,1); } //显示23.45 int a=2; #define w1 10 int const num[11][8]={ {0,0,0,0,0,0,1,1}, //0 {1,0,0,1,1,1,1,1}, //1 {0,0,1,0,0,1,0,1}, //2 {0,0,0,0,1,1,0,1}, //3 {1,0,0,1,1,0,0,1}, //4 {0,1,0,0,1,0,0,1}, //5 {0,1,0,0,0,0,0,1}, //6 {0,0,0,1,1,1,1,1}, //7 {0,0,0,0,0,0,0,1}, //8 {0,0,0,0,1,0,0,1}, //9 {1,1,1,1,1,1,1,0}, //10 }; void setup() { for(int i=a;i<w1+4;i++){ pinMode(i,OUTPUT); } Serial.begin(9600); } void clc(){ //清屏 for(int i=a;i<a+8;i++){ digitalWrite(i,1); //段高电平熄灭 } for(int i=w1;i<w1+4;i++){ digitalWrite(i,0); //位低电平熄灭 } } void led(int x,int y){ clc(); if(x>4)return; digitalWrite(w1+x-1,1); for(int i=0;i<8;i++) digitalWrite(a+i,num[y][i]); } void loop() { led(1,2); led(2,3); led(2,10); led(3,4); led(4,5); }
    Processed: 0.011, SQL: 9