реклама на сайте
подробности

 
 
> Индикатор на K1816BE51
misha88
сообщение Feb 27 2010, 12:46
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



Посмотрите плиз схему и программу подключения светодиодного 4-разрядного индикатора.
Таблица знакогенератора размещена в рез.памяти мк.

CODE
;indpos–номер включеного катода
;Таблица знакогенератора(без децимальных точек)
digit: db C0h, F9h, A4h, B0h, 99h, 92h, 82h, F8h, 80h, 90h
; Таблица кодов для включения одного из четырех катодов
ipos : db 01h, 02h, 04h, 08h
; Инициализация параллельного интерфейса

display:

mov A, 0FFh
out BUS, A
mov A, @R1
add A, digit
mov A, @A
out P1, A
mov A, R2
out BUS, A
rl, A
mov R2, A
inc R1

repeat:

mov A, indpos
mov R1, number
add A, R1
mov R1, digit
add R1
mov A, R1
mov R1, ipos
add R1
mov A, 01h
dcr D
mov A, D
jnz repeat
mov D, 7
jmp repeat


Сообщение отредактировал Omen_13 - Feb 27 2010, 18:51
Причина редактирования: Оформление кода
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 27)
stells
сообщение Feb 27 2010, 12:59
Сообщение #2


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



по схеме: резисторы нужны в базы транзисторов, а коллекторные лучше перенести в сегменты A-G - свечение будет равномерное при зажигании разных символов
Go to the top of the page
 
+Quote Post
misha88
сообщение Feb 27 2010, 13:19
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



м?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
stells
сообщение Feb 27 2010, 13:23
Сообщение #4


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



угу smile.gif
Go to the top of the page
 
+Quote Post
misha88
сообщение Feb 27 2010, 13:29
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



Цитата(stells @ Feb 27 2010, 18:23) *
угу smile.gif

зачем в базе то?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 27 2010, 13:44
Сообщение #6


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(misha88 @ Feb 27 2010, 15:29) *
зачем в базе то?
Для 1816ВЕ51 (ксати, почему выбрана такая печка, она же току сожрёт больше индикаторов) резисторы к npn-транзисторам нужны, но как подтяжка к питанию. Т.е в исходной схеме добавить пару килоом от базы на питание.
http://www.chipinfo.ru/literature/chipnews/200009/58.html - там, правда, пара опечаток есть.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
SSerge
сообщение Feb 27 2010, 15:17
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Вторая схема уже лучше, но:
порты у 1816ВЕ51 очень хилые, в 0 они способны утянуть всего несколько миллиампер, а в плюс и того меньше, так как этот ток обеспечивается только внутренними резисторами подтяжки (internal pullups), более того, порт 0 даже их не имеет, чистый открытый сток.

Так что светодиоды с этих портов не прокормить, нужно чем-то умощнять.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
misha88
сообщение Feb 27 2010, 15:53
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



вопрос хороший. чем только
Go to the top of the page
 
+Quote Post
stells
сообщение Feb 27 2010, 16:07
Сообщение #9


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(SSerge @ Feb 27 2010, 18:17) *
ток обеспечивается только внутренними резисторами подтяжки (internal pullups), более того, порт 0 даже их не имеет, чистый открытый сток.

мда, значит ввел в заблуждение... извиняюсь, последний раз держал в руках этот контроллер лет 15 тому назад laughing.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 27 2010, 16:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(misha88 @ Feb 27 2010, 20:53) *
вопрос хороший. чем только
Можно взять 74HC595 и TPIC6C595. Первая анодами сегментов управлять будет, вторая общими катодами, заменяя транзисторы. Управление всей этой схемой по трем проводам. А если еще и четвертый (для ШИМ-сигнала) задействовать, то можно будет яркость индикатора регулировать (если это требуется). Либо хотя бы какой-то 8-ми разрядный параллельный регистр типа 74HC(T)273 / 74HC(T)274 / 74HC(T)583 на P0 поставьте.
Go to the top of the page
 
+Quote Post
misha88
сообщение Feb 27 2010, 19:04
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



а с прогой что?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Feb 27 2010, 21:29
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



http://incubator.amasoft.ru/content/view/293/475/
Вот тут все, что требуется.
Цитата
а с прогой что?

Будут вопросы - велкам. "а с прогой что" - это не вопрос.

Сообщение отредактировал rezident - Mar 1 2010, 21:35
Причина редактирования: Объединены два сообщения пользователя.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
at89c51ed2
сообщение Feb 27 2010, 21:44
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 14-10-09
Пользователь №: 52 943



