реклама на сайте
подробности

 
 
> Подключение 7-сегментного индикатора к msp430g24523, программирование
Cruz21
сообщение Jun 16 2013, 15:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 23-01-13
Пользователь №: 75 313



Добрый день, я собрал небольшую вставочную схему для отладчика LaunchPad на МК msp430g2452(фото прикреплен), где содержатся 7-сегментный, 4хразрядный индикатор. 7 сегментов я вывел на второй порт (Р2), а разряды на первый порт (Р1). Проблема в том что я не могу включить этот индикатор, точнее не знаю какой код прописать. Таблицы образов написал, а как заработал этот индикатор не знаю wacko.gif
static const u_char TBL_IMAGE[ ] =
0x40, // 0
0x79, // 1
0x24, // 2
0x30, // 3
0x19, // 4
0x12, // 5
0x02, // 6
0x78, // 7
0x00, // 8
0x10, // 9
static const u_char TBL_COM[ ] =
0xF8, // А1
0xF4, // А2
0xEC, // А3
0xDC, // А4
Идея такая, если взять какое нибудь число и его код в шестнадцатеричном коде и перевести в двоичный, то 0 должные зажигать LED подсветки, а 1 отключать. Помогите мне написать простенькую программу, хоть простой какой нибудь счетчик, чтоб я понял как взаимодействует простой индикатор без драйверов с МК. Как загнать образы в порта и выводить значения на индикаторе?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kovigor
сообщение Jun 16 2013, 15:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Cruz21 @ Jun 16 2013, 18:19) *
Проблема в том что я не могу включить этот индикатор, точнее не знаю какой код прописать.

Индикаторы есть разные - с общим катодом и с общим анодом (ваша схема рассчитана на общий анод). Какой у вас индикатор ? И номиналы резисторов на схеме не указаны.
Начать советую с малого - засветите сегмент "A" первой цифры (цифра включена, если база ее транзистора заземлена). Дальше поймете сами ...
Go to the top of the page
 
+Quote Post
Cruz21
сообщение Jun 16 2013, 17:19
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 23-01-13
Пользователь №: 75 313



Цитата(kovigor @ Jun 16 2013, 19:54) *
Индикаторы есть разные - с общим катодом и с общим анодом (ваша схема рассчитана на общий анод). Какой у вас индикатор ? И номиналы резисторов на схеме не указаны.
Начать советую с малого - засветите сегмент "A" первой цифры (цифра включена, если база ее транзистора заземлена). Дальше поймете сами ...

индикатор SM420364. R3...R11 С2-33-0,25-330 Ом ± 10%-А-В-В, R12...R1 С2-33-0,25-2,2 кОм ± 10%-А-В-В

Цитата(kovigor @ Jun 16 2013, 19:54) *
Индикаторы есть разные - с общим катодом и с общим анодом (ваша схема рассчитана на общий анод). Какой у вас индикатор ? И номиналы резисторов на схеме не указаны.
Начать советую с малого - засветите сегмент "A" первой цифры (цифра включена, если база ее транзистора заземлена). Дальше поймете сами ...

Как засветить сегмент А?
Такой индикатор
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 16 2013, 17:51
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Cruz21 @ Jun 16 2013, 22:19) *
индикатор SM420364.

http://www.yxztdz.com/EnProductShow.asp?ID=240
Цитата(Cruz21 @ Jun 16 2013, 22:19) *
Как засветить сегмент А?

Например, подать через токоограничивающий резистор "+" на 11 пин и "-" на 12 пин индикатора. Должен светиться сегмент A первой цифры.
Цитата(Cruz21 @ Jun 16 2013, 22:19) *
Такой индикатор

На фото изображен аналогичный, но другой по распиновке индикатор - CA56-11GWA фирмы Kingbright http://www.kingbrightusa.com/images/catalo.../ca56-11gwa.pdf
Вашему "китайцу" более соответствует (по распиновке) CC56-12SRWA http://www.kingbrightusa.com/images/catalo...CC56-12SRWA.pdf

Вообще программу для управления семисегментником нужно писать немного не так. Обозначьте сегменты символьными именами в виде макроподстановок. Тогда вся настройка под конкретный индикатор будет заключаться в редактировании макросов, а подстановка - выбором из таблицы по индексу.
Код
#define SG_A    (1U<<6)
#define SG_B    (1U<<7)
#define SG_C    (1U<<5)
#define SG_D    (1U<<4)
#define SG_E    (1U<<3)
#define SG_F    (1U<<2)
#define SG_G    (1U<<1)
#define SG_H    (1U<<0)

//таблица символов 0-9
unsigned char Symb7SegTab[]=
{ SG_A | SG_B | SG_C | SG_D | SG_E | SG_F,        // 0
  SG_B | SG_C,                                    // 1
  SG_A | SG_B | SG_G | SG_E | SG_D,               // 2
  SG_A | SG_B | SG_C | SG_D | SG_G,               // 3
  SG_F | SG_G | SG_B | SG_C,                      // 4
  SG_A | SG_F | SG_G | SG_C | SG_D,               // 5
  SG_A | SG_F | SG_E | SG_D | SG_C | SG_G,        // 6
  SG_A | SG_B | SG_C,                             // 7
  SG_A | SG_B | SG_C | SG_D | SG_E | SG_F | SG_G, // 8
  SG_A | SG_B | SG_C | SG_D | SG_F | SG_G,        // 9
};

Для управления сегментами нужно вначале проинициализировать функции пинов как выходов GPIO.
Код
P1SEL &= BIT2 | BIT3 | BIT4 | BIT5;
P1DIR |= BIT2 | BIT3 | BIT4 | BIT5;
P1OUT &= BIT2 | BIT3 | BIT4 | BIT5;
P2SEL = 0x00;
P2DIR = 0xFF;
P2OUT = 0x00;

Поскольку выводы управления анодами и катодами совмещены, то вам нужно реализовать динамическую индикацию. Т.е. в цикле с интервалом 1-5мс устанавливать по-очереди выводы общих анодов/катодов в активное состояние, а на выводы сегментов синхронно с ними выводить число, соответствующее порядковому номеру цифры, используя таблицу преобразования.
Go to the top of the page
 
+Quote Post
Cruz21
сообщение Jun 16 2013, 17:57
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 23-01-13
Пользователь №: 75 313



Цитата(rezident @ Jun 16 2013, 21:51) *
http://www.yxztdz.com/EnProductShow.asp?ID=240

Например, подать через токоограничивающий резистор "+" на 11 пин и "-" на 12 пин индикатора. Должен светиться сегмент A первой цифры.

На фото изображен аналогичный, но другой по распиновке индикатор - CA56-11GWA фирмы Kingbright http://www.kingbrightusa.com/images/catalo.../ca56-11gwa.pdf
Вашему "китайцу" более соответствует (по распиновке) CA56-12SRWA http://www.kingbrightusa.com/images/catalo...CA56-12SRWA.pdf

Вообще программу для управления семисегментником нужно писать немного не так. Обозначьте сегменты символьными именами в виде макроподстановок. Тогда вся настройка под конкретный индикатор будет заключаться в редактировании макросов, а подстановка - выбором из таблицы по индексу.
Код
#define SG_A    (1U<<6)
#define SG_B    (1U<<7)
#define SG_C    (1U<<5)
#define SG_D    (1U<<4)
#define SG_E    (1U<<3)
#define SG_F    (1U<<2)
#define SG_G    (1U<<1)
#define SG_H    (1U<<0)

//таблица символов 0-9
unsigned char Symb7SegTab[]=
{ SG_A | SG_B | SG_C | SG_D | SG_E | SG_F,        // 0
  SG_B | SG_C,                                    // 1
  SG_A | SG_B | SG_G | SG_E | SG_D,               // 2
  SG_A | SG_B | SG_C | SG_D | SG_G,               // 3
  SG_F | SG_G | SG_B | SG_C,                      // 4
  SG_A | SG_F | SG_G | SG_C | SG_D,               // 5
  SG_A | SG_F | SG_E | SG_D | SG_C | SG_G,        // 6
  SG_A | SG_B | SG_C,                             // 7
  SG_A | SG_B | SG_C | SG_D | SG_E | SG_F | SG_G, // 8
  SG_A | SG_B | SG_C | SG_D | SG_F | SG_G,        // 9
};

как мне через этот код зажечь числа 1 2 3 4?
исходник программы нужен.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Cruz21   Подключение 7-сегментного индикатора к msp430g24523   Jun 16 2013, 15:19
|- - rezident   Цитата(Cruz21 @ Jun 16 2013, 22:57) исход...   Jun 16 2013, 18:09
|- - Cruz21   Цитата(rezident @ Jun 16 2013, 22:09) Ну ...   Jun 16 2013, 18:34
|- - kovigor   Цитата(Cruz21 @ Jun 16 2013, 21:34) Спаси...   Jun 16 2013, 20:24
|- - Cruz21   Кодvoid main(void) { P2DIR = 0xFF; P2OUT =...   Jun 16 2013, 20:53
|- - kovigor   Цитата(Cruz21 @ Jun 16 2013, 23:53) Зажег...   Jun 16 2013, 21:00
|- - Cruz21   Цитата(kovigor @ Jun 17 2013, 01:00) В то...   Jun 17 2013, 05:58
- - fractcon   А не пробовали взять батарейку, резистор и два про...   Jun 16 2013, 17:29
|- - Cruz21   Цитата(fractcon @ Jun 16 2013, 21:29) А н...   Jun 16 2013, 17:40
- - Cruz21   Исправил схему   Jun 17 2013, 08:49
- - Cruz21   Кто может указанные здесь AVRсоком коде, порты пер...   Jun 17 2013, 16:11
|- - haker_fox   QUOTE (Cruz21 @ Jun 18 2013, 01:11) Кто м...   Jun 18 2013, 12:12
- - rezident   Цитата(Cruz21 @ Jun 17 2013, 13:49) Испра...   Jun 18 2013, 19:42
|- - Cruz21   Цитата(rezident @ Jun 18 2013, 23:42) Пло...   Jun 18 2013, 19:52
|- - rezident   Цитата(Cruz21 @ Jun 19 2013, 00:52) Я пер...   Jun 18 2013, 19:58
|- - Cruz21   Цитата(rezident @ Jun 18 2013, 23:58) Я ж...   Jun 18 2013, 20:06
- - Cruz21   Наконец то собрал схему правильно, программно тоже...   Jun 19 2013, 18:43
|- - kovigor   Цитата(Cruz21 @ Jun 19 2013, 21:43) Након...   Jun 19 2013, 19:58
- - Cruz21   Код#include <msp430g2452.h> #define IND1...   Jun 23 2013, 12:29
- - rezident   Рискну предложить свой "перелопаченный" ...   Jun 23 2013, 18:32
- - ARV   почитайте вот эту статью о динамической индикации ...   Jun 25 2013, 08:01


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 18:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016