Sign in to follow this  
supercelt

Вывод Переменной На Экран Lcd1602A

3 posts in this topic

supercelt    2

stm32ret6b + lcd1602a

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

строки я вывожу вот так:

Функции:

void LCD_Set_Data(uint8_t data){
 if(((data >> 7) & 0x01) == 1){GPIOC->BSRR = 0x80;} else {GPIOC->BRR = 0x80;}
 if(((data >> 6) & 0x01) == 1){GPIOC->BSRR = 0x40;} else {GPIOC->BRR = 0x40;}
 if(((data >> 5) & 0x01) == 1){GPIOC->BSRR = 0x20;} else {GPIOC->BRR = 0x20;}
 if(((data >> 4) & 0x01) == 1){GPIOC->BSRR = 0x10;} else {GPIOC->BRR = 0x10;}
 if(((data >> 3) & 0x01) == 1){GPIOC->BSRR = 0x8;} else {GPIOC->BRR = 0x8;}
 if(((data >> 2) & 0x01) == 1){GPIOC->BSRR = 0x4;} else {GPIOC->BRR = 0x4;}
 if(((data >> 1) & 0x01) == 1){GPIOC->BSRR = 0x2;} else {GPIOC->BRR = 0x2;}
 if(((data >> 0) & 0x01) == 1){GPIOC->BSRR = 0x1;} else {GPIOC->BRR = 0x1;}
}
void LCD_Send_Command(uint8_t data){
 GPIOA->BRR = 0x10; //RS = 0;
 LCD_Set_Data(data);

 GPIOA->BSRR = 0x40; //E = 1
 Delay_ns();
 GPIOA->BRR = 0x40; //E = 0
}
void LCD_Send_Data(uint8_t data){
 GPIOA->BSRR = 0x10; //RS = 1;
 LCD_Set_Data(data);

 GPIOA->BSRR = 0x40; //E = 1
 Delay_ns();
 GPIOA->BRR = 0x40; //E = 0
}
void LCD_Send_String(uint8_t str_num, char* str){
 uint8_t i = 0;
 if(str_num == 0){
   LCD_Send_Command(0x80);
 }else{
   LCD_Send_Command(0xC0);
 }
 Delay_us(100);
 while(str[i] != 0){
   LCD_Send_Data(str[i]);
   Delay_ns();
   i++;
 }
}

Сам вывод:

char str[] = "TEXT";
////////
LCD_ini();
LCD_Send_String(0, str);

Share this post


Link to post
Share on other sites
LoKeR    0
Но захожу в тупик, как только надо вывести именно переменную, т.е. числовое значение.

uint8_t semer(uint32_t z)
{
switch(z)
{
 case(0): return 0x30;
 case(1): return 0x31;
 case(2): return 0x32;
 case(3): return 0x33;
 case(4): return 0x34;
 case(5): return 0x35;
 case(6): return 0x36;
 case(7): return 0x37;
 case(8): return 0x38;
 case(9): return 0x39;
}
return 0x6D;
}

void set_led3(uint32_t n1,uint32_t n2,uint32_t n3,uint32_t n4,uint32_t n5,uint32_t n6,uint32_t n7)
{
MT_WH1602_SetDDRAMAddress(0x49);
MT_WH1602_Delay(80);
MT_WH1602_WriteData(semer(n5));
MT_WH1602_Delay(200);
MT_WH1602_WriteData(semer(n4));
MT_WH1602_Delay(200); 
MT_WH1602_WriteData(semer(n3));
MT_WH1602_Delay(200);
MT_WH1602_WriteData(0x2E);
MT_WH1602_Delay(200);
MT_WH1602_WriteData(semer(n2));
MT_WH1602_Delay(200);
MT_WH1602_WriteData(semer(n1));
MT_WH1602_Delay(200);
MT_WH1602_WriteData(0x57);
MT_WH1602_Delay(200);
}

попробуй этот код для своих переменных

void init_MT_WH1602()
{
MT_WH1602_Init();
 MT_WH1602_Delay(2000);
   MT_WH1602_FunctionSet(1, 0, 0);
   MT_WH1602_Delay(4000);
   MT_WH1602_FunctionSet(1, 0, 0);
   MT_WH1602_Delay(4000);
   MT_WH1602_FunctionSet(1, 0, 0);
   MT_WH1602_Delay(4000);
   MT_WH1602_FunctionSet(1, 1, 1);
   MT_WH1602_Delay(4000);
   MT_WH1602_DisplayOnOff(1, 0, 0);
   MT_WH1602_Delay(4000);
 MT_WH1602_ClearDisplay();
 MT_WH1602_Delay(6000);
}

и еще без этого блока LCD не работает почему не знаю надо этот блок обязательно добавить

Share this post


Link to post
Share on other sites

Старт складской программы по Wi-Fi/ Bluetooth-чипам от Espressif

На склад КОМПЭЛ поступили чипы, модули и отладочные платы от компании Espressif Systems на базе ESP8266 и ESP32. Стоимость всех изделий данной линейки – в 2-3 раза ниже ближайших аналогов, чипы занимают минимальное место на плате, энергоэффективны и универсальны в применении

