В первом примере рассмотрим подключение четырехразрядного индикатора с использованием одного сдвигового регистра 74HC595. Аноды индикатора соединены к выводам микроконтроллера (через токоограничительные резисторы или транзисторные ключи, я для примера подключил напрямую). Таким образом сегменты управляются через сдвиговый регистр, а аноды переключаются выставлением в порт микроконтроллера единички. Как видно на схеме, для подключения такого индикатора потребуется 7 ножек микроконтроллера и с увеличением числа разрядов, количество требуемых ног будет расти.




$regfile = "m8def.dat"
$crystal = 8000000

Config Portd = Output

'значение этой переменной должны будем вывести на индикатор
Dim A As Word

'переменные для преобразования исходного числа
Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte
Dim N4 As Byte
Dim M1 As Integer
Dim M2 As Integer
Dim M3 As Integer
Dim M4 As Integer


'для значений отправляемых в регистр
Dim R As Byte

Do


= 1234                                      'значение переменной для вывода на индикатор

'раскладываем число на составляющие

M1 = A
M2 = M1
M3 = M1
M4 = M1

M1 = M1 / 1000                                'M1 = 1234/1000 = 1,234
N1 = Abs(m1)                                  'N1 = Abs (1,234) = 1

M2 = M2 Mod 1000                              'M2 =1234 Mod 1000 = 234
M2 = M2 / 100                                 'M2 = 234 / 100 = 2,34
N2 = Abs(m2)                                  'N2 = Abs (2,34) = 2

M3 = M3 Mod 100
M3 = M3 / 10
N3 = Abs(m3)

M4 = M4 Mod 10
N4 = Abs(m4)


'начинаем задвигать данные в регистр

Portd = &B00000010
= Lookup(n4 , Numbers)                      'первыми идут единицы

Gosub Registr                                 'подпрограмма отправки данных в регистр

Portd = &B00000100
= Lookup(n3 , Numbers)                      'отправляем десятки

Gosub Registr

Portd = &B00001000
= Lookup(n2 , Numbers)                      'отправляем сотки

Gosub Registr

Portd = &B00010000
= Lookup(n1 , Numbers)                      'отправляем тысячи

Gosub Registr

Loop


End                                           'конец программы

'массив с кодами для семисегментника
Numbers:
Data &B11000000                               '0
Data &B11111001                               '1
Data &B10100100                               '2
Data &B10110000                               '3
Data &B10011001                               '4
Data &B10010010                               '5
Data &B10000010                               '6
Data &B11111000                               '7
Data &B10000000                               '8
Data &B10010000                               '9

'подпрограмма отправки данных в регистр
Registr:
Shiftout Portd., Portd., R , 1           'задвигаем данные
Pulseout Portd , 7 , 10                      'защелкиваем регистр
Waitms 5
Return


 Такой метод позволяет немного сократить количество необходимых ног микроконтроллера при подключении к нему семисегментных индикаторов. Но сразу напрашивается решение также подключить аноды (или катоды) индикатора через сдвиговый регистр. Этот метод сейчас и рассмотрим:

 Пример №2 >>>



 << НАЗАД

<<< НА ГЛАВНУЮ



   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order

авторизация
Логин:
Пароль:
Комментарии
SPI интерфейс. Часть 1. Конфигурация в Bascom-AVR
23.10.2017 - vakulyuk:
Разобрался) Проект будет жить)
SPI интерфейс. Часть 1. Конфигурация в Bascom-AVR
23.10.2017 - vakulyuk:
Может есть у кого пример общения двух МК по SPI? Уже облазил интернет и help, не...
Встраиваемый модуль радиоуправления на nRF24L01
21.10.2017 - exersizze:
Алгоритм включения прописан в подпрограмме Logic2, странно что у вас не включает...
Программатор USBASP
21.10.2017 - exersizze:
я свой первый usbasp программировал через LPT порт и программу Ponyprog, поэтому...
Программатор USBASP
20.10.2017 - mozga:
всем привет. вопрос:получается,сделанный(спаянный) программатор на atmega8 в это...
Встраиваемый модуль радиоуправления на nRF24L01
19.10.2017 - amg_84:
Подскажите, пожалуйста. Режим 2. Повторное нажатие любой клавиши пульта не приво...
Бесконтактный датчик температуры MLX90614
18.10.2017 - exersizze:
а с обратной стороны, подключение дисплея не видно.
Бесконтактный датчик температуры MLX90614
18.10.2017 - TSL:
Кинул фото на сюда http://s41.radikal.ru/i093/1710/0b/6064b20c764a.jpg
Пр...
Бесконтактный датчик температуры MLX90614
17.10.2017 - TSL:
Хорошо, завтра сфоткаю. Кину на хостинг или на тот-же сайт Паяльник.