Работа с 74HC595+ LED матрица 8*8

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение Аlex »

SILF писал(а):пример на си, пишу на асм
Разницы, также как и для МК, нет никакой. Главное - знать как управлять регистром.
SILF писал(а):как включить светодиоды через 74hc595 знаю
Ну и всё, этого достаточно. Тут у Вас те же 8 светодиодов, только 8 раз. Зажигайте их по-очереди и всё.
Реклама
SILF
Родился
Сообщения: 16
Зарегистрирован: Вт апр 05, 2016 18:05:00

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение SILF »

допустим колоны имеют 1
тогда задвигаю в 595к movlw b'11111111'
и один раз и после 8 раз гружу строки
друг за другом или всеж надо как вы ранее писали
строка+колонка
строка+колонка
Реклама
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение botchin »

Изображение
Посмотрите опять на ету картинку. В "один раз" въ можете засветить одну колону. Подсвечивая их одну за другую въ получите ету картинку. Если в 595к все 1 (11111111) то (скорее всего - в зависимости от индикатора) ни одна колона не засветится
Если в 595К 0111111 - левая колона (1-ая)
10111111 - вторая
11011111 - 3-я
и т.д. Т.е. в 595К есть только сдвиг вправо активного сигнала - на каждом байте один сдвиг

У вас два подхода - с counter до 16 тогда должнъ передавать и информацию о 595К
Ету:
bbbbbbbb01111111
bbbbbbbb10111111
bbbbbbbb11011111
bbbbbbbb11101111
bbbbbbbb11110111
bbbbbbbb11111011
bbbbbbbb11111101
bbbbbbbb11111110


и counter до 8 (только для въводимой информацией) тогда надо делать сдвиг вправо 595К.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15572
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение BOB51 »

БЫРР.... :shock:
Это что "поштучно" точки поджигать собрались? (Типа растровой попиксельной развертки).
Иначе чей-то "задымится"...
Стандартный ток светика миллиампер 20... А в группе их может включится одновременно 8 - итог 0,02*8=0,16 ампера на вывод регистра. Хоша б ULN2803 для нормальной работы прицепить. :roll:
Реклама
Эиком - электронные компоненты и радиодетали
SILF
Родился
Сообщения: 16
Зарегистрирован: Вт апр 05, 2016 18:05:00

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение SILF »

пытаюсь понять как отрисовывать на лед маьрице
через 595 сдвиговый.. он не дорогой
не получается капец
у меня матрица с общим +
понял что надо строки включать и гасить их быстро
Реклама
SILF
Родился
Сообщения: 16
Зарегистрирован: Вт апр 05, 2016 18:05:00

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение SILF »

:dont_know:
задвигаю правильно ж?
подскажи в начале проги тогда
как указать поочередность загрузки
строк
тоесть sdvig в первом сообщении это процедура


main

movlw.0
call table
movwf led1
call sdvig-- задвину одну ток строку
goto main
table addwr pc,f
retlw 'тут строка'
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение otest »

Давай весь текст программы. Не понятно ,что тебе не понятно.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение Аlex »

SILF, Вы с таким стилем задавания вопросов, никогда нормальных ответов не услышите :facepalm:
Реально не понятно, что Вы от нас хотите услышать и в чём у Вас проблема. Какие то отрывки мыслей вслух... :dont_know:
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение botchin »

У меня впечатление что ТС не можеть понять принцип динамической индикации.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15572
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение BOB51 »

Или не может сформулировать вопрос на русском...
Одна часть задачи - обеспечение работы самого дисплея, другая - предобработка данных для отображения.
Если взят pic16f628 то вобщем - то достаточно одного регистра по одной из координат и 8 выводов собственно с МК по другой. Частота развертки примерно 62 герца. Собстенно ежли не добавлять всяческих ШИМ-усложнений... Там и счетчик-дешифратора дополнительно 8-битному порту может хватить. Без усяких регистеров...
:roll:
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение botchin »

Если решил на регистрах - да будет. Я сам делал на HC4094 для управления LCD и обслуживание клавиатуръ на том же 628А. Получилось как хотел. При занятъх 5 ножек 628 управляю LCD + 8 кнопок. Мог бъ сделать и на 4 ножек но ето стоило бъ еще одну 4094 или переход на управление LCD по 4-х битной схеме.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
SILF
Родился
Сообщения: 16
Зарегистрирован: Вт апр 05, 2016 18:05:00

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение SILF »

простите за это.
вот код полностью

LIST p=16F628a
__CONFIG 0x3F6B

;;;;Конфигурируем регистры;;;;;
PORTA equ 05h
TRISA equ 05h
PORTB equ 06h;добавим регистры порта В для кнопок
TRISB equ 06h;
STATUS equ 03h
CMCON equ 1Fh; компаратор
PC equ 02h; Счетчик PCL

