BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Кто нибудь мозет обьяснить понятно как динамическую индикацию сотворить?Вроде той которая в обучалки....или ссылку где об этом мона подрообно почитать....
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
Migray
Потрогал лапой паяльник
Сообщения: 305
Зарегистрирован: Чт июн 07, 2007 12:05:08
Откуда: Санкт-Петербург, Россия
Контактная информация:

Сообщение Migray »

"Проектирование цифровых устройств на однокристальных микроконтроллерах. Сташин и др."
Страница 162 и далее.
Общие принципы и алгоритмы индикации, в том числе и динамической.

В сети находится на ура, или, в крайнем случае, с моего сайта, но с него долго и не очень удобно.

Более подробно для конкретного МК - апликухи на сайте производителя.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Привет!Сделал маленький проектик "Счетчик до 10 секунд", но сделал не на динам. индикации а на обычной.на учите как доделать до динам.
Вложения
cm.rar
(326 байт) 553 скачивания
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Вот доделаный до пяти минут.Минуты отображаются свтодиодами.+ проект Proteus.Подскажите!
Вложения
pack.rar
Файд протеус+code
(11.46 КБ) 624 скачивания
Съел сам, помоги соседу. Соседу мясо вредно:)
Radan
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск
Контактная информация:

Сообщение Radan »

С. Людской. Тестер для проверки пультов дистанционного управления RC5. («Радио», 2005, № 2, c. 53)

Программа - ftp://ftp.radio.ru/pub/2005/02/rctester.zip

Там можно посмотреть динам. инд.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Победа!Числа вывелись на индикатор.Но если например я хочу чтоб от 0 до 10 числа менялись то как это сотворить?Я думаю и нечего немогу придумать.
Вложения
dinam.rar
Файл протеус, код, и нех файл
(15.5 КБ) 580 скачиваний
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Привет,
У меня в протеусе ничегоне засветилось.
Может скажу глупость,
в строке
Portb = Lookup(0 , Martix)
попробуй ввести переменную , ну типа Lookup( i , Martix), и в цикле меняй i по своему усмотрению.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

А где мне тогда задержку ставить?Ведь он будет цифры менять супер-быстро!
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Я не о задержке говорю.
В строке Lookup(0 , Martix)
0 - это обсолютный (явный) адрес элемента массива Martix
если, например, вместо явного 0, поставит переменную, например "единицы" , то примерно будет выглядеть так
единицы = 0
десятки = 1
Portb = Lookup(единицы , Martix)
Portb = Lookup(десятки , Martix)
А уже в цикле переменным единицы и десятки присваивать нужные значения или вычислять их.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

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

...............
Dim Count As Byte
Dim Count2 As Byte
Count2 = 0
Count = 0
Do
Count = Count + 1
If Count < 10 Then
Portd 0.1 = 1
Portb = Lookup(count, Martix)
Waitms 1
Portd 0.1 = 0
Portd 0.2 = 1
Count2 = Count2 + 1
Portb = Lookup(Count, Martix)
Waitms 1
Portd 0.2 = 0
Loop
Else
End                                                     
End If
Martix:
Data &B11111100 , &B01100000
Data &B11011010 , &B11110010
Data &B01100110 , &B10110110
Data &B10111110 , &B11100000
Data &B11111110 , &B11110110

Где ставить задержку ?Ведь пробегать от 0 до 10 цифры без задержки будет очень быстро.Незаметишь как пробежит.
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Ну так да, цыфры будут очень быстро пробегать.
Вопрос не в задержке основного цикла, а в задержке значения переменных.
Ну скажем, на 1 тыс(или миллион) основного цикла - 1 раз изменять значение переменных.
Введи еще одну переменную, которая считает количество основных циклов, и по переполнению изменяй значение переменных Count и Count2. Ну типа:
Если и=100........ то Count= Count+1 : Count2=Count2+1 : и=0
Цифирьку количества циклов подбери по приемлемой величине.
Или еще проще - Считай одну цифру, а уже ее разкладывай на единици и десятки
Если и=100........ то Цифра=Цифры+1 : и=0
Вопрос, А что ты хочеш выводить? Или просто разбираешся в принципе работы?
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Я просто хочу отображать цифры от 0 до 60 секунд.Как учебно, так и для дела.
Чет я не понял а как разделить задержки динамической индикации(waitms 1), и счета секунд(wait 1)?
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Не, опять же не про это.
Основной цикл ДО...ЛООП сам по себе, а вот цикл изменения переменных сам по себе.
А для времени в баском есть встроенные часы CONFIG CLOCK = soft
и там есть системная переменная _sec
вот ее и можно выводить на экран.
Т.е. _sec разделяеш на десятки и единици и выводиш в соответствующий разрад индикатора.
посмотри хелп по CONFIG CLOCK. там написано.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Прально сделал?Помойму какае-та ошибка есть.......
Вложения
бас.rar
софт
(381 байт) 462 скачивания
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Я, честно говоря не понял, что ты хочеш получить в итоге.
Вот набросал два варианта для тини - в виде простого счетчика (тини CONFIG CLOCK не поддерживает), и для меги (мега CONFIG CLOCK поддерживает).
Будут вопросы, спрашивай, вместе разберемся.
Вложения
dinam1.rar
два варианта для тини и меги
(26.93 КБ) 610 скачиваний
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Раськажи поподробней как ты там вычислял единицы , дисятки и т.д ,и т.п
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Да ничего сложного нет. Поскольку переменные типа байт, то деление на 10 дает целое число - разряд десятков, умножаем снова на 10 - получаем ровные десятки (2 разряда), потом от переменной счета отнимаем десятки - получаем единицы.
Например есть счетчик - 36
36 / 10 = 3 (целое поскольку переменная - байт)
3 * 10 = 30 (десятки без единиц)
6 = 36 - 30 (теперь только единицы)
Итого - старший разряд 3 (десятки), младший 6 (единицы).
Баском не делает более одного вычисления за один раз, каждая операция вычисления делается отдельно.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Где ошибка не сажите?Глюки какиета.
Вложения
attiny2313.rar
кот
(637 байт) 486 скачиваний
Съел сам, помоги соседу. Соседу мясо вредно:)
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

Правильно поставленная задача - шаг к успешному ее решению.
Если хочеш построить часики с динамической индикацией в баскоме, то, как по мне лучше взять мегу8, она поддерживает системные часы (это я уже говорил) и меньше мороки с подсчетом. А если всетаки на тини - то надо считать секундные интервалы - 60 сек * 60 мин * 24 часа = 86400 циклов за сутки. И обратным счетом вычислять часы (2 разряда) минуты (2 разряда) секунды (2 разряда, если нужно)
В итоге получится как минимум 4 переменных (десятки и единици часов и десятки и единици минут)
Можно попробовать с таймером.
Это так, что сразу заметил.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Вот такой вопрос:я считаю единицы минут min_ed = min_ed+1. Что мне делать когда доходит счет единиц минут до 10?Или непонятно о чем я говорю?
Съел сам, помоги соседу. Соседу мясо вредно:)
Ответить

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