С помощью специальной программы создаем дополнительный монитор размером 640 на 480...в свойствах ставим РАСШИРИТЬ РАБОЧИЙ СТОЛ НА ЭТОТ МОНИТОР...верхний левый уго этого монитора и будет наш графический экран 128 на 64...програмка интуитивна понятна (инверсия...уменьшение...яркость....контраст)....дерзайте))))) Подключаем дисплей 128 на 64 к ардуино вот по такой схеме. Загружаем вот такой скечт))) #define LCD_RESET_VAL 0x20 #define LCD_CS2_VAL 0x10 #define LCD_CS1_VAL 0x08 #define LCD_E_VAL 0x20 #define LCD_RS_VAL 0x08 static uint8_t g_cs; void lcd_write(byte val, byte dt) { uint8_t valpc; valpc = (dt) ? LCD_RS_VAL : 0; PORTC = valpc; PORTB = LCD_RESET_VAL | g_cs | (val >> 6); PORTD = (val << 2); PORTC |= LCD_E_VAL; delayMicroseconds(1); PORTC = valpc; } void lcd_init() { g_cs = (LCD_CS1_VAL | LCD_CS2_VAL); delay(500); lcd_write(0x3e, 0); delay(500); lcd_write(0x3f, 0); delay(100); lcd_write(0xc0, 0); delay(10); lcd_write(0xb8, 0); delay(10); lcd_write(0x40, 0); delay(10); } void serial_init(long baud) { uint16_t baud_setting; UCSR0A = 0; baud_setting = (F_CPU / 8 / baud - 1) / 2; UBRR0H = baud_setting >> 8; UBRR0L = baud_setting; UCSR0B = 1 << RXEN0; } volatile uint8_t serial_data_ready() { return ((UCSR0A & (1 << RXC0)) >> RXC0); } volatile uint8_t serial_data_read() { return (UDR0); } void setup() { DDRB = 0x3f; DDRC = 0x3f; DDRD = 0xfc; lcd_init(); g_cs = 0; serial_init(500000); g_cs = (LCD_CS1_VAL | LCD_CS2_VAL); for (uint8_t i = 0; i < 64; i++) { lcd_write(i, 1); delayMicroseconds(5); } } void loop() { static uint8_t x = 0; static uint8_t y = 0; static uint8_t ph = 0; static uint8_t pxdt[10]; uint8_t dt; while (!serial_data_ready()) { ; } { dt = serial_data_read(); switch (ph++) { case 0: if (dt & 0x80) { ph = 0; // invalid address, reset state } else { y = dt >> 4; g_cs = LCD_CS1_VAL + (dt & 0x08); lcd_write(0xb8 | y, 0); x = (dt & 0x07) << 3; } break; case 1: delayMicroseconds(5); lcd_write(0x40 | x, 0); pxdt[ph] = dt; break; case 2: case 3: case 4: case 5: case 6: case 7: lcd_write(pxdt[ph - 1], 1); pxdt[ph] = dt; break; case 8: lcd_write(pxdt[ph - 1], 1); delayMicroseconds(5); lcd_write(dt, 1); ph = 0; break; default: ph = 0; break; } } } После удачной загрузки на экране будет вот так Дальше инсталлируем программу USB_monito.zip После установки программы наажимаем свойства экрана должен появится дополнительный третий монитор размеро 640 на 480...ставим галочку РАСШИРИТЬ РАБОЧИЙ СТОЛ. затем необходимо запустить программу USB_monitor и сделать такие настройки На моем компе дополнительный монитор получился слева...соответственно графический экран слева вверху)))))
Круто! Буду пробовать, ибо надо! Если оно ещё под линукс единственным монитором заведётся, ну это я уже мечтать начал...
Да, вдогонку еще вопросы по поводу программы... Кто ее автор и где ее сайт? Исходники доступны? А под GNU/Linux? Протокол какой-то стандартный или ad-hoc ?
Вот сайт китайского разработчика http://q61.org/en/ там даже и на цветном делать пытались. Придет моя Арбуина 2560, попробую на Симёновский дисплей загнать.
Финт в том что у тебя на компе создается ещё один монитор. Когда я ставил софтину он у меня получился справа вверху. Затягиваешь туда окно проги какой ни будь и все.
Подскажите есть разница в подключении этого дисплея к Атмеге8 и Меге 2560??? Или в общем как пролить 2560, и куда подключить дисплей.