7 сегментный индикатор + 74hc595 + atmega 8
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Завести массив dig[4], к котором хранить _коды_ символов.
В прерывании таймера выводить эти коды поочерёдно, и за 4 прерывания вывести все разряды, активируя в каждом из прерываний свой разряд.
Написать функцию showNumber(int num), которая будет просто выкладывать в этот массив коды нужных цифр
Написать функцию showWord(), которая будет просто выкладывать в этот массив коды нужных букв.
В прерывании таймера выводить эти коды поочерёдно, и за 4 прерывания вывести все разряды, активируя в каждом из прерываний свой разряд.
Написать функцию showNumber(int num), которая будет просто выкладывать в этот массив коды нужных цифр
Написать функцию showWord(), которая будет просто выкладывать в этот массив коды нужных букв.
- Реклама
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Присвоить числам 11,12,13,...,n буквы и выводить их. Например, косвенной адресацией.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: 7 сегментный индикатор + 74hc595 + atmega 8
#if директива условной компиляции
http://lord-n.narod.ru/download/books/w ... 0/1005.htm
можно завести переменную для флагов:
uint8_t flags;
сам флаг:
#define WORDS 1<<0
http://lord-n.narod.ru/download/books/w ... 0/1005.htm
можно завести переменную для флагов:
uint8_t flags;
сам флаг:
#define WORDS 1<<0
Код: Выделить всё
flags |= WORDS; // установить флаг
flags &= ~WORDS; // сбросить флаг
ISR(TIMER0_OVF_vect)
{
if ((flags & WORDS) == 0)
{
//выводим число
set_led_data(i);
}
else
{
//выводим в разряд
set_led_data_position(number, position_digit);
}
}- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Что бы тем не плодить, задам тут вопросик..
Допустим у меня устройство сидит на пинах SPI мк, и я хочу внутрисхемно программировать мк, что нужно сделать? где то слышал что надо поставить резисторы между пинами spi и пинами устройства, и до резисторов цеплять выводы программатора? Так ли?
Допустим у меня устройство сидит на пинах SPI мк, и я хочу внутрисхемно программировать мк, что нужно сделать? где то слышал что надо поставить резисторы между пинами spi и пинами устройства, и до резисторов цеплять выводы программатора? Так ли?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
- Реклама
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Только принимает. Я на отладке заметил что шьется нормально. Так решил уточнить на всякий случай.oleg110592 писал(а):если устройство spi только принимает данные, то мешать программированию мк не должно.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: 7 сегментный индикатор + 74hc595 + atmega 8
имхо резисторы R21-R24 не нужны. Резисторы R29-R32 зачем такой ток в базу - 2К хватит, если транзисторы типа BC857(надо посчитать). Резисторы R25-R32 не на землю, а на V 12. Если V 12 это 12В, то выходы 74HC595 не погорят ли, надо бы еще npn транзисторов дополнительных поставить.
http://radioparty.ru/prog-avr/program-c ... nt-npn-pnp
http://radioparty.ru/prog-avr/program-c ... nt-npn-pnp
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Я же написал что еще не подбирал выше про резисторы..oleg110592 писал(а): Резисторы R29-R32 зачем такой ток в базу - 2К хватит,
то выходы 74HC595 не погорят ли, надо бы еще npn транзисторов дополнительных поставить.
Про транзисторы вот это не подумал к U2 поставить, исправлю. Она же 5 в, а я туда 24 в.
учту замечания.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Добрый день в соседней теме я сделал вариант подключения 7 сегментного LED + LCD 1602 либо 1604 любой с контроллером HD4470 к одной шине на базе регистров 595.
Притом вы можете к атмеге 8 подключить к хардверному SPI либо к любым другим ножкам и отправлять данные обычным подергиванием ног МК. Но в любом случае за вас все сделает библиотека. Библиотеки можете скачать ниже. На данном этапе готовы библиотеки для работы в режиме SPI и частично в софтерном режиме.
Также я предвидел разное подключение ног семисегментника к регистрам, но подключение как на схеме самое оптимальное поскольку проще всего трассировать плату иначе нужно слишком много перемычек.

Притом вы можете к атмеге 8 подключить к хардверному SPI либо к любым другим ножкам и отправлять данные обычным подергиванием ног МК. Но в любом случае за вас все сделает библиотека. Библиотеки можете скачать ниже. На данном этапе готовы библиотеки для работы в режиме SPI и частично в софтерном режиме.
Также я предвидел разное подключение ног семисегментника к регистрам, но подключение как на схеме самое оптимальное поскольку проще всего трассировать плату иначе нужно слишком много перемычек.
Спойлер
Спойлер
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
У меня при создании схемы стояла цель минимизировать количество используемых ножек мк для индикации, у меня вышло всего 3 пина под это дело, что меня вполне устроило. Плюс индикатор у меня будет питаться от 9 и выше вольт, примерно до 12. То есть ваши схемы не подойдут.amd9800 писал(а):Добрый день в соседней теме я сделал вариант подключения 7 сегментного LED + LCD 1602 либо 1604 любой с контроллером HD4470 к одной шине
Re: 7 сегментный индикатор + 74hc595 + atmega 8
так в моих схемах и есть 3 пин
2 пина это земля и питание
2 пина это земля и питание
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Уважаемый oleg110592, не подскажете как установить avr-gcc компилятор в windows 7? В линуксе то все просто... и как настроить его с саблаймом или с атомом например? Не люблю тяжелые среды типа авр студио.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Я когда-то свой проект (делался под Linux) пробовал ради интереса скомпилировать в Windows (в VirtualBox). Записал скринкаст, если интересно.
Правда, в качестве IDE я и там выбрал QtCreator, но, по большому счёту, не важно, откуда дёргать make / make flash.
Правда, в качестве IDE я и там выбрал QtCreator, но, по большому счёту, не важно, откуда дёргать make / make flash.
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Установил avr-gcc. Вывод в cmd.exe такой:

