скрытое меню

HGS 12832-51 A0 I2C дисплей

HGS 12832-51 A0 I2C дисплей

Процесс начинается с того , что мы толком не знаем какой у нас дисплей и какой контроллер дисплея внутри. Знаем только , что подключается по I2C.
Программно используются только линии SDA, SCL, RST и подсветка дисплея. Остальное программно не управляется.

определяем контроллер дисплея I2C

Для этого сканируем шину I2C по разным адресам, т.е. тупо смотрим ответ на команду

HAL_StatusTypeDef res = HAL_I2C_IsDeviceReady(&hi2c2, address, 1, HAL_MAX_DELAY);

У нас ответ пришел по адресу 0x7C (0b01111100).
По информации из интернета определили что , это контроллер дисплея ST7032 (Slaver address 0b01111100).

Находим даташит на ST7032 без проблем

(см. внизу файлы для скачивания)

Инициализация дисплея

Как я понял сначала сброс по линии RESET (1-0-1).

Потом надо сразу послать такие команды инициализации :


	commandSend(0X38); // FUNCTION SET 8 bit,N=1,5*7dot
	HAL_Delay(1);
	commandSend(0X14); // Internal OSC frequency
	HAL_Delay(1);
	commandSend(0x78); // Contrast set
	HAL_Delay(1);
	commandSend(0X5E); // Power/ICON/Contrast control
	HAL_Delay(1);
	commandSend(0X6A);  //Follower control
	HAL_Delay(200);          // for power stable 
	commandSend(0X0C); // DISPLAY ON
	HAL_Delay(1);
	commandSend(0X01); //CLEAR DISPLAY
	HAL_Delay(2);
	commandSend(0X06); // ENTRY MODE SET , CURSOR MOVES TO RIGHT
	HAL_Delay(1);	

Убеждаемся , что дисплей может что-то отображать

Далее ничего не произойдет и много времени можно убить, но есть тупой способ понять , что дисплей может что-то показывать.

Тупо посылаем последовательно байты (данные) со значениями от 0 до 256:


		for(uint8_t uu=0x00; uu<0xff; uu++)
			dataSend(uu);

И дисплей в какой-то момент зажег все точки и мы это увидели. Ура товарищи!

Точки все загорелись при посылке байта 0xAE. Потом при посылке по второму уже кругу 0x00 все точки потухли.

Теперь пора и почитать даташит ST7032.

IR - Instruction Register
DR - Data Register
DDRAM - Display data RAM

Файлы для скачивания

Яндекс.Метрика