2 misha88
По описанию выходной ток низкого уровня для порта Р0 - 5 мА, что вполне достаточно для засветки современных эффективных LED индикаторов (даже в динамической индикации со скважностью 4), но не больших размеров. Выходные токи высокого уровня менее 1 мА, поэтому не годятся для засветки. Поэтому единственной альтернативой (не усложняющей схемотехнику) является применение индикаторов с ОА. Для этого Вам придётся просто проинвертировать коды знакогенератора и выбора знакоместа и сменить полярность ключевых транзисторов с n-p-n на p-n-p с одновременным подключением эммитеров последних не к "земле", а к питанию. В остальном всё правильно - базовые резисторы и резисторы между сегментами и выводами порта Р0. Ещё бы я добавил pull-up резисторы для баз транзисторов. Теперь о программе. Программой это назвать нельзя, это скорее подпрограммы вывода данных на сегменты и знакоместа. Которые не понятно как, в какое время и откуда вызываются. Не понятно, что такое R1, R2, D. Точнее, ясно, что это регистры, но для каких целей? Если уж не пишите об этом в начале (как про знакогенератор), то хотя бы комментарии к командам пишите, что бы Вам самому было понятно. Из какого ассемблера Вы взяли команду "out BUS, A"? Судя по Вашей программе здесь должно быть MOV P0, A. Теперь команда "add A, digit". Вы описываете digit как массив, поэтому при выполнении такой команды (если компилятор не выдаст ошибки) к аккумулятору будет прибавлен нулевой элемент массива, т.е. к числу, которое Вы собираетесь высветить на индикаторе Вы прибавите код знакогенератора 0! Вам же нужно сделать нечто другое: сначала запомнить начальный адрес массива знакогенератора, потом к этому адресу прибавить само число, которое хотите засветить (т.е. сместиться в массиве знакогенератора на само индицируемое число). Далее. В ассемблере 51 не существует команды mov A, @A, косвенная адресация только через R0 и R1! Команды out P1, A не существует! Есть команда MOV P1, A. Что такое регистр D? Нет такого в asm51. Нет команды dcr, есть DEC (декремент). Почему D инициализируется с 7!? Вы что развёртку делаете по сегментам, а не по знакоместам? Тогда это не для Вашей схемы и не для индикаторов с ОА! Вам нужно считать всего 4 раза - ровно столько, сколько индикаторов! В своё время мне очень помогало рисование алгоритма в виде графа (блок-схемы). Может и Вам это поможет. Удачи.
2 DpInRock
Цитата
А вообще, тому преподу, который такие задания дает - надо лицо бить.

А за что, позвольте полюбопытствовать? laughing.gif
Go to the top of the page
 
+Quote Post
vvs157
сообщение Feb 28 2010, 11:03
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(misha88 @ Feb 27 2010, 15:46) *
Таблица знакогенератора размещена в рез.памяти мк.
А разве 1816ВЕ51 не с масочным (программируется на заводе) ПЗУ программ? На бумаге были 1816ВЕ751 с УФ стиранием (не более 100 циклов), но были ли они живьем - не знаю
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 1 2010, 16:47
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Сообщение модератора.
Обсуждение способов и методов преподавания в данной теме является оффтопиком.

Все сообщения с оффтопиком были перенесены в отдельную тему.

Сообщение отредактировал rezident - Mar 1 2010, 21:40
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 3 2010, 13:16
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



Проверьте меня)

Программа поразрядной обработки 1816ВЕ51. Программа должна установить нулевой
разряд числа в регистре R5 в 1, сбросить четвёртый разряд в 0 и инвертировать шестой
разряд. В скобочках указано значение R5 после выполнения заданной операции

Код
org 50h
main:
  mov R5, #0FEh
  mov A, R5
  orl A, #1; Установка нулевого бита => A = FFh
  anl A, #0EFh; Сброс четвёртого бита => A = EFh
  xrl A, #40h; Инвертирование шестого бита => A = AFh
  mov R5, A
end
Go to the top of the page
 
+Quote Post
SSerge
сообщение Mar 3 2010, 14:58
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(misha88 @ Mar 3 2010, 19:16) *
Проверьте меня)

Правильно, но чтобы делать поменьше ошибок и произвести впечатление на препода лучше делать примерно так
CODE
Bit0 EQU (1 << 0)
Bit4 EQU (1 << 4)
Bit6 EQU (1 << 6)
; *******************************************************
; * bitbang
; * установить нулевой разряд числа в регистре R5 в 1,
; * сбросить четвёртый разряд в 0 и
; * инвертировать шестой разряд
; *******************************************************
bitbang xch A,R5
orl A, Bit0
anl A,~Bit4
xrl A, Bit6
xch A,R5
ret

; эту процедуру можно вызвать примерно так:
mov R5, #0FEh
call bitbang


заметим, что аккумулятор не портиться, его содержимое остаётся таким же что и до вызова.
А если ещё и MACRO применить...


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 14 2010, 18:10
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



Переделал


Сообщение отредактировал misha88 - Mar 14 2010, 18:27
Go to the top of the page
 
+Quote Post
vvs157
сообщение Mar 14 2010, 18:43
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(misha88 @ Mar 14 2010, 21:10) *
Переделал
У порта P0 в режиме ввода-вывода выходы с открытым истоком, поэтому нужно ставить подтягивающие резисторы на +5В. Или использовать порт Р1. Повторю еще раз - 1816ВЕ51 - с масочным ПЗУ, программируемым на заводе (конечный потребитель ничего в внутренее ПЗУ ВЕ51 записать не может в принципе), поэтому эту схему можно посторить только на Flash аналоге типа Атмеловского AT89S8252
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 14 2010, 19:00
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



Для динамической индикации группы символов удобно воспользоваться процедурой индикации символа, оформив ее в виде параметризуемой подпрограммы. Входными параметрами для подпрограммы REPEAT являются исходный код отображаемого символа и номер знакоместа, на которое осуществляется вывод. Исходный код символа задается текущим адресом в массиве DIGIT, а номер знакоместа текущим значением байта выборки (массив IPOS) и значением счетчика знакомест INDPOS .
Код
;indpos–номер включенного катода
;Таблица знакогенератора(без децимальных точек)
digit: db C0h, F9h, A4h, B0h, 99h, 92h, 82h, F8h, 80h, 90h
; Таблица кодов для включения одного из четырех катодов
ipos : db 01h, 02h, 04h, 08h
; Инициализация параллельного интерфейса

display:

mov A, 0FFh
mov P0, A
mov A, @R1
add A, digit
mov A, @A
mov P1, A
mov A, R2
mov P0, A
rl, A
mov R2, A
inc R1

repeat:

mov A, indpos
mov R1, number
add A, R1
mov R1, digit
add R1
mov A, R1
mov R1, ipos
add R1
mov A, 01h
dec D
mov A, D
jnz repeat
mov D, 7
jmp repeat


м?
Go to the top of the page
 
+Quote Post
vvs157
сообщение Mar 14 2010, 19:51
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(misha88 @ Mar 14 2010, 22:00) *
м?
Не-а. Резисторы (10К 8 шт) одним концом на +5V, другим - на ноги порта Р0
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 14 2010, 19:52
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



Цитата(vvs157 @ Mar 15 2010, 00:51) *
Не-а. Резисторы (10К 8 шт) одним концом на +5V, другим - на ноги порта Р0

А на общую шину??
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 15 2010, 04:53
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



так??
Go to the top of the page
 
+Quote Post
ae_
сообщение Mar 15 2010, 08:30
Сообщение #24


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(misha88 @ Mar 15 2010, 12:53) *
так??

Нет. Входы инверторов нужно подключить к порту контроллера напрямую, как в сообщении №18.
А каждый из 8-ми резисторов подтяжки нужно включить одним выводом к +5В, другим - к каждому выводу порта контроллера раздельно.

Сообщение отредактировал ae_ - Mar 15 2010, 08:33
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 15 2010, 08:41
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



нА другой порт чтоли? P1?
не догоняю. вывод порта P0 занят уже входом инвертора? куда еще резистор то подключать??,
а понял..помоему..ща нарисую

Сообщение отредактировал misha88 - Mar 15 2010, 08:56
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Mar 15 2010, 09:04
Сообщение #26


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(misha88 @ Mar 15 2010, 13:41) *
не догоняю.

Прикрепленное изображение


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 15 2010, 09:07
Сообщение #27


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564





Догнал)))))))))))))))
Go to the top of the page
 
+Quote Post
misha88
сообщение Mar 15 2010, 12:31
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 23-12-07
Пользователь №: 33 564



С прогой не могу разобраться....
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01596 секунд с 7
ELECTRONIX ©2004-2016