Главная » Статьи » Как подключить |
Ранее был рассмотрен вариант того, как можно сэкономить кучу портов вывода микроконтроллера, применив сдвиговый регистр 74HC595. Сейчас посмотрим, как это можно применить на практике, подключив к микроконтроллеру, через регистр, семисегментный индикатор с общим анодом. Этот пример подходит только для индикаторов, у которых сегменты между разрядами не соеденены вместе. Например, если индикатор собран из одноразрядных семисегментников. Схема подключения (кликабельно): Каждый разряд индикатора подключен к микроконтроллеру через свой регистр. При этом получается, что сдвиговый регистр является буфером в котором хранится выводимая цифра. И отправив значение на индикатор, микроконтроллер может заниматься своими делами, не отвлекаясь на индикацию. Удобно? Очень! Не нужно заморачиваться с динамической индикацией и таймерами. Код в Bascom-AVR, для примера выведем на индикатор число 123 :
$regfile = "m8def.dat"
$crystal = 1000000 Config Portd = Output 'значение этой переменной должны будем вывести на индикатор Dim A As Word 'переменные для преобразования исходного числа Dim N1 As Integer Dim N2 As Integer Dim N3 As Integer 'для значений отправляемых в регистр Dim R1 As Byte 'сотки Dim R2 As Byte 'десятки Dim R3 As Byte 'единицы A = 123 'выведем вот это число 'раскладываем число на составляющие N1 = A / 100 'подготовка соток, N1=1 N2 = A Mod 100 'подготовка десяток, N2=2 N2 = N2 / 10 N3 = A Mod 10 'подготовка единиц, N3=3 'вытаскиваем из массива подготовленные значения R1 = Lookup(n1 , Numbers) R2 = Lookup(n2 , Numbers) R3 = Lookup(n3 , Numbers) 'задвигаем в регистры значения, единицы идут первыми Shiftout Portd.5 , Portd.6 , R3 , 1 Shiftout Portd.5 , Portd.6 , R2 , 1 Shiftout Portd.5 , Portd.6 , R1 , 1 Pulseout Portd , 7 , 5 'защелкиваем данные 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 Схему собрал на беспаячной макетке (solderless breadboard), вещь зачетная если не обращать внимание на необходимое количество соединительных проводов =) Результат экспериментов ниже:
Еще одним огромным плюсом этого метода является неизменное количество занимаемых ног микроконтроллера. Для использования необходимы всего три вывода мк, вне зависимости от количества подключаемых разрядов. Скачать файлы проекта (в архиве исходник, прошивка и файлик протеуса) Из минусов рассмотренного метода (куда же без них) можно назвать большое количество используемых сдвиговых регистров (но учитывая копеечную стоимость этой логики это не так страшно). Главным минусом метода является невозможность использовать многоразрядные индикаторы, в которых выводы сегментов соединены вместе. Такие индикаторы предназначены для динамической индикации, поэтому рассмотрим следующий пример: Подключение семисегментного индикатора через 74hc595. Динамическая индикация >>>> Смотрите также:
| |
Просмотров: 49079 | Комментарии: 6 | Рейтинг: 5.0/6 |
Всего комментариев: 6 | ||||||
| ||||||
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |