Часы с термометром дом-улица и таймером Р.№5 2010г.

В этом форуме обсуждаются статьи напечатанные в журнале "Радио"

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Pavel » 18 июл 2011, 12:05

Так, для точности определения индикаторов FYS-15011 нужно указывать в строке поиска Google следующие:
1) FYS-15011BX - выдается ссылка с описанием индикатора, который используете вы Владимыч.
2) FYS-15011BXX - выдается ссылка с описанием индикатора с четырьмя светодиодами в одном сегменте.

Я смотрел сначала про FYS-15011BXX, и написал в ответе (вчера) вам про напряжения и количество светодиодов в сегменте, исходя и данного описания. Затем уже (сегодня) посмотрел описание по FYS-15011BX и написал в предыдущем сообщении именно про ваш индикатор.
Pavel
 
Сообщения: 71
Зарегистрирован: 22 мар 2010, 21:46

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Владимыч » 18 июл 2011, 14:09

Ну это понятно.Другой индикатор.А поиск сейчас посмотрим.Ну вот все нашел.Спасибо!
Владимыч
 
Сообщения: 50
Зарегистрирован: 15 июл 2011, 09:19

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Владимыч » 22 июл 2011, 08:24

Кстати при отрицательной температуре знак - будет показывать?
Владимыч
 
Сообщения: 50
Зарегистрирован: 15 июл 2011, 09:19

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Pavel » 22 июл 2011, 09:24

Да будет показывать. Либо первый разряд (температура больше 10), либо второй разряд (температура меньше 10 но больше 0), при 0 градусов знак не будет отображаться, даже если на улице -0,5 градусов по шкале Цельсия.
Pavel
 
Сообщения: 71
Зарегистрирован: 22 мар 2010, 21:46

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Владимыч » 22 июл 2011, 14:18

Хорошо!В таком случае хорошо бы при индикации температуры в помещении в первом разряде зажигать три нижних сегмента в виде буквы < п >. А точку индикации на улице убрать.А впрочем эту точку можно вообще отключить и без программы.Кто-нибудь подскажет как изменить программу для буковки <п>?
Владимыч
 
Сообщения: 50
Зарегистрирован: 15 июл 2011, 09:19

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Pavel » 22 июл 2011, 19:30

if (a>10 && a<16) //Отображение температуры дома
{
temp();
if (dtd==0x28)
{
if (td>9 && td<41) e8=0; else e8=1;
d5=0xc6;//C
d4=0x9c;//Знак градуса
if (e8==0)
{j=td%10;d3=cif(j); j=(td/10)%10;d2=cif(j);}
else
{d3=0xbf;d2=0xbf;} d1=0xab;} //Будет отображаться n в 1 рязряде (d1=0xab)
else
{d5=0xc6;d4=0x9c;d3=0xbf;d2=0xbf;d1=0xab;} //Будет отображаться n в 1 разряде (d1=0xab)
}

Поменяйте Владимыч в программе значение d1 и будет вам буква n.
Pavel
 
Сообщения: 71
Зарегистрирован: 22 мар 2010, 21:46

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Владимыч » 23 июл 2011, 11:36

Большое спасибо Павел!Будем пробовать.Хочу использовать PROTEUS.Как вы думаете можно попробовать? А компилятор какой?
Владимыч
 
Сообщения: 50
Зарегистрирован: 15 июл 2011, 09:19

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Pavel » 23 июл 2011, 16:16

Я, Владимыч, не знаю что такое PROTEUS, поэтому попробуйте, может что получится.
Программа написана на компиляторе mikroC PRO for PIC. Сайт www.microe.com.
Pavel
 
Сообщения: 71
Зарегистрирован: 22 мар 2010, 21:46

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Владимыч » 24 июл 2011, 08:37

