Jump to content
Дмитрий Мамедиев

цифровой 7-сегментный жк дисплей

Recommended Posts

Здравствуйте всем. нужна помощь по подключению вот такого дисплея к микроконтроллеру. Они стоят в напольных весах и у меня их теперь девять штук, выбросить жалко а мест для применения запланировано много. там где стоит клякса его можно отрезать и использовать отдельно. У китайцев этот дисплей работает на драйвере HT1621, и судя по всему его зовут TB233. На сам дисплей даташита не нашел. 

http://www.avislab.com/blog/7segment_lcd/ вот здесь похожий подключают к мк.

http://narodstream.ru/avr-urok-28-spi-drajver-led-max7219/ здесь подключают лед дисплей. На сколько я понял из урока дш на дисплей нам не нужен, а нужен на сам драйвер, который кстати лежит в рар архиве который прислал китаец. Я правильно понимаю, что написание нашей библиотеки будет аналогичным?

Безымянный.jpg

20180213_164113.jpg

20180213_164139.jpg

20180217_140313.jpg

TB233_5 DIGIT 7SEG LCD_NEW.rar

Share this post


Link to post
Share on other sites

Для начала нужно определиться, что за микроконтроллер будет: AVR, PIC, ...

Ведь можно выбрать МК со встроенным драйвером LCD, например: PIC16F19155

Share this post


Link to post
Share on other sites

Высококачественные конденсаторы Panasonic для надежности вашей электроники!

Электролитические алюминиевые конденсаторы Panasonic отличаются повышенной надежностью, длительным сроком службы, низким импедансом и выдерживают большой ток пульсаций, в то время как семейства полимерных конденсаторов Panasonic SP-CAP, POSCAP, OS-CON и HYBRID характеризуют сверхнизкий ESR и увеличенная емкость, работа при высоких напряжениях и в расширенном температурном диапазоне. Приобретая продукцию Panasonic, вы гарантированно получаете самое передовое решение для ваших задач. Для облегчения вашего выбора, мы подготовили подборку полезных материалов.

Читать статьи

                     

Вебинар "Как создать BLE-устройство на базе новейшего беспроводного микроконтроллера STM32WB55"

27 ноября 2019 года компания КОМПЭЛ приглашает разработчиков, технических руководителей и энтузиастов беспроводной связи на вебинар, посвященный новинке 2019 года – мультипротокольному беспроводному микроконтроллеру STM32WB55, который позволяет создавать устройства на базе стандартов BLE 5.0; BLE Mesh; 802.15.4/ZigBee и Thread. На вебинаре мы покажем, как с помощью привычных инструментов STM32Cube и STM32CubeMX можно создать свое первое, надежно работающее BLE-приложение.

Зарегистрироваться на вебинар

Я что-то не пойму, в чем проблема подключения. Если в наличии только стекляшки без платы адаптера, то запускается он как любой семисегментник. В нем нет мозгов. Подаешь напряжение на нужный общий вывод знакоместа и на требуемые сегменты. И так по кругу в динамике. В чем трудность? На плате даже распиновка видна. Общие контакты знакомест соединены параллельно у всех индикаторов, а сегменты заведены на кляксу. А сама клякса, возможно, и есть HT1621.

Edited by BARS_

Share this post


Link to post
Share on other sites

Трудность в написании программы. В протеусе семисегментник имеет восемь выводов управления сегментами и четыре управления регистрами, как я понял. На моей стекляшке четыре так же регистрами и 10 сегментами, предполагаю что лишних 2 это доп символы (треугольники). 

Share this post


Link to post
Share on other sites

#define F_CPU 8000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

void Port_init(void)//функция для инициализации ножек подключенных к индикатору
{
    //подключаем порт B u D на вывод информации
    DDRD=0xFF;
    PORTD=0x00;
    
    DDRB=0xFF;
    PORTB=0x00;
}

void segchar (unsigned char seg)//функция принимает значение цифры которую необходимо вывести
{
    switch(seg)
    {
        case 1: PORTD = 0b11111001; break;//1
        case 2: PORTD = 0b10100100; break;//2
        case 3: PORTD = 0b10110000; break;//3
        case 4: PORTD = 0b10011001; break;//4
        case 5: PORTD = 0b10010010; break;//5
        case 6: PORTD = 0b10000010; break;//6
        case 7: PORTD = 0b11111000; break;//7
        case 8: PORTD = 0b10000000; break;//8
        case 9: PORTD = 0b10010000; break;//9
        case 0: PORTD = 0b11000000; break;//0
        case 11:PORTD = 0b11111111; break;//пустое место
        case 12:PORTD = 0b10000000; break;//точка
        case 13:PORTD = 0b01110111; break;//A
        case 14:PORTD = 0b01111100; break;//b
        case 15: PORTD = 0b00111001; break;//c
        case 16: PORTD = 0b01011110; break;//d
        case 17: PORTD = 0b01111001; break;//E
        case 18: PORTD = 0b01110001; break;//F
        case 19: PORTD = 0b01000000; break;//-
        case 20: PORTD = 0b01101101; break;//S
        case 21: PORTD = 0b00111110; break;//U
        
    };
}
//переменные для разрядов
char A1=0;
char A2=0;
char A3=0;
char A4=0;
char A5=0;

