Например TDA7294

Форум РадиоКот • Просмотр темы - Проект на PIC16F628
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб май 17, 2025 21:31:38

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Проект на PIC16F628
СообщениеДобавлено: Чт мар 05, 2015 17:42:28 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Здравствуйте, подскажите, пожалуйста, нужно создать схему:
1 . На вход 1 приходит один импульс на выходе образуется 1-15 импульсов (выбирается двумя кнопками + -) с частотой 1 герц
2. Есть еще одна кнопка при нажатии, на которую импульсы идут постоянно.
3. И еще один вход 2 если на нем логическая 1 то при подаче импульса на вход 1 на входе ничего не происходит.
Желательно на PIC16F628 (просто есть в наличии).
Сам ни разу не программировал, если можно, то с проектом в Proteus.
Заранее благодарен.
P.S. Извините если что-то не понятно написал, подскажите пожалуйста очень нужно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Чт мар 05, 2015 18:21:12 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7012
Откуда: Ижевск
Рейтинг сообщения: 0
Бюджет есть?

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Чт мар 05, 2015 18:31:31 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Не бюджета нет, сам помогаю бесплатно.
Просто хочется немного разобраться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Чт мар 05, 2015 20:03:14 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4558
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В чём хочется разобраться ? И что Вам подсказать ? Вопросы где ?


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Чт мар 05, 2015 20:10:37 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Хотя бы какие-то примеры, с таким принципом работы


Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Чт мар 05, 2015 20:23:53 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4558
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
С каким принципом ?
Примеров работ с кнопками, с выводами, миганием лампочек и т.д... просто уйма в интернете.
Начинайте делать, появятся конкретные вопросы - задавайте.
А пока от Вас видны только хотелки... :)


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Вт мар 10, 2015 13:22:19 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Здравствуйте, написал пробную версию программы (в proteus работает), посмотрите, может где-то что-то лишнего написал. И самое главное подскажите, пожалуйста, как переменную kol_imp сначала считать с EEprom, а потом при каждом изменении туда записать, что-то не могу понять.
Заранее благодарен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Вт мар 10, 2015 13:38:14 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Код:
#include <pic.h>
 
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

void podgot (void); //функция подгатовки микропроцессора
void imp_cet (void); //функция импульса
void plys (void); //функция увеличение количества импульсов
void minys (void); //функция уменьшение импульсов
void proka (void); //функция постоянных импульсов
void otab (void); //функция отображение количества импульсов

unsigned char kol_imp; //глобальная переменная количество импульсов
bit nac1;
bit nac2;
bit nac3;
bit nac4;

void main (void)
   {
   podgot(); //вызов функции подготовки микропроцессора
   kol_imp = 2; //установка глобальной переменной
   otab(); //отображение  количества  импульсов
      
      while (1) //бесконечный цикл
      {
      if ((RA1 == 1) & (nac1==0) & (RA5==1))
       imp_cet();
      else
      if (RA1 == 0)
      nac1=0;

      if ((RA2 == 1) & (nac2==0))
      plys();
      else
      if (RA2 == 0)
      nac2=0;

      if ((RA3 == 1) & (nac3==0))
      minys();
      else
      if (RA3 == 0)
      nac3=0;

      if ((RA4 == 1) & (RA5 ==1))
      proka ();

      if (RA5 == 0)
      RA7 = 1;
      else
      RA7 = 0;
      }
   }