stroka equ 23h;регистр в который занесем значение для вывода в индикатор0
stolb equ 24h;регистр в который занесем значение для вывода в индикатор0
Count equ 25h;счетчик для IND0
Count1 equ 26h;счетчик для IND0
W equ 0;результат пихаем в аккумулятор
F equ 1;результат идет в регистр
C equ 0
RP0 equ 5;присваиваем RP0=5

org 0;программа стартует отсюда

#DEFINE clock PORTA,0;такт
#DEFINE bite PORTA,1;передача данных
#DEFINE switch PORTA,2; защелка
#DEFINE knopka PORTA,3;кнопка
;ИНИЦИАЛИЗАЦИЯ

bcf STATUS,RP0; выбрали первый банк памяти
movlw 0x07
movwf CMCON; все цифровые каналы вход выход
bsf STATUS,RP0
movlw 0x00
movwf TRISA;значение для инициализации защелок
movlw 0x00
movwf TRISB
movlw b'11111111'
movwf PORTB
bsf STATUS,0
bcf STATUS,RP0

start
movlw .8;счетчик сдвига битов
movwf Count
movlw .8;счетчик сдвига битов
movwf Count1
call shift2
goto start

shift2;U3 в протеусе
movlw b'11100000'
movwf stroka
bsf switch
;bcf switch
m1 bcf clock
bsf bite
btfss stroka,0
bcf bite
bsf clock;тактовый импульс
rrf stroka,F
decfsz Count,1;уменьшаем на еденицу, достигнув нуля прыгаем на goto serial,
goto m1;пока не достигнем 0
btfsc Count,0
goto shift1

shift1 ;U2 в протеусе
movlw b'10000000'
movwf stolb
bsf switch
bcf switch
m2 bcf clock
bsf bite
btfss stolb,0
bcf bite
bsf clock;тактовый импульс
rrf stolb,F
decfsz Count1,1;уменьшаем на еденицу, достигнув нуля прыгаем на goto serial,
goto m2;пока не достигнем 0
btfsc Count1,0
goto shift2

end


как я понял теперь добавляю в код таблицы из 8ми вариантов каждая типа как снизу показал?

table addwf PC,F
retlw b'11111100';0
retlw b'01100000';1
retlw b'11011010';2
retlw b'11110010';3
retlw b'01100110';4
retlw b'10110110';5
retlw b'10111110';6
retlw b'11100000';7
retlw b'11111110';8
retlw b'11110110';9
только как мне играть подгрузкой вариантов из этой таблицы вот что не пойму
Вложения
matrix.jpg
(132.68 КБ) 461 скачивание
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15572
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение BOB51 »

Уффф...
имеем индикатор 8 позиций по 8 точек;
имеем буфер отображения из 8 байт;
сооружаем схемку, обеспечивающую физический вывод данных из буфера отображения в индикатор;
пишем программку, обеспечивающую обслуживание схемки.
запускаем сей девайс в режиме непрерывной регенерации дисплея как подпрограммки, работающей по маркеру от таймера.
итого экран готов.
Теперь займемся собственно самим изображением.
Для отсутствия некорректных проблесков смену содержимого буфера отображения необходимо обеспечить в конце цикла развертки дисплея (флажковый семафор готовности/подтверждения ибо прцесс регенерации и подготовки данных асинхронны).
Собственно подготовкой новых данных занимается основная программа. Когда данные в буфере предподготовки готовы выставляется флаг и основная программа приостанавливается (а может и без такового) до обнаружения статуса "данные перенесены".
Прожка обработки дисплея узрев флажок готовности новой порции для отображения всего лишь копирует содержимое из буфера предподготовки в буфер отображения и затем сбрасывает флаг запроса. Далее все крутится само-по-себе до готовности новой порции данных.
Побочным продуктом развертки при динамической индикации является обработчик клавиатуры, встраиваемый в подпрограмму регенерации.
А далее делаем деталировку каждого процесса...
:wink:
SILF
Родился
Сообщения: 16
Зарегистрирован: Вт апр 05, 2016 18:05:00

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение SILF »

:facepalm:
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение botchin »

Код: Выделить всё

 LIST p=16F628a
 __CONFIG 0x3F6B
 #include  P16F628A.inc 
;;;;Конфигурируем регистры;;;;;
PORTA equ 05h
;TRISA equ 05h
PORTB equ 06h;добавим регистры порта В для кнопок
;TRISB equ 06h;
STATUS equ 03h
CMCON equ 1Fh; компаратор
PC equ 02h; Счетчик PCL 

stroka equ 23h;регистр в который занесем значение для вывода в индикатор0
stolb equ 24h;регистр в который занесем значение для вывода в индикатор0
Count equ 25h;счетчик для IND0
Count1 equ 26h;счетчик для IND0 
W equ 0;результат пихаем в аккумулятор
F equ 1;результат идет в регистр
C equ 0
RP0 equ 5;присваиваем RP0=5 

	CBLOCK 0x60
	col 	; здесь будем сохранять колону - бегущая ноль
	row ; что будем въводить
	c1,c2   ;счетчик
	tmp_var
	endc

#DEFINE clock PORTA,0;такт
#DEFINE bite PORTA,1;передача данных 
#DEFINE switch PORTA,2; защелка
#DEFINE knopka PORTA,3;кнопка

 org 0;программа стартует отсюда
	goto	main
	nop
	nop
	nop
	goto	main
	nop

;ИНИЦИАЛИЗАЦИЯ
main
	bcf STATUS,RP0; выбрали первый банк памяти
	movlw 0x07
 	movwf CMCON; все цифровые каналы вход выход
	bsf STATUS,RP0
 	movlw 0x00
 	movwf TRISA;значение для инициализации защелок
	movlw 0x00
 	movwf TRISB
 	movlw b'11111111'
 	movwf PORTB
 	bsf STATUS,0
 	bcf STATUS,RP0

tt
	call		val1
	nop
	nop
	goto	tt
	
start
 	movlw .8;счетчик сдвига битов
	movwf Count
	 movlw .8;счетчик сдвига битов
	movwf Count1
	call shift2
	goto start

shift2;U3 в протеусе
	movlw b'11100000'
 	movwf stroka
 	bsf switch
 ;bcf switch
m1 	bcf clock
 	bsf bite
 	btfss stroka,0
 	bcf bite
 	bsf clock;тактовый импульс
	rrf stroka,F
 	decfsz Count,1;уменьшаем на еденицу, достигнув нуля прыгаем на goto serial,
	goto m1;пока не достигнем 0
 	btfsc Count,0
	goto shift1

shift1 ;U2 в протеусе
	movlw b'10000000'
 	movwf stolb
 	bsf switch
 	bcf switch
m2 bcf clock
 	bsf bite
 	btfss stolb,0
 	bcf bite
 	bsf clock;тактовый импульс
	rrf stolb,F
 	decfsz Count1,1;уменьшаем на еденицу, достигнув нуля прыгаем на goto serial,
	goto m2;пока не достигнем 0
 	btfsc Count1,0
	goto shift2

val1
	movlw b'01111111'	;будем вращат ету 0 по байту
;если необходимо можно поставить и 
;	movlw b'10000000'		;бегущая единица
	bcf		switch	;для всякии случай
	bcf		clock
	movwf col
	clrf c1	;начнем с нуля
	decf	c1,f	
loop_char
	movf	col,w
	call		to_595_8		;въсилаен колону to 595
	bsf		STATUS,C
	rrf		col,f		;next column
	incf		c1,f		;следующии 
	movf	c1,w		;для табле
	call		table		;берем инфо с table
	btfsc	STATUS , Z
	goto	end_val1		;если table return 0 ->exit
	call		to_595_8		;въсилаем дата к 595
	bsf		switch
	nop
	nop
	nop
	bcf		switch	
	goto	loop_char
end_val1
	return	

to_595_8
	movwf	tmp_var	;сохранем что будемм въводить
	movlw	0x08		; 8 такта
	movwf	c2
loop_to_595
	bcf 	bite			; на вход D 595
	rrf 	tmp_var,F	;получаем следующего бита
	btfsc 	STATUS,C ;если он 0 мъ его уже установили 
	bsf 	bite			; данни за регистъра на вход D 595
;бит не ноль - здесь устанавливаем его в 1
	nop			;чтоб вход D установился
	bsf 	clock			;Такт
	nop
	nop
	nop
	bcf 	clock			; и маленкая задержка для такта
	decfsz 	c2,f
	goto 	loop_to_595	;имеем еще для въвода
	return

table addwf PC,F
 retlw b'11111100';0
 retlw b'01100000';1
 retlw b'11011010';2
 retlw b'11110010';3
 retlw b'01100110';4
 retlw b'10110110';5
 retlw b'10111110';6
 retlw b'11100000';7
 retlw b'00000000'; null - чтобь можно закончит въвода.
 retlw b'11111110';8
 retlw b'11110110';9

 end

Пътался не трогать твоего кода. Попробуй. Две новъе функции Val1 и to_595_8
PS:Маленко зигрался. Переставил условие въхода в Table на 8-ое место. Иначе будут "бегущие огни"
SILF не забъвай про умощнение въхода 595.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Работа с 74HC595+ LED матрица 8*8

Сообщение botchin »

А написать разобрался или не успел ....
Я убираю кода с компа.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Ответить

Вернуться в «PIC»