Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //int SH_CP = 10; // Контакт SH_CP
- //int ST_CP = 9; // Контакт ST_CP
- //int DS = 8; // Контакт DS
- int SH_CP = 7; // Контакт SH_CP
- int ST_CP = 6; // Контакт ST_CP
- int DS = 5; // Контакт DS
- /////////////////////////////////////////////////////////// // Настроим выходы SH_CP, ST_CP, DS
- void setup()
- {
- pinMode(SH_CP, OUTPUT); // Тактовый вход регистра СДВИГА
- pinMode(ST_CP, OUTPUT); // Тактовый вход регистра хранения
- pinMode(DS , OUTPUT); // Вход данных
- digitalWrite(ST_CP, LOW); // Защелка
- //digitalWrite(DS , HIGH);
- digitalWrite(DS , 1);
- digitalWrite(SH_CP, LOW);
- }
- void digit(int n);
- ///////////////////////////////////////////////////////////
- void loop()
- {
- static int nCnt = 0;
- if(nCnt > 63) nCnt = 0;
- if(nCnt < 4) digit( 2);
- if(nCnt > 59) { digit(-6); goto L_01; } //
- if(nCnt > 55) { digit(-5); goto L_01; } // нижняя чёрточка
- if(nCnt > 51) { digit(-4); goto L_01; } // средняя чёрточка
- if(nCnt > 47) { digit(-3); goto L_01; } // верхняя чёрточка
- if(nCnt > 43) { digit( 0); goto L_01; }
- if(nCnt > 39) { digit( 9); goto L_01; }
- if(nCnt > 35) { digit( 8); goto L_01; }
- if(nCnt > 31) { digit( 6); goto L_01; }
- if(nCnt > 27) { digit( 5); goto L_01; }
- if(nCnt > 23) { digit( 4); goto L_01; }
- if(nCnt > 19) { digit(-2); goto L_01; }
- if(nCnt > 15) { digit( 7); goto L_01; }
- if(nCnt > 11) { digit( 3); goto L_01; }
- if(nCnt > 7) { digit( 1); goto L_01; }
- if(nCnt > 3) { digit(-1); goto L_01; }
- L_01: nCnt ++;
- }
- ///////////////////////////////////////////////////////////
- bool dg(int n)
- {
- static int nCnt = 0;
- if(nCnt == 8) nCnt = 0;
- switch(n)
- {
- case -6: break; // ПУСТО
- case -5: if(nCnt == 4) { nCnt ++; return 0; } // нижняя чёрточка
- break;
- case -4: if(nCnt == 1) { nCnt ++; return 0; } // средняя чёрточка
- break;
- case -3: if(nCnt == 7) { nCnt ++; return 0; } // верхняя чёрточка
- break;
- case -2: if(nCnt == 0) { nCnt ++; return 0; } // точка (только)
- break;
- case -1: break; // стереть число
- case 0: if(nCnt == 7) { nCnt ++; return 0; } //
- if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 3) { nCnt ++; return 0; }
- if(nCnt == 2) { nCnt ++; return 0; }
- break;
- case 1: if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 6) { nCnt ++; return 0; }
- break;
- case 2: if(nCnt == 7) { nCnt ++; return 0; }
- if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 3) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- case 3: if(nCnt == 7) { nCnt ++; return 0; }
- if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- case 4: if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 2) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- case 5: if(nCnt == 7) { nCnt ++; return 0; } //
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 2) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- case 6: if(nCnt == 7) { nCnt ++; return 0; } //
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 3) { nCnt ++; return 0; }
- if(nCnt == 2) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- case 7: if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 7) { nCnt ++; return 0; }
- break;
- case 8: if(nCnt == 7) { nCnt ++; return 0; } //
- if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 3) { nCnt ++; return 0; }
- if(nCnt == 2) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- case 9: if(nCnt == 7) { nCnt ++; return 0; } //
- if(nCnt == 6) { nCnt ++; return 0; }
- if(nCnt == 5) { nCnt ++; return 0; }
- if(nCnt == 4) { nCnt ++; return 0; }
- if(nCnt == 2) { nCnt ++; return 0; }
- if(nCnt == 1) { nCnt ++; return 0; }
- break;
- }
- nCnt ++;
- return 1;
- }
- ///////////////////////////////////////////////////////////
- void digit(int n)
- {
- for (int i = 0; i < 8; i++) // Вызовем начало приема данных
- {
- digitalWrite(DS , dg(n) );
- digitalWrite(SH_CP, HIGH); delay(20);
- digitalWrite(SH_CP, LOW);
- }
- digitalWrite(ST_CP, HIGH); delay(100);
- digitalWrite(ST_CP, LOW );
- }
Add Comment
Please, Sign In to add comment