////////////////////////////////////////////////////////////////////////////
void podgot (void)
{
   TRISA = 0b00011110; // направление работы ножек порта А
   TRISB = 0b00000000; // направление работы ножек порта B
   CMCON = 0x07; // отключение компараторов
   PORTA = 0b00000000; // чистим порты A
   PORTB = 0b00000000; // чистим порты B
   RBPU = 0; // подтягивающие R (1-откл, 0-вкл)
}
///////////////////////////////////////////////////////////////////////////
void imp_cet (void)
{
   unsigned int sader_r; //задержка работы светодиода
   unsigned int sader_p; //задержка не работы светодиода
   unsigned int kol_imp_tem; //количество импульсов локальная переменная чтобы не менять глобальную
   kol_imp_tem = kol_imp; //перенос количества импульсов с глобальной переменной в локальную
   nac1=1;
   while (kol_imp_tem != 0) //цикл по количеству импульсов
      {
         RA0 = 1; //включение светодиода
         sader_r = 8000; //задержка работы светодиода
         while (sader_r-->0); //цикл задержки работы светодиода
         RA0 = 0; //выключение светодиода
         sader_p = 20000; //задержка выключенного светодиода
         while (sader_p-->0); //цикл задержки выключенного светодиода
         kol_imp_tem=kol_imp_tem - 1; //уменьшение количества импульсов светодиода
      }
}
/////////////////////////////////////////////////////////////////////////////
void plys (void)
{
   nac2 = 1;
   if (kol_imp < 19)
      {
         kol_imp = kol_imp + 1;
         otab();
      }
}
////////////////////////////////////////////////////////////////////////////
void minys (void)
{
   if (kol_imp > 0)
      {
         nac3 = 1;
         kol_imp = kol_imp - 1;
         otab();
      }
}
//////////////////////////////////////////////////////////////////////////
void proka (void)
{
   unsigned int sader_r; //задержка работы светодиода
   unsigned int sader_p; //задержка не работы светодиода
   RA0 = 1; //включение светодиода
   sader_r = 8000; //задержка работы светодиода
   while (sader_r-->0); //цикл задержки работы светодиода
   RA0 = 0; //выключение светодиода
   sader_p = 20000; //задержка выключенного светодиода
   while (sader_p-->0); //цикл задержки выключенного светодиода
}
/////////////////////////////////////////////////////////////////////////
void otab (void)
{
   switch (kol_imp)
      {
         case 0: PORTB = 0b00111111; break;
         case 1:   PORTB = 0b00000110; break;
         case 2: PORTB = 0b01011011; break;
         case 3: PORTB = 0b01001111; break;
         case 4: PORTB = 0b01100110; break;
         case 5: PORTB = 0b01101101; break;
         case 6: PORTB = 0b01111101; break;
         case 7: PORTB = 0b00000111; break;
         case 8: PORTB = 0b01111111; break;
         case 9: PORTB = 0b01101111; break;
         case 10: PORTB = 0b10111111; break;
         case 11: PORTB = 0b10000110; break;
         case 12: PORTB = 0b11011011; break;
         case 13: PORTB = 0b11001111; break;
         case 14: PORTB = 0b11100110; break;
         case 15: PORTB = 0b11101101; break;
         case 16: PORTB = 0b11111101; break;
         case 17: PORTB = 0b10000111; break;
         case 18: PORTB = 0b11111111; break;
         case 19: PORTB = 0b11101111; break;
      }
}


Последний раз редактировалось Аlex Вт мар 10, 2015 13:51:52, всего редактировалось 1 раз.
Тег CODE. НЕ ЗАБЫВАЕМ ПРОТ ТЕГИ !


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Вт мар 10, 2015 13:43:43 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4558
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
http://ww1.microchip.com/downloads/en/D ... 40044G.pdf стр. №91
По-Русски по EEPROM - http://www.microchip.ru/files/d-sheets-rus/pic16_7.pdf
Ну и вот, в целом - http://www.microchip.ru/lit/?mid=1x0

Извините, но переписывать сюда, уже кем то переписанное, вряд ли кто будет. Читайте...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Вт мар 10, 2015 15:49:30 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Все прочитал, вот так получилось (в proteus работает), подскажите, я правильно все понял?
И еще подскажите, если в память надо записать большое число (больше 255) как это правильно делается?
Код:
#include <pic.h>
 
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

void podgot (void); //функция подгатовки микропроцессора
unsigned char ee_read(unsigned char adres); //функция чтения EEPROM
unsigned char ee_write(unsigned char data, unsigned char adres); //функция записи EEPROM
void imp_cet (void); //функция импульса
void plys (void); //функция увеличение количества импульсов
void minys (void); //функция уменьшение импульсов
void proka (void); //функция постоянных импульсов
void otab (void); //функция отображение количества импульсов

unsigned char kol_imp; //глобальная переменная количество импульсов
bit nac1;
bit nac2;
bit nac3;
bit nac4;

void main (void)
   {
   podgot(); //вызов функции подготовки микропроцессора
   kol_imp = ee_read(0x00);
   if ((kol_imp >19) | (kol_imp < 0))
   kol_imp =1;
   otab(); //отображение  количества  импульсов
      
      while (1) //бесконечный цикл
      {
      if ((RA1 == 1) & (nac1==0) & (RA5==1))
       imp_cet();
      else
      if (RA1 == 0)
      nac1=0;

      if ((RA2 == 1) & (nac2==0))
      plys();
      else
      if (RA2 == 0)
      nac2=0;

      if ((RA3 == 1) & (nac3==0))
      minys();
      else
      if (RA3 == 0)
      nac3=0;

      if ((RA4 == 1) & (RA5 ==1))
      proka ();

      if (RA5 == 0)
      RA7 = 1;
      else
      RA7 = 0;
      }
   }
