На склад поступили жидко-кристаллические индикаторы и дисплеи от KSE

Обсуждение: Знакомство с микросхемой регистра сдвига 74HC595 - управление 16 светодиодами

Страница 1 из 5
Специалист
 
Аватар для Robot Rlocman
 
Регистрация: 24.11.2007
Сообщений: 2,513
Репутация: 259
250 0
14 0
 
29.04.2011 13:38 #1
Цитата:
Из этого руководства вы узнаете, как управлять 16 светодиодами используя всего 3 линии управления. Мы осуществим это путем последовательной передачи данных в сдвиговые регистры 74HC595.
Подробнее: Знакомство с микросхемой регистра сдвига 74HC595 - управление 16 светодиодами
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Новичок
 
Регистрация: 29.04.2011
Сообщений: 4
Репутация: 10
 
29.04.2011 13:38 #2
В програмке на 8 светодиодах есть ошибки... Исправьте, плиз...
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
29.04.2011 19:48 #3
А вы знаете какие именно ошибки в программе. Или пробовали компилировать и получили ошибки при компиляции?
Как таковых ошибок в программе нет, но есть один нюанс, который был задуман автором, с целью использовать данный пример на разных контроллерах. Всего навсего...
Так же один момент - не указана тактовая частота в программе, но я не считаю что это ошибка, а даже наоборот, с этим параметром можно "поиграться" и увидеть результаты и изменения. Единственное, в тексте описания не говорится о том, что мега настроена на работу от внутреннего осциллятора.

У меня скомпилировать получилось, все без ошибок (AVRStudio).
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Новичок
 
Регистрация: 29.04.2011
Сообщений: 4
Репутация: 10
 
03.05.2011 11:59 #4
Я компелировал в CodeVisionAVR. Ошибки в delay_ms это мелочи, компилятор не понимает _BV() и bit_is_set. Схему тестирую в протеусе. А как в АВРстудио писать на С++, там же вроде ассемблер...
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
03.05.2011 12:36 #5
AVRStudio + компилятор WinAVR и пишем на Си в студии.
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Новичок
 
Регистрация: 29.04.2011
Сообщений: 4
Репутация: 10
 
03.05.2011 13:10 #6
Поставил WinAVR, не понимает delay.h Какая библиотека в аврстудио для паузы?
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
03.05.2011 16:24 #7
Используем: include <avr/io.h> и include <util/delay.h>
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Новичок
 
Регистрация: 29.04.2011
Сообщений: 4
Репутация: 10
 
04.05.2011 06:43 #8
../new.c:2:26: util/delay.h: No such file or directory
текст программы в АВРСтудио 4:
#include <avr/io.h>
#include <avr/delay.h>
#define DS_PORT PORTC
#define DS_PIN 0
#define ST_CP_PORT PORTC
#define ST_CP_PIN 1
#define SH_CP_PORT PORTC
#define SH_CP_PIN 2
#define DS_low() DS_PORT&=~_BV(DS_PIN)
#define DS_high() DS_PORT|=_BV(DS_PIN)
#define ST_CP_low() ST_CP_PORT&=~_BV(ST_CP_PIN)
#define ST_CP_high() ST_CP_PORT|=_BV(ST_CP_PIN)
#define SH_CP_low() SH_CP_PORT&=~_BV(SH_CP_PIN)
#define SH_CP_high() SH_CP_PORT|=_BV(SH_CP_PIN)
//Define functions
//======================
int i;
void ioinit(void);
void output_led_state(unsigned char __led_state);
//======================
void ioinit (void)
{
DDRC = 0b00000111; //1 = output, 0 = input
PORTC = 0b00000000;
}
void output_led_state(unsigned char __led_state)
{
SH_CP_low();
ST_CP_low();
for (i=0;i<8;i++)
{
if (bit_is_set(__led_state, i))
DS_high();
else
DS_low();
SH_CP_high();
SH_CP_low();
}
ST_CP_high();
}
int main (void)
{
ioinit(); //Setup IO pins and defaults
while(1)
{
for (i=7; i>0; i--)
{
output_led_state(_BV(i));
_delay_ms(100);
}
for (i=0; i<8; i++)
{
output_led_state(_BV(i));
_delay_ms(100);
}
}
}
Запускаю в протеусе. Один огонек горит =(((
Последний раз редактировалось Crazy_Volt19; 04.05.2011 в 10:11.
Оценка
Специалист
 
Аватар для Vadzz
 
Регистрация: 12.11.2008
Адрес: Тирасполь
Сообщений: 2,172
Записей в дневнике: 22
Репутация: 418
406 86
0 0
Отправить сообщение для Vadzz с помощью ICQ
 
10.05.2011 09:17 #9
Разобрался с регистром или проблемы остались (а то был занят, поэтому не отвечал). Если чего, выложи проект в протеусе, гляну.
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота.
Оценка
Новичок
 
Регистрация: 01.05.2020
Сообщений: 7
Репутация: 10
0 2
0 0
 
01.05.2020 18:42 #10

Вопросец

void output_led_state(unsigned char __led_state)
{
SH_CP_low();
ST_CP_low();

........ т.е. на SH_CP и ST_CP "подается 0", далее по коду:

if (bit_is_set(__led_state, i))
DS_high();

.... т.е. на DS подается единица. Но как тогда эта единица сохраниться в в сдвиговом регистре ?

Для сохранения нулей условия выполняются, цитирую статью: "Когда уровень на выводе 11 (SH_CP, иногда обозначается как SRCLK) переходит из низкого в высокий, значение на выводе DS сохраняется в сдвиговом регистре, при этом данные..."
Оценка
Ответ
Страница 1 из 5
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 01:48.
Обратная связь РадиоЛоцман Вверх