Advertisement
TehnoZet2

Display Multi-function Shield

Jan 4th, 2023
1,017
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | Source Code | 0 0
  1. /* Определяем контакты сдвигового регистра, используемые для семисегментного дисплея.*/
  2.  
  3. #define LATCH_DIO 4
  4.  
  5. #define CLK_DIO 7
  6.  
  7. #define DATA_DIO 8
  8.  
  9. /* Карты байтов сегментов для чисел от 0 до 9 */
  10.  
  11. const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
  12.  
  13. /* Byte maps to select digit 1 to 4 */
  14.  
  15. const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
  16.  
  17. void setup ()
  18.  
  19. {
  20.  
  21. /* Установите контактов DIO на выходы */
  22.  
  23. pinMode(LATCH_DIO,OUTPUT);
  24.  
  25. pinMode(CLK_DIO,OUTPUT);
  26.  
  27. pinMode(DATA_DIO,OUTPUT);
  28.  
  29. }
  30.  
  31. /* Основная программа*/
  32.  
  33. void loop()
  34.  
  35. {
  36.  
  37. /* Обновить дисплей текущим значением счетчика */
  38.  
  39. WriteNumberToSegment(0 , 1);
  40.  
  41. WriteNumberToSegment(1 , 2);
  42.  
  43. WriteNumberToSegment(2 , 3);
  44.  
  45. WriteNumberToSegment(3 , 3);
  46.  
  47. }
  48.  
  49. /* Напишите десятичное число от 0 до 9 в одну из 4 цифр дисплея */
  50.  
  51. void WriteNumberToSegment(byte Segment, byte Value)
  52.  
  53. {
  54.  
  55. digitalWrite(LATCH_DIO,LOW);
  56.  
  57. shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
  58.  
  59. shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
  60.  
  61. digitalWrite(LATCH_DIO,HIGH);
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement