Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: ivan_fd  
Помогите сочленить 16f84 и TIC8184
QWERTY Дата: Вт, 15.09.2009, 20:24  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

Неправильно отображаются символы на LCD, не могу понять, где засада, вот фрагмент:
A var word
Dataout var portb.0
CLK var portb.1
load var portb.2

main:
A = %111111100
shiftout Dataout, CLK, 0, [A\9]
pulsout load,1
pause 200
goto main
end
Файлик с описанием индикатора прикрепляю.
Поможете разобраться?

Добавлено (15.09.2009, 20.24.50)
---------------------------------------------
Я пробовал менять режим для shiftout c 0 на 1, менял порядок битов. Результат - 0.

Прикрепления: 2952951.jpg (45.2 Kb)

Сообщение отредактировал QWERTY - Вт, 15.09.2009, 21:00
ЯНДЕКС Дата: 15.09.2009
demanik Дата: Вт, 15.09.2009, 23:52  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

попробуйте: shiftout Dataout, CLK, 1, [A\9]
судя по вашему рисунку должно быть

p.s.
выложите полную документацию


Попробуй всё и вся... может быть пол...


Сообщение отредактировал demanik - Ср, 16.09.2009, 00:05
QWERTY Дата: Ср, 16.09.2009, 15:35  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

Я пробовал менять на 1 и 0, разницы нет.

причем если во так:

Code
define OSC 4
include "modedefs.bas"
A var word
trisa = %00000000
Dataout var portb.0
CLK var portb.1
load var portb.2

main:
a=%000001100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '1
a=%111011000
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '2
a=%101011100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '3
a=%001101100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '4
a=%101110100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '5
a=%111110100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '6
a=%000011100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '7
a=%111111100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '8
a=%101111100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '9
a=%110111100
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 '0
a=%000000000
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500 'пробел
pulsout portb.7,1000
goto main
end

то цифры выводятся нормально, но код получается очень объёмным.
А если вот так:

Code
include "modedefs.bas"
define OSC 4
A var word
trisa = %00000000
Dataout var portb.0
CLK var portb.1
load var portb.2
x var byte

main:
for x=1 to 8
goto convert
shiftout Dataout,CLK,0,[A\9]
next
pulsout load,1
pause 500
goto main
end
convert:
lookup x, [%000001100, %111011000, %101011100, %001101100, %101110100, %111110100, %000011100, %111111100, %101111100, %110111100, %000000000], A

то получается полный бред.
Тоесть не выводится только один сегмент D, зато выводятся стрелочки и точки.
Прикладываю пдф :))
Это вся документация, имеющаяся у меня...

Прикрепления: TIC8148.pdf (20.0 Kb)

Сообщение отредактировал QWERTY - Ср, 16.09.2009, 15:37
demanik Дата: Ср, 16.09.2009, 17:35  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (QWERTY)
то получается полный бред

Второй пример более правильный "pulsout load,1" вы передаете в конце всего пакета, попробуйте ещще тут поменять режим передачи на 1.
И еще может у вас на рисунке неправильно указано соответствие сегментов битам. Советую сделать так: передавать у все разряды одинаковую информацию по очереди включая только один бит ( например: 000000001 потом 000000010 и так далее) и отметить какие сегменты зажигаются. У вас получится таблица соответствия сегмента биту.


Попробуй всё и вся... может быть пол...

QWERTY Дата: Ср, 16.09.2009, 20:28  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

А это мысль про сегменты.....

Добавлено (16.09.2009, 20.28.23)
---------------------------------------------
Уважаемый demanik! А не поможете с параллельной проблемой?
Вопрос в том, как в pbprpo извлечь разряд из числа для перекодировки в 7 сегментов?
Например: 1234567890 в десятичном формате, мне для отображения на 7-сигментном индикаторе нужно перекодировать каждый разряд.
Как это сделать в pbpro?
Собираю счетчик

slavauk Дата: Ср, 16.09.2009, 20:50  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (QWERTY)
А если вот так:

Quote (QWERTY)
то получается полный бред.

Может вместо
goto convert
поставить
gosud convert
а в конце процедуры convert:
не забыть
return
QWERTY Дата: Ср, 16.09.2009, 21:39  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

Попробовал для начала сменить режим с 0 на 1, как советовал demanik.
Приходится переписывать двоичный вид числа, а в остальном без изменений.
Заменил goto на gosub, осталось все как есть. sad
Прикрепления: 9056605.jpg (113.4 Kb)
QWERTY Дата: Ср, 16.09.2009, 21:45  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

А вот результат с первым вариантом, который очень много весит.
Прикрепления: 5494069.jpg (107.9 Kb)
slavauk Дата: Ср, 16.09.2009, 22:00  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

попробуйте next
поставить после
pause 500
QWERTY Дата: Ср, 16.09.2009, 22:52  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

Quote (slavauk)
попробуйте next
поставить после
pause 500

Цифры стали двигаться влево по кругу
и еще пришлось заменить for x= 1 to 8 на for x= 0 to 7, иначе цифры выводились начиная с 2

Сообщение отредактировал QWERTY - Ср, 16.09.2009, 23:03
QWERTY Дата: Ср, 16.09.2009, 23:02  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

если зажигать сегменты по очереди, устанавливая в 1 по одному биту, то табличка получается такая:
Прикрепления: 5262723.jpg (83.4 Kb)
ЯНДЕКС Дата: 16.09.2009
demanik Дата: Ср, 16.09.2009, 23:30  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (QWERTY)
осталось все как есть

попробуйте еще увеличить длительность импульса "load"


Попробуй всё и вся... может быть пол...

QWERTY Дата: Ср, 16.09.2009, 23:37  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

10 достаточно будет?
или 100 сделать7

Добавлено (16.09.2009, 23.32.21)
---------------------------------------------
сейчас попробую......

Добавлено (16.09.2009, 23.34.39)
---------------------------------------------
нет. Все так же без сегмента D

Добавлено (16.09.2009, 23.37.57)
---------------------------------------------
Спать пойду, завтра додумаю. :))

slavauk Дата: Ср, 16.09.2009, 23:38  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (QWERTY)
Цифры стали двигаться влево по кругу

знакомест только 8, а пытаемся вывести 11 знаков.
Поэтому и двигаются.

include "modedefs.bas"
define OSC 4
A var word
trisa = %00000000
Dataout var portb.0
CLK var portb.1
load var portb.2
x var byte

main:
for x=0 to 7
gosub convert
shiftout Dataout,CLK,0,[A\9]
pulsout load,1
pause 500
next
goto main

convert:
lookup x, [%000001100, %111011000, %101011100, %001101100, %101110100, %111110100, %000011100, %111111100], A
return
end

В "длинной" проге есть - pulsout portb.7,1000
Єто для чего?

QWERTY Дата: Ср, 16.09.2009, 23:40  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 73
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

просто так, чтобы видеть что цикл вывода совершился, у меня там светодиод приклеен. :))
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: