dllbridge

Untitled

Apr 14th, 2025
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.73 KB | None | 0 0
  1.  
  2. //int SH_CP = 10;    // Контакт SH_CP
  3. //int ST_CP =  9;    // Контакт ST_CP
  4. //int DS    =  8;    // Контакт DS
  5.  
  6.  
  7. int SH_CP =  7;    // Контакт SH_CP
  8. int ST_CP =  6;    // Контакт ST_CP
  9. int DS    =  5;    // Контакт DS
  10.  
  11. /////////////////////////////////////////////////////////// // Настроим выходы SH_CP, ST_CP, DS
  12. void setup()
  13. {
  14.  
  15.     pinMode(SH_CP, OUTPUT);                             //  Тактовый вход регистра  СДВИГА
  16.     pinMode(ST_CP, OUTPUT);                             //  Тактовый вход регистра хранения
  17.     pinMode(DS   , OUTPUT);                             //  Вход данных  
  18.  
  19.     digitalWrite(ST_CP, LOW);                           //  Защелка  
  20.     //digitalWrite(DS   , HIGH);
  21.     digitalWrite(DS   ,   1);
  22.     digitalWrite(SH_CP, LOW);
  23. }
  24.  
  25.  
  26. void digit(int n);
  27.  
  28. ///////////////////////////////////////////////////////////
  29. void loop()
  30. {
  31.      static int    nCnt = 0;  
  32.      if(nCnt > 63) nCnt = 0;
  33.      if(nCnt <  4)   digit( 2);
  34.  
  35.      if(nCnt > 59) { digit(-6);   goto L_01; }    //
  36.      if(nCnt > 55) { digit(-5);   goto L_01; }    //           нижняя чёрточка
  37.      if(nCnt > 51) { digit(-4);   goto L_01; }    //          средняя чёрточка
  38.      if(nCnt > 47) { digit(-3);   goto L_01; }    //          верхняя чёрточка
  39.  
  40.      if(nCnt > 43) { digit( 0);   goto L_01; }      
  41.      if(nCnt > 39) { digit( 9);   goto L_01; }  
  42.      if(nCnt > 35) { digit( 8);   goto L_01; }
  43.  
  44.      if(nCnt > 31) { digit( 6);   goto L_01; }      
  45.      if(nCnt > 27) { digit( 5);   goto L_01; }  
  46.      if(nCnt > 23) { digit( 4);   goto L_01; }      
  47.      if(nCnt > 19) { digit(-2);   goto L_01; }    
  48.      if(nCnt > 15) { digit( 7);   goto L_01; }
  49.      if(nCnt > 11) { digit( 3);   goto L_01; }
  50.      if(nCnt >  7) { digit( 1);   goto L_01; }
  51.      if(nCnt >  3) { digit(-1);   goto L_01; }  
  52.          
  53.        
  54.      
  55. L_01:   nCnt ++;  
  56. }
  57.  
  58. ///////////////////////////////////////////////////////////
  59. bool dg(int n)
  60. {
  61.      static int    nCnt = 0;
  62.      if(nCnt == 8) nCnt = 0;
  63.      switch(n)
  64.      {
  65.  
  66.          case -6:   break;                                 //          ПУСТО
  67.  
  68.          case -5:   if(nCnt == 4) { nCnt ++; return 0; }   //          нижняя чёрточка
  69.                     break;  
  70.  
  71.          case -4:   if(nCnt == 1) { nCnt ++; return 0; }   //          средняя чёрточка
  72.                     break;  
  73.  
  74.          case -3:   if(nCnt == 7) { nCnt ++; return 0; }   //          верхняя чёрточка
  75.                     break;  
  76.  
  77.          case -2:   if(nCnt == 0) { nCnt ++; return 0; }   //          точка  (только)
  78.                     break;            
  79.  
  80.  
  81.          case -1:   break;                                 //  стереть число
  82.  
  83.          case  0:   if(nCnt == 7) { nCnt ++; return 0; }     //  
  84.                     if(nCnt == 6) { nCnt ++; return 0; }          
  85.                     if(nCnt == 5) { nCnt ++; return 0; }  
  86.                     if(nCnt == 4) { nCnt ++; return 0; }
  87.                     if(nCnt == 3) { nCnt ++; return 0; }
  88.                     if(nCnt == 2) { nCnt ++; return 0; }      
  89.                     break;  
  90.  
  91.          case  1:   if(nCnt == 5) { nCnt ++; return 0; }  
  92.                     if(nCnt == 6) { nCnt ++; return 0; }    
  93.                     break;
  94.  
  95.          case  2:   if(nCnt == 7) { nCnt ++; return 0; }  
  96.                     if(nCnt == 6) { nCnt ++; return 0; }    
  97.                     if(nCnt == 4) { nCnt ++; return 0; }  
  98.                     if(nCnt == 3) { nCnt ++; return 0; }
  99.                     if(nCnt == 1) { nCnt ++; return 0; }  
  100.                     break;    
  101.  
  102.          case  3:   if(nCnt == 7) { nCnt ++; return 0; }  
  103.                     if(nCnt == 6) { nCnt ++; return 0; }    
  104.                     if(nCnt == 5) { nCnt ++; return 0; }  
  105.                     if(nCnt == 4) { nCnt ++; return 0; }
  106.                     if(nCnt == 1) { nCnt ++; return 0; }  
  107.                     break;      
  108.  
  109.          case  4:   if(nCnt == 6) { nCnt ++; return 0; }  
  110.                     if(nCnt == 5) { nCnt ++; return 0; }  
  111.                     if(nCnt == 2) { nCnt ++; return 0; }
  112.                     if(nCnt == 1) { nCnt ++; return 0; }  
  113.                     break;    
  114.  
  115.          case  5:   if(nCnt == 7) { nCnt ++; return 0; }     //  
  116.                     if(nCnt == 5) { nCnt ++; return 0; }  
  117.                     if(nCnt == 4) { nCnt ++; return 0; }
  118.                     if(nCnt == 2) { nCnt ++; return 0; }  
  119.                     if(nCnt == 1) { nCnt ++; return 0; }  
  120.                     break;                      
  121.  
  122.          case  6:   if(nCnt == 7) { nCnt ++; return 0; }     //  
  123.                     if(nCnt == 5) { nCnt ++; return 0; }  
  124.                     if(nCnt == 4) { nCnt ++; return 0; }
  125.                     if(nCnt == 3) { nCnt ++; return 0; }
  126.                     if(nCnt == 2) { nCnt ++; return 0; }  
  127.                     if(nCnt == 1) { nCnt ++; return 0; }  
  128.                     break;  
  129.  
  130.          case  7:   if(nCnt == 5) { nCnt ++; return 0; }  
  131.                     if(nCnt == 6) { nCnt ++; return 0; }  
  132.                     if(nCnt == 7) { nCnt ++; return 0; }  
  133.                     break;    
  134.  
  135.  
  136.          case  8:   if(nCnt == 7) { nCnt ++; return 0; }     //  
  137.                     if(nCnt == 6) { nCnt ++; return 0; }          
  138.                     if(nCnt == 5) { nCnt ++; return 0; }  
  139.                     if(nCnt == 4) { nCnt ++; return 0; }
  140.                     if(nCnt == 3) { nCnt ++; return 0; }
  141.                     if(nCnt == 2) { nCnt ++; return 0; }  
  142.                     if(nCnt == 1) { nCnt ++; return 0; }  
  143.                     break;        
  144.  
  145.          case  9:   if(nCnt == 7) { nCnt ++; return 0; }     //  
  146.                     if(nCnt == 6) { nCnt ++; return 0; }          
  147.                     if(nCnt == 5) { nCnt ++; return 0; }  
  148.                     if(nCnt == 4) { nCnt ++; return 0; }
  149.                     if(nCnt == 2) { nCnt ++; return 0; }  
  150.                     if(nCnt == 1) { nCnt ++; return 0; }  
  151.                     break;
  152.  
  153.                                                                        
  154.      }
  155.      nCnt ++;
  156.  
  157. return 1;
  158. }
  159.  
  160.  
  161. ///////////////////////////////////////////////////////////
  162. void digit(int n)
  163. {
  164.       for (int i = 0; i < 8; i++)    // Вызовем начало приема данных
  165.       {
  166.            digitalWrite(DS   ,  dg(n) );
  167.            digitalWrite(SH_CP, HIGH);       delay(20);
  168.            digitalWrite(SH_CP, LOW);
  169.       }
  170.  
  171.       digitalWrite(ST_CP, HIGH);            delay(100);  
  172.       digitalWrite(ST_CP, LOW );
  173. }
  174.  
  175.  
  176.  
  177.  
  178.  
Add Comment
Please, Sign In to add comment