|
Управляем 7 сегментным индикатором, AVR + сдвиговый регистр + 7-индикатор |
|
|
|
Aug 13 2011, 15:35
|
Участник

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

|
Доброго времени суток! Вот тут такая задачка написать управляющую программу на ATmega8 для схемы (см схему). Вот только возникает проблема что бы допустим выставить данные на последнем индикаторе необходимо их прогнать через все сдвиговые регистры следовательно данные которые будут в этих регистрах будут потеряны, думал какой алгоритм лучше всего здесь применить, но так ни чего не придумал путнего, кроме здоровой таблицы в которой будут записаны все возможные комбинации цифр, ну это получиться очень большая таблица, чувствую что есть решение проще ну что то пока до него не дошел. Подскажите пожалуйста алгоритм по которому будет удобно зажигать нужную цифру при это сильно не трогая предыдущие.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Aug 14 2011, 03:51
|
Участник

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

|
Цитата(_Pasha @ Aug 13 2011, 19:54)  595-е обновляют выход после соотвествующего строба записи, Ваши опасения беспочвенны. Так и делается - прогон всех символов, только желательно для контроля правильности введенных данных еще добавить такой же парафазный выход с Q8' Кстати, дифф. приемопередатчики не обязательно драйверы RS-485 - в ТТЛ их некоторое количество давным-давно есть. как работает 595-ы регистр я разобрался, и если посмотреть на схему то видно что строб данных приходит на все регистры одновременно следовательно когда я выставлю нужные мне данные на последнем регистре в цепи и обновлю их то данные обосноваться и на других регистрах и там вылезет всякая ахинея, вот и я задаю вопрос как сделать программно что бы этого не было? просто единственное что пришло на ум это просчитать комбинации всех цифр которые необходимы ну это получится очень большая таблица.
|
|
|
|
|
Aug 14 2011, 13:31
|
Участник

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

|
Цитата(Сергей Борщ @ Aug 14 2011, 11:32)  Каждый ваш регистр хранит ровно байт. Вот и храните в ОЗУ 4 байта и выталкивайте их каждый раз при обновлении. Никаких таблиц тут не нужно, разве что таблица знакогенератора для одного знакоместа, которая используется для заполнения каждого из этих четырех байтов. А в качестве регистров посмотрите на TPIC6D595 - это та же пара 595+выходные транзисторы, но греется меньше чем 2804 и один корпус занимает меньше места чем два. C этим делом разобрался что необходимо выставлять на линию сразу 4 байта, а вот как быть если мне нужно изменить только одно значение маску накладывать? а то схема у меня собрана так что один байт несет информацию сразу для двух индикаторов, пока пробую написать программу в виде наложения маски на данные которые выставляю на линии, или может есть способ проще?
|
|
|
|
Сообщений в этой теме
Rom20 Управляем 7 сегментным индикатором Aug 13 2011, 15:35     Rom20 Цитата(haker_fox @ Aug 14 2011, 17:47) Ес... Aug 14 2011, 14:45      haker_fox QUOTE (Rom20 @ Aug 14 2011, 23:45) буду р... Aug 14 2011, 15:10    ae_ Цитата(Rom20 @ Aug 14 2011, 22:31) ...раз... Aug 17 2011, 09:50 ukpyr ЦитатаВот только возникает проблема что бы допусти... Aug 14 2011, 07:18 Sirko ЦитатаКстати, дифф. приемопередатчики не обязатель... Aug 18 2011, 21:20 Rom20 Спасибо все за советы, вроде со всем разобрался на... Aug 19 2011, 11:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|