Управление семисегментным индикатором с помощью МК

Обсуждаются темы не относящиеся к журналу "РАДИО"

Управление семисегментным индикатором с помощью МК

Сообщение wlf » 30 ноя 2012, 15:41

Доброго времени суток!!! Подскажите пожалуйста! Имеем некое число, например 124 (b'1111100), как с помощью МК PIC16F84 вывести это число на три семисегментных индикатора? Индикация динамическая. Понимаю, что в порт нужно загружать последовательно числа 1, 2 и 4, соответственно подавая питание на анод/катод соответствующего индикатора. Как это реализуется программно, не совсем понятно!
wlf
 
Сообщения: 20
Зарегистрирован: 26 апр 2009, 19:04

Re: Управление семисегментным индикатором с помощью МК

Сообщение Pavel » 01 дек 2012, 08:39

Здравствуйте. Все зависит от варианта подключения сегментов к МК. Если напрямую то опять же зависит какой сегмент подключен к какому порту.
Возьмем самый простой вариант (индикатор с общим катодом пусть будет). Сегменты подключены: A-RB0, B-RB1, C-RB2, D-RB3, E-RB4, F-RB5, G-RB6, H(точка)-RB7. Общие катоды: 1-RA0, 2-RA1, 3-RA2 (подключены через транзисторные ключи).
Общие действия: RA0=0, RA1=0, RA2=0 - индикатор гасится (можно и так: PORTB=b'00000000).
Алгоритм:
1) RA0=0. RA1=0. RA2=0. PORTB=b'00000110. RA0=1. //Цифра 1.
2) RA0=0. RA1=0. RA2=0. PORTB=b'01011011. RA1=1. //Цифра 2.
3) RA0=0. RA1=0. RA2=0. PORTB=b'01100110. RA2=1. //Цифра 4.

Алгоритм выполняется по кругу.
Pavel
 
Сообщения: 71
Зарегистрирован: 22 мар 2010, 21:46

Re: Управление семисегментным индикатором с помощью МК

Сообщение Ewgen » 01 дек 2012, 10:58

Не забудьте включить паузу около 4мс на подсветку каждого индикатора.
Ewgen
 
Сообщения: 221
Зарегистрирован: 13 ноя 2009, 20:40
Откуда: Ульяновск

Re: Управление семисегментным индикатором с помощью МК

Сообщение wlf » 02 дек 2012, 15:48

Спасибо за ответы. Описанное выше в ответах, мне понятно! Но, допустим в каком-либо регистре МК содержится константа(какое-либо число) пусть 124. Так вот как это число вывести на индикатор, как из регистра вывести на индикатор??? Спасибо!
wlf
 
Сообщения: 20
Зарегистрирован: 26 апр 2009, 19:04

Re: Управление семисегментным индикатором с помощью МК

Сообщение ASD » 02 дек 2012, 18:13

Нужно исходное число разделить на 10, остаток вывести в разряд единиц.
Затем полученное частное ещё раз разделить на 10, остаток вывести в разряд десятков.
И так далее, пока не получится частное меньше 10, это будет число, выводимое в самый старший разряд.
Это самый простой, но самый медленный вариант. Тем не менее, он широко используется.
Самый быстрый, но требующий больше всего памяти - табличный. Число строк в такой таблице должно быть равно максимальному выводимому числу (с учётом нуля - на единицу больше).. А число столбцов - максимальному числу цифр в нём. Например, в ячейках 124-й строки записано: 1, 2, 4. Эти цифры и выводим на индикатор. Чтобы не прибегать к ещё одному преобразованию, в таблицу можно записать вместо цифр их "семисегментные" коды.
ASD
 
Сообщения: 644
Зарегистрирован: 11 мар 2008, 15:52

Re: Управление семисегментным индикатором с помощью МК

Сообщение Ewgen » 02 дек 2012, 21:18

Есть стандартные программы преобразования двоичных чисел в десятичные в которых используется регистр коссвенной адресации FSR, но обращение INDF отсутствует. Вместо INDF ставится 0 (ноль). Такой вариант в документации не описан.
Ewgen
 
Сообщения: 221
Зарегистрирован: 13 ноя 2009, 20:40
Откуда: Ульяновск

Re: Управление семисегментным индикатором с помощью МК

Сообщение Sergey7 » 03 дек 2012, 18:45

Здравствуйте. Попробуйте найти в сети книгу "Самоучитель по программированию PIC контроллеров с нуля (Е.А. Корабельников, 2008 г.)", в которой доступно описан принцип динамической индикации, приведён пример её реализации. Зачем изобретать велосипед?

но обращение INDF отсутствует. Вместо INDF ставится 0 (ноль)


Как же отсутствует? Можно ведь обращаться по адресу регистра Indf (0х00h), без имени. Числа без указания системы счисления по умолчанию MPLAB считаются шестнадцатеричными, хотя здесь всё равно, конечно. То есть (addwf 0,W) и (addwf INDF,W) компилируются одинаково. Можно стандартными именами регистров вообще не пользоваться или дать свои в шапке программы, хотя лучше сразу привыкать.
Sergey7
 
Сообщения: 236
Зарегистрирован: 24 фев 2010, 20:32

Re: Управление семисегментным индикатором с помощью МК

Сообщение wlf » 05 дек 2012, 23:18

Спасибо Всем за информацию!!! Буду совершенствоваться!!!
wlf
 
Сообщения: 20
Зарегистрирован: 26 апр 2009, 19:04


Вернуться в Всё остальное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 120