Jump to content

Search the Community

Showing results for tags 'WG12864A'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 2 results

  1. Всем здрасте! Ребят подскажите, я в Си не очень хорош, но так уж вышло что пришлось. Есть программа для графического ЖК, написана под atmega8. При компиляции на amega16 ошибок не выдает но и ничего не показывает. Нужно для правильного перевода на atmega16? Танцы с бубном не помогают...я пробывал =) Есть вариант что напутаны порты в\в даже глядя по схемам они разные, при исправлении портов в коде компилятор начинает ругатся на неизвестную функцию(((( Вот код. #include <avr/io.h> #include "symbol.h" #define DI 0 #define RW 1 #define E 2 #define CS1 3 #define CS2 4 #define RST 5 void pause (unsigned int a) { unsigned int i; for (i=a;i>0;i--) ; } void lcd_dat (unsigned char data) { PORTD=data; //Выводим данные PORTB|=_BV(DI); //Говорим дисплею что передаются данные asm("nop"); PORTB|= _BV(E); //Импульс записи asm("nop"); PORTB&=~_BV(E); PORTB&=~_BV(DI); } void lcd_com (unsigned char comm) { PORTD=comm; //Выводим команду asm("nop"); PORTB|= _BV(E); // Импульс записи asm("nop"); PORTB&=~ _BV(E); } void gotoxy (unsigned char x, unsigned char y) { if (x<64) PORTB|=_BV(CS1); //Если x<64 включаем CS1 else { PORTB|=_BV(CS2); //else включаем CS2 x=x-64; } lcd_com(0x40+x); //Выставляем X координату lcd_com(0xb8+y/8); //Выставляем Y координату } void clear_screen (void) { unsigned char i,j; PORTB|=_BV(CS1)|_BV(CS2); //Включаем оба чипа for (j=0;j<8;j++) { lcd_com(0xb8+j); for (i=0;i<64;i++) lcd_dat(0x00); //Очищаем } } void wg12864_init(void) { DDRD=0xff; //PD0-7 как выхода PORTD=0x00; PORTB=_BV(RST)|_BV(CS1)|_BV(CS2); //Включаем оба чипа DDRB=_BV(DI)|_BV(RW)|_BV(E)|_BV(CS1)|_BV(CS2)|_BV(RST); //PB0-5 как выхода asm("nop"); lcd_com(0x3f); //Разрешаем отображение lcd_com(0xc0); //Устанавливаем начало отображения lcd_com(0x40); //Ставим X=0 lcd_com(0xb8); //Ставим Y=0 clear_screen(); PORTB&=~(_BV(CS1)|_BV(CS2)); } void put_pixel (const unsigned char x, const unsigned char y, const unsigned char color) { unsigned char temp=0; PORTB=_BV(RST); if ( (x>128)||(y>64) ) return; gotoxy (x,y); PORTD=0xff; DDRD=0x00; //PD0-7 как входа PORTB|=(_BV(RW)|_BV(DI)); //Считываем данные pause(1); PORTB|= _BV(E); asm("nop"); PORTB&=~_BV(E); asm("nop"); PORTB|= _BV(E); asm("nop"); temp=PIND; PORTB&=~_BV(E); if (color==1) temp|= _BV(y%8); //Выставляем/снимаем нужный нам бит else temp&=~_BV(y%8); PORTB&=~(_BV(RW)|_BV(DI)); DDRD=0xff; //PD0-7 как выхода asm("nop"); gotoxy(x,y); //Переходим к X,Y lcd_dat(temp); //Записываем данные PORTB=_BV(RST); } int sign (int x) { if (x<0) return -1; if (x>0) return 1; return 0; } int abs (int x) { if (x<0) return -x; else return x; } void line (unsigned char x1,unsigned char y1,unsigned char x2, unsigned char y2,unsigned char color) { int dx,dy,i,sx,sy,check,e,x,y; dx=abs(x1-x2); dy=abs(y1-y2); sx=sign(x2-x1); sy=sign(y2-y1); x=x1; y=y1; check=0; if (dy>dx) { dx=dx+dy; dy=dx-dy; dx=dx-dy; check=1; } e=2*dy - dx; for (i=0;i<=dx;i++) { put_pixel(x,y,color); if (e>=0) { if (check==1) x=x+sx; else y=y+sy; e=e-2*dx; } if (check==1) y=y+sy; else x=x+sx; e=e+2*dy; } } void rectangle (unsigned char x1,unsigned char y1,unsigned char x2, unsigned char y2,unsigned char color) { line (x1,y1,x2,y1,color); line (x2,y1,x2,y2,color); line (x2,y2,x1,y2,color); line (x1,y2,x1,y1,color); } void put_char (unsigned char x0, unsigned char y0, unsigned char code, unsigned char mode) { unsigned char i,x,y; x=x0; y=y0; PORTB=_BV(RST)|_BV(CS1); if ( (x>128)||(y>64) ) return; for (i=0;i<6;i++) { if (x>=64) { //Включить CS2 x=x-64; PORTB|=_BV(CS2); PORTB&=~_BV(CS1); } lcd_com(0x40+x); //Перейти X,Y lcd_com(0xb8+y); if (i<=4) { if (mode==1) lcd_dat(~sym[code][i]); //Пишем колонку else lcd_dat (sym[code][i]); //Пишем инвертированную колонку } if (i==5) { if (mode==1) lcd_dat(0xff); //Рисуем разделитель else lcd_dat(0x00); //Рисуем инвертированный разделитель } x=x+1; } } int main(void) unsigned char data2[8]={0x20,0x10,0x01,0x02,0x08,0x06,0x04,0x0a}; //"WG12864A" unsigned char i; pause(5000); //Задержка для включения ЖКИ wg12864_init(); //Инициализация ЖКИ rectangle(0,0,127,63,1); //Рисуем контур line (127,0,0,63,1); //Рисуем линии line (127,5,5,63,1); line (127,10,10,63,1); line (127,15,15,63,1); line (127,20,20,63,1); line (127,25,25,63,1); line (127,30,30,63,1); line (127,35,35,63,1); line (127,40,40,63,1); line (127,45,45,63,1); line (127,50,50,63,1); line (127,55,55,63,1); line (127,60,60,63,1); for (i=0;i<8;i++) put_char (10+6*i,3,data2[i],0); //Пишем "WG12864A" while (1) ; return 1; } И схема на atmega8 к которой он написан. ============================================== А вот схема atmega16 к которой надо запилить этот код..
  2. Уважаемые, значит приобрёл себе дисплейчик по практиковаться с графическими дисплеями. Но вот беда, ни как не могу настроить контрастность в нём( подключаю 3 пин "Vo" как по даташиту через переменный резистор на 10 КОм, по суте регулировка контрастности! Но эфекта ноль. Прочитал в просторах инета что: "Управление контрастностью осуществляется отрицательным напряжением с вывода Vee." Поставил тупо перемычку между 3 пином "Vo" и 18 пином "Vee" и тут чудо, появилось изображение, но на столько тусклое что при поподании на дисплей света от обычной лампы, ни черта не видно( вот фото: Уважаемые, помогите пожалуйста решить проблему контрасности!!! весь инет уже перерыл
×
×
  • Create New...