Подробнее...

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum 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...
Sign in to follow this  

  • Сообщения

    • Да пожалуй что никакое , из тех,  что применимо в быту. Если только ТС не главный энергетик электростанции )) , и не собирается генерировать энергию в общую сеть. не проще включать по одной ?
    • А что тогда "о чём" - тёрки о щётках на пилотках том, в чём разница шоттки vs трещётки ?  ...всё там нормально, расписано - без изысков, но доступным языком (чуть ли не на пальцах), дабы не перегружать формулами неокрепшие мозги.
    • В тему шариков,мы цветными нитками обматывали дополнительно шарик с клеем,потом жестко ставили,совместно с покрашенным фильтром или лампой,лак с 25вт не сгорал,,,,цапон и разный,цвет с ручек касный классный,зеленый тоже,с синим не очень,а вообще шикардос
    •   Мысль правильная, только токовые клещи явно лишние. До "ныряния" под землю  - на одну фазу вешаем 10 утюгов, на вторую - 5, третью оставляем без нагрузки и, на "вылазе" измеряем напряжение на каждой...
    • вот ЭТО самое интересное. особенно график преобразования ЧМ-сигнала в однобитный ШИМ нарисуйте пожалуйста нам, убогим, по какому графику работает Ваш замечательный преобразователь ещё пепси и чипсов ! the show must go on
    • вздор! Из АМ-детектора никаких сотых долей не выжмешь. Есть только 1 способ -прекратить ток гармонического сигнала через АМ-детектор то есть ПОДАВИТЬ АМ-модуляцию. Прекратить образование гармоник и субгармоник. Но тогда исчезает АМ-детектор что и требуется собсно. Диоды певесести в режим с отсечкой тока, когда их ток станет импульсами. Это ничем не противоречит целям этих писателей про превращение ПЧ в импульсы. Но если у них для АМ-огибающей диод всегда открыт тогда тело перемещается в морг. Всегда открытый диод это пробитый диод. Да, настоящая наука осознает чтобы получить высококачественную ЧМ-демодуляцию надо устранить все что связано с АМ. 1. Режимы диодов сделать импульсными 2. до преобразователя ввести ограничение или стабилизацию амплитуды (АРУ) 3. Подавить ПАМ в ЧМ-демодуляторе Чтобы все это реализовать  нужен отказ от рассмотрения АМ-детектироавания как методики, то есть ОТКАЗ ОТ ДЕДОВСКИХ СХЕМ И ТЕОРИЙ. Но павлик настойчиво отказывается от высокого качества сохраняя АМ-детектирование. Потому и не будет никакого качества ни у него ни у тех кто будет повторять. Подробно опишу процесс превращения в однобитный цифровой демодулятор: Общее напряжение имеет полюсы  9,8мгц и 11,6мгц, благодаря высокой постоянной времени цепи автосмещения за время девиации частоты к к полюсам постоянное смещение не изменяется и ток в импульсах остается постоянным (неизменным) и в результате  ток протекает импульсами от одного полюса к другому, заряжая или разряжая конденсатор памяти. То есть ток либо приносит дополнительный заряд либо уносит лишний. Так образуется управление зарядом для затвора полевого транзистора ОУ. При этом ток стекающий в затвор отсутствует т.к. он весьма низкий, гораздо менее чем обратные токи диодов и не учитывается. На фоне рабочего прямого тока ЧМ-демодулятора, который составляет около 0,3мА Этот ток затвора ОУ (5-50рА) ни в одном процессе не участвует и током нагрузки не является. Демодулятор формально получается преобразователем ШИМ в звуковой сигнал. При ЧМ частота импульсов меняется и это означает модуляцию длительности импульса и паузы-то есть ШИМ. Никого сегодня нельзя удивить такими преобразователями и работают они в цифровых усилителях НЧ,0 блоках питания компов но на низких частотах до 0,5мгц, а моя схема реализует преобразование ШИМ на высокой ПЧ 10,7МГЦ что абсолютно революционно применительно к задаче. Схема поддается некоторой прокачке с подбором величин  сопротивлений и емкостей а также существенная прокачка возможна при замене диодов на более чувствительные, у которых прямая проводимость возникает раньше на ВАХ. Вот это и задача физики- изобрести новые диоды, найти новые полупроводниковые материалы. Как же не прав павлик призывающий НИЧЕГО НЕ ДЕЛАТЬ, диоды не изобретать, схемы не улучшать, новую теорию не постигать и все только лишь повторять как у дедов и это пиплу нравится если у него высокая репутация. Значит пипл такой же, не желает ничего делать для будущего и потому будущее отменяется. Россия приемников не производит и не собирается. Старое советское либо уже развалилось либо на стадии осыпания песка. Отказ от модернизационного производства означает отказ от повышения или хотя бы СОХРАНЕНИЯ ДОХОДНОСТИ то есть любители дедовских теорий будут становится НИЩИМИ, терять зарплату и доходность, уважение, семью и разум. Вот это и есть ДИВЕРСИЯ против будущего России, иногда эта диверсия звучит по другому: все новое это хорошо забытое старое или: все уже украли до нас. Результат: нищенство, глупота, доходы снижаются, производство разрушается. Даже совки были умнее и тырили на западе все что смогут новое чтобы воспроизвести а этим павликам ничего не надо, дедовское д-мо в самый раз. Удивительно, но запад не имеет этой болезни и видит возможность разбогатеть только произведя и продав что-то абсолютно новое.       Срач в этой теме доказывает что разрушение доходности в терминальной стадии и уже пошло разрушение морали, совести, разума.