avr gcc установился нормально
Makefile такой, как скидывал oleg110592 в теме этой. Под линем он работал.
Добавил скрипт в саблайм
в саблайме делаю make, получаю такое:
то есть не чего не происходит.. где зарыта собакен? 
урраа) собралось, надо было перезагрузить кампутер

avr gcc установился нормально
Makefile такой, как скидывал oleg110592 в теме этой. Под линем он работал.
Спойлер
Код: Выделить всё
# Задаем имя проекта, в результате получатся файлы test.hex test.bin
TARG=test
CC = avr-gcc
OBJCOPY = avr-objcopy
# Задаем из каких файлов собирать проект, можно указать несколько файлов
SRCS= rele.c indication.c
OBJS = $(SRCS:.c=.o)
# Задаем для какого микроконтроллера будем компилировать (atmega8)
MCU=atmega8
# Флаги компилятора, при помощи F_CPU определяем частоту на которой будет работать контроллер,
CFLAGS = -mmcu=$(MCU) -Wall -g -Os -Werror -lm -mcall-prologues -DF_CPU=11059200
LDFLAGS = -mmcu=$(MCU) -Wall -g -Os -Werror
all: $(TARG)
$(TARG): $(OBJS)
$(CC) $(LDFLAGS) -o $@.elf $(OBJS) -lm
$(OBJCOPY) -O binary -R .eeprom -R .nwram $@.elf $@.bin
$(OBJCOPY) -O ihex -R .eeprom -R .nwram $@.elf $@.hex
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -f *.elf *.bin *.hex $(OBJS) *.mapКод: Выделить всё
{
"shell_cmd": "make"
}
Код: Выделить всё
[Finished in 0.0s with exit code 1]
[shell_cmd: make]
[dir: C:\work\rele]
[path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\CooCox\CoIDE\gcc\bin;C:\avr-gcc\bin;C:\Users\alexander\AppData\Local\atom\bin]
урраа) собралось, надо было перезагрузить кампутер
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: 7 сегментный индикатор + 74hc595 + atmega 8
тоже просто:alex38779 писал(а):Уважаемый oleg110592, не подскажете как установить avr-gcc компилятор в windows 7?
* скачать GNU toolchain from ARM тут https://launchpad.net/gcc-arm-embedded (я скачивал zip файл)
* распаковать в папку (имхо папка должна быть в корне) - у меня на диске D:\GCCARM
* скачать Sublime Text (у меня версия 2), немного подшаманить примерно как тут: http://we.easyelectronics.ru/CADSoft/su ... r-gcc.html
только я настроил кнопку F5 для очистки проекта, ctrl+B и F7 остались для сборки по умолчанию:
Спойлер
Код: Выделить всё
[
{ "keys": ["f5"], "command": "run_multiple_commands", "args": {"commands": [
{"command": "save", "context": "window" },
{"command": "exec", "args": {
"cmd": "c:/Winavr/utils/bin/make clean",
"file_regex": "(.*\\w+\\.[(c|cpp|h|hpp)]):(\\d+):(\\d+:|)\\s.*", "encoding": "cp1251"
}, "context": "window" }
]}}
]* сделать New Build System - меню Tools-> Build System (у меня называется GCC ARM):
Спойлер
Код: Выделить всё
{
"cmd": ["c:/Winavr/utils/bin/make"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"shell": true,
"path": "D:\\GCCARM\\bin\\"
}upd: ошибся - надо было для GCC AVR - в принципе все то же самое, только toolchain отсюда например: http://sourceforge.net/projects/mobilec ... 8Win32%29/
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
Как повысить быстродействие кода. Использовать указатели и ссылки?
Как авр относится к обработке многомерных массивов? Просто хочу хранить настройки в массиве, примерно 5 на 10. Обращаться к массиву через указатели. Хранить в eeprom, перезаписывать только по изменению.
Как авр относится к обработке многомерных массивов? Просто хочу хранить настройки в массиве, примерно 5 на 10. Обращаться к массиву через указатели. Хранить в eeprom, перезаписывать только по изменению.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: 7 сегментный индикатор + 74hc595 + atmega 8
однозначных рекомендаций нет, слишком специфичная тема. самое простое - использовать оптимизацию -O3. указатели не всегда дают выигрыш в скорости.alex38779 писал(а):Как повысить быстродействие кода. Использовать указатели и ссылки?
ему по барабану, массивы обрабатываются компилятором - ему, в принципе, тоже все равно.alex38779 писал(а):Как авр относится к обработке многомерных массивов?
не логично. массив подразумевает индексное обращение, в чем смысл отдельного указателя?alex38779 писал(а):Обращаться к массиву через указатели.
логично. напрямую с EEPROM даже с указателями работать не получится, придется повозиться с функциями чтения-записиalex38779 писал(а):Хранить в eeprom, перезаписывать только по изменению.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