void print_led (int chislo)//делим число по разрядам
{
    A1=chislo%10;               //1ый разряд
    A2=(chislo%100)/10;         //2ой разряд
    A3=(chislo%1000)/100;       //3й разряд
    A4=(chislo%10000)/1000;     //4й разряд
    A5=(chislo%100000)/10000;   //5й разряд
}
void timer_ini(void)
{
    TCCR1B |= (1<<WGM12); // устанавливаем режим СТС (сброс по совпадению)
    TIMSK |= (1<<OCIE1A);    //устанавливаем бит разрешения прерывания 1ого счетчика по совпадению с OCR1A(H и L)
    OCR1AH = 0b00001111; //записываем в регистр число прерываний
    OCR1AL = 0b01000010;
    TCCR1B |= (1<<CS11);//запуск таймера
}
unsigned char n_count=0;//вводим переменную для определения разряда числа

ISR (TIMER1_COMPA_vect)//программа прерывания
{
    //n_count==определяем разряд(знакоместо), PORTB&=~(1<<PORTB0) обнуляем порт B,PORTB|=(1<<PORTB1) записываем число
    if(n_count==0) {PORTB&=~(1<<PORTB0);PORTB|=(1<<PORTB1);segchar(A1);}
    if(n_count==1) {PORTB&=~(1<<PORTB0);PORTB|=(1<<PORTB1);segchar(A2);}
    if(n_count==2) {PORTB&=~(1<<PORTB0);PORTB|=(1<<PORTB1);segchar(A3);}
    if(n_count==3) {PORTB&=~(1<<PORTB0);PORTB|=(1<<PORTB1);segchar(A4);}
    if(n_count==4) {PORTB&=~(1<<PORTB0);PORTB|=(1<<PORTB1);segchar(A5);}
    n_count++;
    if (n_count>1) n_count=0;
}

//основная функция
int main(void)
{
    //unsigned char butcount=0, butstate=0;
    Port_init();//включаем порты
    timer_ini();//включаем таймер
    sei();//включение прерываний
    
    for (n_count=0;n_count<99999;n_count++)//увеличиваем число от нуля i=0, на единицу i++, до 99999
    {
        print_led(n_count);
        _delay_ms(500);
        if(n_count==99999)n_count=0;//когда число достигло 99999 число станет нулем и счет пойдет вновь
    }
    }
Почему реверс портов получился? те что должны работать выключены а те что должны молчать как то странно работают

Share this post


Link to post
Share on other sites
8 минут назад, Дмитрий Мамедиев сказал:

unsigned char n_count

 

8 минут назад, Дмитрий Мамедиев сказал:

n_count==99999

Как?

9 минут назад, Дмитрий Мамедиев сказал:

n_count++;
    if (n_count>1) n_count=0;

Да еще и такое.

Share this post


Link to post
Share on other sites

Метод подбора исправления ошибок. Не в обиду, но может пора уже начать думать что здесь для чего?

Share this post


Link to post
Share on other sites
1 час назад, Дмитрий Мамедиев сказал:

да еще работало у него

О, в интернетах дофига чего работает.

Share this post


Link to post
Share on other sites



может пора уже начать думать что здесь для чего?


Да хрен его знает как оно работает. Почитал, посмотрел, на сколько понял на столько и собрал. Для меня достижение что оно с первого раза еще и скомпилировалось. Если бы знал я сюда бы не стучал чтоб меня поправили или направили.

Share this post


Link to post
Share on other sites

Вот пока будет такое отношение, работать не будет. Сядь, прочти, подумай и разберись. За тебя никто не будет писать код. А алгоритм я выше дал.

Share this post


Link to post
Share on other sites

Здесь уже напряжение должно быть четырёхуровневое и для общих выводов и для выводов сегментов. Суммируя эти напряжения на сегменте относительно нужного общего, получим три уровня (Bias 1/3) напряжения.  Реализовать этот режим на контроллере общего применения в принципе возможно, но возникает необходимость в слишком большом количестве выводов, т.к. управляющий сигнал на сегмент и общий вывод нужно будет формировать двумя выводами контроллера.

Мультиплексный режим 1/4 Duty и 1/3 Bias
Bias 1/3 является оптимальным для ЖК-дисплеев с четырьмя общими выводами  (1/4 Duty).  Принцип то же, что и рассмотренный выше, за исключением того, что кадр (frame) состоит из 8-ми, а не 6-ти, как вверху, тактов. Именно такой режим указан в документации для управления SR5624.

вот от сюда:http://www.embed.com.ua/mikrokontrollernyiy-konstruktor/multipleksnyiy-rezhim-upravleniya-simvolnyim-zhki/

Share this post


Link to post
Share on other sites
В 19.02.2018 в 19:00, Vovka сказал:

Ведь можно выбрать МК со встроенным драйвером LCD, например: PIC16F19155

для AVR тоже такие есть...

Share this post


Link to post
Share on other sites

хотелось бы программно подключить его к AVR как на прямую, так и через ht1621. не всегда у людей есть множество разных мк, вот как я например купил пяток атмег8. хочется мне сделать чего нибудь на мк буду брать что есть. подключу например но SPI тремя проводами дисплей ну пару кнопок это еще пусть 4, а остальные 100500 пустые останутся. так вот чтоб не использовать драйвера и есть смысл подключить дисплей напрямую к мк.

Share this post


Link to post
Share on other sites
2 часа назад, Дмитрий Мамедиев сказал:

не всегда у людей есть множество разных мк

зато у китайцев полно: сейчас не проблема заказать, да и стоит копейки...

Share this post


Link to post
Share on other sites

При чем здесь это? Надо исходить из критерия, насколько легко приобрести ту или иную деталь. Лично я перед разработкой схемы захожу на Али и смотрю какие есть микроконтроллеры и по какой цене: в итоге любой человек может легко заказать себе МК, если его нет в ближайших магазинах.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...