Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Netkas
1 / 1 / 0
Регистрация: 13.04.2013
Сообщений: 69
1

Светофор на PIC16F84A

11.02.2016, 15:20. Просмотров 1273. Ответов 9
Метки нет (Все метки)

Получил задание по микроконтроллерам, написать программу имитации светофора на PIC16F84A на языке-С. Схему собрал с Proteus , а вот с кодом трудно. Кто может помочь, ответе пожалуйста.
0
Миниатюры
Светофор на PIC16F84A  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2016, 15:20
Ответы с готовыми решениями:

PIC16F84A
Не давно познакомился с программой Proteus, как отображать на одном 7...

PIC16F84A
Подскажите что будет легче сделать для начинающего? 1)На основе...

Выручайте PIC16F84A
Вообще ничего не понимаю в микроконтроллерах. В общем есть 2 задачи с...

PIC16F84A+DS18B20
Собственно, такая проблема. Накатал программку для работы с датчиком DS18B20 и...

LC- Metr на PIC16F84A
Вот сделал себе приборчик по материалам с этого сайта...

9
Витальич
1272 / 1182 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
11.02.2016, 16:14 2
Давайте схему до ума доведем:
1. У семисегметного индикатора пины 1,2 разъедините и соедините к МК раздельно через транзисторные ключи. Кстати семисегметник с общим катодом или анодом?
2. Остальные выводы семисегметника соедините с МК через резисторы
3. Что из себя представляет деталь с тремя выводами?
0
Netkas
1 / 1 / 0
Регистрация: 13.04.2013
Сообщений: 69
11.02.2016, 17:28  [ТС] 3
1.С общим катодом.
2.Деталь с 3 выводами как я нашел , это что-то вроде светофора . Должен гореть зеленым , желтым и красным, но как это-го добиться не знаю.Хотел сначала диоды использовать, но нашел это.

Цель работы , сделать светофор , у которого будет гореть зеленый 30с , потом включается желтый на 1с , включается красный на 20с и все это сопровождается отчетом на 7 сегментом сегменте.Как на светофоре с отчетом времени.
0
Витальич
1272 / 1182 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
11.02.2016, 17:39 4
Цитата Сообщение от Netkas Посмотреть сообщение
1.С общим катодом.
Пины 1,2 подключаем через транзисторы npn (Э - на землю, К - к индикатору Б - через резистор к МК)
Остальные через резисторы 300 ом к МК
Рисуем, выкладываем
Далее продолжаем.
0
Netkas
1 / 1 / 0
Регистрация: 13.04.2013
Сообщений: 69
11.02.2016, 18:05  [ТС] 5
Что-то вроде этого?прошу не судить строго.
0
Миниатюры
Светофор на PIC16F84A  
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,688
13.02.2016, 10:09 6
Транзисторы, резисторы - волюнтаризм Витальич'а. Протеус и так всё схавает. Единственно, что не уверен, RA4 - он с ОК. Надо учесть в схеме.
"Динамическая индикация" - знакомо?
0
Netkas
1 / 1 / 0
Регистрация: 13.04.2013
Сообщений: 69
13.02.2016, 10:58  [ТС] 7
Не очень, но схема не основное, с кодом бы разобраться. Если кто может подскажите.
0
Витальич
1272 / 1182 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
14.02.2016, 09:24 8
Цитата Сообщение от pyzhman Посмотреть сообщение
Транзисторы, резисторы - волюнтаризм Витальич'а.
в моём доме попрошу не выражаться (с)
Цитата Сообщение от Netkas Посмотреть сообщение
с кодом бы разобраться.
Кто продолжит нетленку мою?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
u8 mode_led;          // текущий цвет
u8 current_time;        // текущие время отсчета 
u8 time_data[] = {30,1,20}; // данные продолжительности работы светодиодов
u8 led_data[] = {};     // знакогенератор для LED   
 
__interrupt void Прерывание таймера()
{
 static u8 sys_tic = 50;
 
 if(sys_tic == 0)
  {
   sys_tic = 50;
   current_time--;
   if(current_time == 0)
    {
     mode_led++;
     if(mode_led == 3){mode_led = 0;}
     current_time = time_data[mode_led];
     /* Вывод цвета сфетофора */    
    }
  }else
      {
    sys_tic--;
      }
}
 
 
void main()
{
 Настройка портов ввода вывода
 Настройка прерывания таймера на 20 mS
 mode_led = 0;
 current_time = time_data[mode_led];
 while(1)
  {
 
  }
}
0
Netkas
1 / 1 / 0
Регистрация: 13.04.2013
Сообщений: 69
14.02.2016, 15:16  [ТС] 9
Вот код работы с 7 сегментным дисплеем. Только тут выводит от 0 до 99 , а нужно обратный отчет. И как сделать не знаю. Помогите собрать вместе программы и доделать их.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <xc.h>
#define _XTAL_FREQ 4E6
 
void afisare(char k, char s){
   if(s==1){
      RA0=0;
      RA1=1;
   }
   else
   {
       RA0=1;
       RA1=0;  
   }
   switch(k){
      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;
   }
}
void main(void)
 {
      TRISA=0b00001100;
      TRISB=0;
      T0CS=0;
      RA4=1;
      char k=0;
      char n=0;
   // Write your code here
   while (1){
      afisare(k/10,1);
      __delay_ms(10);
      afisare(k%10,2);
      __delay_ms(10);
  
      k++;
 
      
   }
 }
0
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,688
17.02.2016, 13:41 10
C
1
if(s
Здесь надо бы потушить оба индикатора, а зажечь нужный после установки сегментов.

Не по теме:

Походу я много пропустил - в извещении было что-то про му..ка.



Добавлено через 2 часа 52 минуты
Взялся было за нетленку. Хотел разрисовать
C
1
/* Вывод цвета сфетофора */
Но, чёрт возьми, либо стоять на голове, глядя на схему подключения светофора, либо лапками давить на клаву. Одновременно не получилось. Забил.

Не по теме:

сФетофора. хе-хе-хе :)



Добавлено через 1 минуту

Не по теме:

Будем считать, что это - мосфетофор.

0
17.02.2016, 13:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2016, 13:41

Тактирование pic16f84a
Кто-нибуть пробовал тактировать сабж от внешней RC цепи? Интересно - насколько...

PIC16F84A выручайте
Вообще ничего не понимаю в микроконтроллерах. 2 недели сижу и смогла только...

PIC16F84A - Не уходит в прерывание
PIC16F84A - Не уходит в прерывание не уходит в прерывание - проверял в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru