|
Подключение 7-сегментного индикатора к msp430g24523, программирование |
|
|
|
Jun 16 2013, 15:19
|
Участник

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

|
Добрый день, я собрал небольшую вставочную схему для отладчика LaunchPad на МК msp430g2452(фото прикреплен), где содержатся 7-сегментный, 4хразрядный индикатор. 7 сегментов я вывел на второй порт (Р2), а разряды на первый порт (Р1). Проблема в том что я не могу включить этот индикатор, точнее не знаю какой код прописать. Таблицы образов написал, а как заработал этот индикатор не знаю 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 отключать. Помогите мне написать простенькую программу, хоть простой какой нибудь счетчик, чтоб я понял как взаимодействует простой индикатор без драйверов с МК. Как загнать образы в порта и выводить значения на индикаторе?
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Jun 16 2013, 17:19
|
Участник

Группа: Участник
Сообщений: 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" первой цифры (цифра включена, если база ее транзистора заземлена). Дальше поймете сами ... Как засветить сегмент А? Такой индикатор
|
|
|
|
|
Jun 16 2013, 17:51
|
Гуру
     
Группа: Свой
Сообщений: 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Вашему "китайцу" более соответствует (по распиновке) C C56-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мс устанавливать по-очереди выводы общих анодов/катодов в активное состояние, а на выводы сегментов синхронно с ними выводить число, соответствующее порядковому номеру цифры, используя таблицу преобразования.
|
|
|
|
|
Jun 16 2013, 17:57
|
Участник

Группа: Участник
Сообщений: 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? исходник программы нужен.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|