当前位置: 代码迷 >> 综合 >> Arduino uno 流水数码管显示 最后位有残影瑕疵
  详细解决方案

Arduino uno 流水数码管显示 最后位有残影瑕疵

热度:45   发布时间:2023-11-22 12:32:37.0

arduino程序


int j=0,n=0,num=0;
unsigned char qq[] = {
    10,10,10,10,5,4,3,9,0,4, 4, 4, 9,10,10,10,10};// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
int latchPin = 4;
int clockPin = 7;
int dataPin = 8;    //定义控制数码管三个引脚 //0 1 2 3 4 5 6 7 8 9 空 .
unsigned char Dis_table[] = {
    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0x7F};    //数码管显示的值
unsigned char Dis_buf[]   = {
    0xF1,0xF2,0xF4,0xF8};       //数码管位
void setup ()
{
    pinMode(latchPin,OUTPUT);pinMode(clockPin,OUTPUT);pinMode(dataPin,OUTPUT); //让三个脚都是输出状态// pinMode(LED1,OUTPUT);// pinMode(LED2,OUTPUT);// pinMode(LED3,OUTPUT);// pinMode(LED4,OUTPUT);//led输出状态// LED1=0;// LED2=0;// LED3=0;// LED4=0;//led初始化
}
void loop()
{
    for(char i=0; i<=3;i++)                   //扫描四个数码管{
    digitalWrite(latchPin,LOW);                               //将ST_CP口上面加低电平让芯片准备好接收数据shiftOut(dataPin,clockPin,MSBFIRST,Dis_table[qq[num]]);     //发送显示码shiftOut(dataPin,clockPin,MSBFIRST,Dis_buf[i] );          //发送通值 digitalWrite(latchPin,HIGH);                              //将ST_CP这个针脚恢复到高电平delay(2);       //延时2ms num++;j++;n++;while (j>500){
    j=0;num++;}while (n>=4){
    num=num-4;n=0;}while (num>15){
    num=0;}}
}

请添加图片描述
请添加图片描述
请添加图片描述
最后出现三位乱码,还很稳定?,然后之后继续正常循环,只是循环的后三位有问题。

  相关解决方案