Поиск сообщества
Показаны результаты для тегов 'LCD16x2'.
Найдено: 3 результата
-
Приобрел по случаю несколько данных модулей. По описанию продавца, "...принимaлa чeгo-то по 232 порту и выводила нa дисплей." Раньше встречался с подобными модулями (CE110, CE210: I2C контроллер ЖКИ и клавиатуры на PIC16F876), но там было подробное описание от производителя, а на этот нет никакой информации. Обратился к производителю, тот ответил: "This is other customer’s custom-made product item and we have signed DNA with other customer for this custom-made item. We are unable to sell this item and also provide any related information to you.", без комметариев. Будь устройство в сборе, можно было-бы поснифферить UART, а пока придется разбираться, что называется AS IS и, возможно, выяснять линии обмена с LCD и писать свою прошивку. Модуль пока не включал посмотрю, как он себя поведет после включения, и будет-ли активность на UART-е при нажатии кнопок и прозвоню доступные контрольные точки на плате, возможно это шина программирования, но уверен, что прошивка защищена. Возле 232-го чипа тоже 5 каких-то пинов. На сейчас два вопроса: 1. Самый очевидный и наиболее предсказуемый: может кто-нибудь имел дело с таким изделием? 2. Для выяснения распиновки шины LCD решил покупать себе логический анализатор, чтобы был свой, ибо фирменный теперь недоступен. Сейчас отложил 3: первые два: - https://aliexpress.ru/item/1005001621950241.html?spm=a2g2w.cart.cart_split.10.48ab4aa6xeZLT0&sku_id=12000016846593922&_ga=2.240102022.482015187.1700625783-1571267238.1700625783 - https://aliexpress.ru/item/1005006023889184.html?spm=a2g2w.cart.cart_split.8.48ab4aa6xeZLT0&sku_id=12000035368138955&_ga=2.16789308.482015187.1700625783-1571267238.1700625783 У второго комплектация побогаче, понятно, что он и подороже, но первый стОит 434р. с доставкой, но пока искал, обратил внимание, что подобные анализаторы, даже в минимальной комплектации, различаются по цене, иногда весьма значительно, например этот, вдвое дороже: https://aliexpress.ru/item/1005006199156574.html?sku_id=12000036235805994&spm=a2g2w.productlist.search_results.19.159e52bfzDsUdi они что, внутри по разному устроены? Или переплата за бренд? и еще один, с type-c и без корпуса: https://aliexpress.ru/item/1005005736923008.html?spm=a2g2w.cart.cart_split.5.48ab4aa6xeZLT0&sku_id=12000034162534598&_ga=2.117910540.482015187.1700625783-1571267238.1700625783 На первые два в сети приводятся фото внутренностей. Плата обильно усыпана SMD-элементами, а у этого плата почти голая, вот и возникают сомнения. Кто что посоветует?
- 6 ответов
-
- PIC
- микроконтроллер
-
(и ещё 3 )
C тегом:
-
Недавно перешел с avr на stm32, для начала решил заказать Blue Pill. Нашел у себя дисплей MT-16S2H, почитал доку по нему и набросал код в Keil. Экран загорелся, но ничего на нем не появляется. И никак не могу понять или при инициализации накосячил или же с форматом вывода что-то. Кто работал с подобным, отпишитесь) Настраиваю на работу в 4х битном режиме. Работаю на порте B (PB4-PB7), A0 к B0, E к B1. main.c: #include "main.h" #define SYSLOCK 72000000U #define E1 GPIOB->BSRR |= GPIO_BSRR_BR1 #define E0 GPIOB->BSRR |= GPIO_BSRR_BS1 #define A1 GPIOB->BSRR |= GPIO_BSRR_BR0 #define A0 GPIOB->BSRR |= GPIO_BSRR_BS0 #define LCD_PINS0 GPIOB->BSRR |= (GPIO_BSRR_BS0 | GPIO_BSRR_BS1 | GPIO_BSRR_BS4 | GPIO_BSRR_BS5 | GPIO_BSRR_BS6 | GPIO_BSRR_BS7) #define LED_ON GPIOC->BSRR |= GPIO_BSRR_BR13 #define LED_OFF GPIOC->BSRR |= GPIO_BSRR_BS13 __IO static uint32_t SysTick_CNT = 0; void PORTS_INIT(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPBEN; /*PORTC settings*/ GPIOC->CRH &= GPIO_CRH_CNF13; GPIOC->CRH |= GPIO_CRH_MODE13; /*A0(PB0) & E(BP1) INIT*/ GPIOB->CRL &= GPIO_CRL_CNF0; GPIOB->CRL |= GPIO_CRL_MODE0; GPIOB->CRL &= GPIO_CRL_CNF1; GPIOB->CRL |= GPIO_CRL_MODE1; /*PORTB PB4-PB7 settings*/ GPIOB->CRL &= GPIO_CRL_CNF4; GPIOB->CRL |= GPIO_CRL_MODE4; GPIOB->CRL &= GPIO_CRL_CNF5; GPIOB->CRL |= GPIO_CRL_MODE5; GPIOB->CRL &= GPIO_CRL_CNF6; GPIOB->CRL |= GPIO_CRL_MODE6; GPIOB->CRL &= GPIO_CRL_CNF7; GPIOB->CRL |= GPIO_CRL_MODE7; } void SysTick_INIT(void) { SysTick->LOAD &= ~SysTick_LOAD_RELOAD_Msk; SysTick->LOAD = SYSLOCK/(1000000-1); SysTick->VAL &= ~SysTick_VAL_CURRENT_Msk; SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; } void delay_mks(uint32_t x) { SysTick->VAL &= ~SysTick_VAL_CURRENT_Msk; SysTick->VAL = SYSLOCK/(1000000-1); SysTick_CNT = x; while (SysTick_CNT); } void SysTick_Handler(void) { if (SysTick_CNT > 0) SysTick_CNT--; } void LCD_INIT(void) { LCD_PINS0; delay_mks(20000); sendbyte(0x33, 0); delay_mks(40); sendbyte(0x32, 0); delay_mks(40); sendbyte(0x28, 0); delay_mks(40); sendbyte(0x0C, 0); sendbyte(0x06, 0); sendbyte(0x01, 0); } void sendbyte(int16_t b, uint8_t mode) { LCD_PINS0; GPIOB->ODR &= ~(b & 0xF0); if (mode == 1) A1; else A0; pulse(); LCD_PINS0; GPIOB->ODR &= ~((b & 0x0F) << 4); if (mode == 1) A1; else A0; pulse(); } void pulse(void) { E0; delay_mks(22); E1; delay_mks(22); E0; delay_mks(22); } void sendChar(char *e) { char *text; text = e; while ((*text != 0) && (*text != 0)) { sendbyte(*text, 1); text++; } } void setPos(uint8_t row, uint8_t col) { uint8_t address = 0; if (row == 0) address = 0; else address = 0x40; address |= col; sendbyte(0x80 | address, 0); } int main(void) { PORTS_INIT(); SysTick_INIT(); LCD_INIT(); setPos(0,2); sendChar("sass"); while(1) { /* LED_ON; delay_mks(200000); LED_OFF; delay_mks(200000);*/ } }
-
Доброго времени суток! Недавно решил продолжить свое изучение микроконтроллеров и с AVR перейти на STM32. Понял специфику и решил применить новые знания на практике. Нашел дисплей MT-16S2H (https://www.melt.com.ru/pdf/mt-16s2h.pdf) и набросал кода для инициализации и вывода символа. Подсветка загорелась, но вывести ничего не получилось) Начал смотреть что написал. Порты инициализировал правильно, сам дисплей вроде тоже, запись данных вроде тоже. Предполагаю что косяк где-то с курсором или символ не правильно как-то вывожу: void setPos(int8_t row, int8_t col) { if (row == 0) col|=0x80; else col|=0xC0; sendbyte(col, 0); } void sendchar(char c) { sendbyte(c, 1); } Это мои предположения где может быть ошибка, надеюсь знаток найдется. Весь код прикладываю ниже. Заранее спасибо за помощь:) main.c