////////////////////////////////////////////////////////////////////////////
void podgot (void)
{
   TRISA = 0b00011110; // направление работы ножек порта А
   TRISB = 0b00000000; // направление работы ножек порта B
   CMCON = 0x07; // отключение компараторов
   PORTA = 0b00000000; // чистим порты A
   PORTB = 0b00000000; // чистим порты B
   RBPU = 0; // подтягивающие R (1-откл, 0-вкл)
}
///////////////////////////////////////////////////////////////////////////
unsigned char ee_read(unsigned char adres)
{
   EEADR = adres;
   RD = 1;
   return EEDATA;
}
///////////////////////////////////////////////////////////////////////////
unsigned char ee_write(unsigned char data, unsigned char adres)
{
   GIE=0;
   EEADR=adres;
   EEDATA=data;
   WREN=1;
   EECON2=0x55;
   EECON2=0xAA;
   WR=1;
   GIE=1;
}
///////////////////////////////////////////////////////////////////////////
void imp_cet (void)
{
   unsigned int sader_r; //задержка работы светодиода
   unsigned int sader_p; //задержка не работы светодиода
   unsigned int kol_imp_tem; //количество импульсов локальная переменная чтобы не менять глобальную
   kol_imp_tem = kol_imp; //перенос количества импульсов с глобальной переменной в локальную
   nac1=1;
   while (kol_imp_tem != 0) //цикл по количеству импульсов
      {
         RA0 = 1; //включение светодиода
         sader_r = 8000; //задержка работы светодиода
         while (sader_r-->0); //цикл задержки работы светодиода
         RA0 = 0; //выключение светодиода
         sader_p = 20000; //задержка выключенного светодиода
         while (sader_p-->0); //цикл задержки выключенного светодиода
         kol_imp_tem=kol_imp_tem - 1; //уменьшение количества импульсов светодиода
      }
}
/////////////////////////////////////////////////////////////////////////////
void plys (void)
{
   nac2 = 1;
   if (kol_imp < 19)
      {
         kol_imp = kol_imp + 1;
         otab();
         ee_write(kol_imp, 0x00);
      }
}
////////////////////////////////////////////////////////////////////////////
void minys (void)
{
   if (kol_imp > 0)
      {
         nac3 = 1;
         kol_imp = kol_imp - 1;
         otab();
         ee_write(kol_imp, 0x00);
      }
}
//////////////////////////////////////////////////////////////////////////
void proka (void)
{
   unsigned int sader_r; //задержка работы светодиода
   unsigned int sader_p; //задержка не работы светодиода
   RA0 = 1; //включение светодиода
   sader_r = 8000; //задержка работы светодиода
   while (sader_r-->0); //цикл задержки работы светодиода
   RA0 = 0; //выключение светодиода
   sader_p = 20000; //задержка выключенного светодиода
   while (sader_p-->0); //цикл задержки выключенного светодиода
}
/////////////////////////////////////////////////////////////////////////
void otab (void)
{
   switch (kol_imp)
      {
         case 0: PORTB = 0b00111111; break;
         case 1:   PORTB = 0b00000110; break;
         case 2: PORTB = 0b01011011; break;
         case 3: PORTB = 0b01001111; break;
         case 4: PORTB = 0b01100110; break;
         case 5: PORTB = 0b01101101; break;
         case 6: PORTB = 0b01111101; break;
         case 7: PORTB = 0b00000111; break;
         case 8: PORTB = 0b01111111; break;
         case 9: PORTB = 0b01101111; break;
         case 10: PORTB = 0b10111111; break;
         case 11: PORTB = 0b10000110; break;
         case 12: PORTB = 0b11011011; break;
         case 13: PORTB = 0b11001111; break;
         case 14: PORTB = 0b11100110; break;
         case 15: PORTB = 0b11101101; break;
         case 16: PORTB = 0b11111101; break;
         case 17: PORTB = 0b10000111; break;
         case 18: PORTB = 0b11111111; break;
         case 19: PORTB = 0b11101111; break;
      }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Вт мар 10, 2015 17:53:09 
Родился

Зарегистрирован: Чт фев 12, 2015 18:02:29
Сообщений: 9
Рейтинг сообщения: 0
Ну хоть одним глазком кто-нибудь гляньте, все ли правильно я понял по EEPROM


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проект на PIC16F628
СообщениеДобавлено: Вт мар 10, 2015 22:56:37 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4558
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если всё записывается и читается, то правильно :)
Если нужно работать с числами, размером больше 1 байта - делите число на несколько байтов. Это же логично :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y