У меня к тебе еще несколько вопросов.1-какие изменения нужно внести в программу при замене кварца на 8Мгц или 7.3728Мгц? 2- резервное питание от литиевого элемента CR2032 220мА.ч,думаю попробовать как в часах РАДИО номер 6,2011.Там 3 вольта подается на вывод MCLR PIC. 3-изменение программы МК,чтобы он на аноды выдавал минус. 4- изменение программы под индикаторы с общим катодом. А PROTEUS это моделирование устройств на МК.
Владимыч
 
Сообщения: 50
Зарегистрирован: 15 июл 2011, 09:19

Re: Часы с термометром дом-улица и таймером Р.№5 2010г.

Сообщение Pavel » 24 июл 2011, 19:25

Здравствуйте Владимыч. Ваши вопросы растут и растут.
Итак, по порядку.
Кварц.
В программе стоит фьюз HC. То есть частота кварцевого резонатора может быть от 4 МГц до 20 МГц. И с каждым из них будет работать программа. Но длительность секунды будет разной. Она считается так (например, для кварца 8,192 МГц – так как в устройстве применен именно такой). 8192000/4 – так как каждая команда в PIC16F873A выполняется за 4 такта. Затем полученное число 2048000/32 – так как предделитель таймера 0 равен 32 (первые 3 бита регистра option_reg равны 100). И того мы получаем 64000. Затем ставим начальное число отсчета таймера 0 tmr0=192. То есть счет будет вестись до 64 и затем таймер будет переполнятся и вызывать процедуру прерывания (регистр intcon=0xa0), а та в свою очередь будет прибавлять миллисекунду на единицу каждое прерывание. То есть 64000/64 и получаем в идеале 1000. Но так как в процедуре прерывания также происходит вывод значений на индикатор, то происходит задержка примерно в 8 миллисекунд. Потому в программе и стоит значение ml 992. Исходя из этого, считайте сами значение ml для конкретной частоты кварцевого резонатора, учитывая потери от вывода информации на индикатор.
Резервное питание.
В схеме, ссылку на которую вы привели, используется что-то вроде спящего режима. То есть пока на определенный вывод МК подается напряжение 5 Вл, он выводит информацию на дисплей. Как только напряжение пропало (там для точности стоят полупроводниковые диоды Шотки – малая потеря напряжения, плюс через резистор, большего номинала, на порт подается минус, чтобы совсем питание не пропадало), то он просто перестает выводить информацию, отключая индикатор, и скорее всего так же отключает все порты, кроме того который считывает напряжение (так же для экономии энергии). Но при этом МК не переходит в настоящий спящий режим. 3 Вл подается на все питание контроллера, не только MCLR. Если хотите применить данный способ, задействуйте порт RC2 для считывания уровня напряжения, но только так чтобы 3 Вл не попадало на него. Можно сделать такую же развязку через диоды как в статье, на которую вы указали ссылку.
Минус на аноды.
if (a1==2) {portb=0xff; portc=0x7f; portb=d1;} // 1 цифра 0x7f – инверсия 0x80

if (a1==4) {portb=0xff; portc=0xbf; portb=d2;} // 2 цифра 0xbf – инверсия 0x40

if (a1==6) {portb=0xff; portc=0xdf; portb=d3;} // 3 цифра 0xdf – инверсия 0x20

if (a1==8) {portb=0xff; portc=0xef; portb=d4;} // 4 цифра 0xef– инверсия 0x10

if (a1==10) {portb=0xff; portc=0xfe; portb=d5; a1=0;} // 5 цифра 0xfe – инверсия 0x01
Общий катод.
Здесь кусочек из программы писать не буду, так как он большой. Нужно сделать следующие – инвертировать сигналы на сегменты, то есть посмотрите программу и инвертируйте все значения d1, d2, d3, d4, d5 (например, portb=~d1;), в том числе и в файле segment.c. Также сделайте в процедуре прерывания portb=0x00, а не portb=0xff.

Ну и все на этом. Всего хорошего.
Pavel
 
Сообщения: 71
Зарегистрирован: 22 мар 2010, 21:46

Пред.След.

Вернуться в Журнал "РАДИО"

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron