asf 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба А зачем ресетом рулить? ИМХО где то здесь косяк может быть, я когда начинал с граф. ЖКИ работать помнится тоже траблы были, пока не пришпилил его жестко через RC-цепь... Если все же хочется контроллером рулить RESET, то надо все равно предусмотреть установку этой линии в исходное состояние автоматом... пофиг :( :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба пофиг :( :cranky: Ну а в AVRStudio отлаживали?... логика сигналов и т.п..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
asf 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба //************************************************************ #define F_CPU 8000000UL // 8 MHz Задаем частоту процессора * #include <util/delay.h> //************************************************************ #include <avr/io.h> #include <avr/interrupt.h> //***LCD МЭЛТ const char Logo122[4][122]=//122x32 pixel, каждые 8 вертикальных точек собраны в байт { { 0xFF,0x01,0x01,0x01,0x01,0xC1,0xE1,0xB1,0x11,0x1D,0x1D,0x7F,0x7F,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFD,0xF9,0xB1, 0xF1,0xE1,0x81,0x01,0x01,0x01,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1, 0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1, 0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1, 0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1, 0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1, 0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xFF }, { 0xFF,0xE0,0x7C,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x6F,0x6F,0x07, 0x07,0x06,0x00,0x00,0x03,0x03,0x0F,0x3F,0x07,0x07,0x07,0x03,0x03,0x07,0x0F,0x3B, 0x13,0x80,0x80,0x23,0x9E,0xF8,0xF8,0xF8,0xFC,0xFE,0xFE,0xFE,0xFC,0x00,0x00,0x00, 0x80,0x80,0xE0,0xF8,0xFC,0xFE,0xFE,0xFE,0xFC,0x00,0x00,0x00,0x60,0xF0,0xF8,0xF8, 0x7C,0x3E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x3E,0x3E,0x7E,0xFC,0xF8,0xF0,0xE0, 0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFC,0xFE, 0xFE,0xFE,0xFE,0xFC,0x00,0x1C,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0xFE,0xFE,0xFE, 0xFE,0xFE,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x1C,0xFF }, { 0xFF,0x07,0x7C,0xE0,0x80,0x00,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0x0F,0x30,0x38,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0xE0,0xF0,0xFC,0xFF,0xFF,0x3F,0x0F,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFE,0xFF, 0x7F,0x7F,0x1F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x18,0x3C,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x3C,0x3C,0x18,0x00,0x00,0x01,0xFF, 0xFF,0xFF,0xFF,0x00,0x00,0x80,0xE0,0xF0,0xFC,0xFE,0xFF,0x7F,0x1F,0x07,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF }, { 0xFF,0x80,0x80,0x80,0x80,0x83,0x86,0x8C,0x98,0xB0,0xB0,0xE0,0xC0,0xC0,0x80,0x80, 0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xE0,0xF8,0xFC,0xFF,0xFF, 0xBF,0x8F,0x87,0x81,0x80,0x80,0x80,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x83,0x80, 0x80,0x80,0x80,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x80,0x80,0x86,0x8F,0x9F,0xBF, 0xFE,0xFC,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xFC,0xFE,0xBF,0x9F,0x8F, 0x87,0xE3,0xF9,0xFC,0xFF,0xFF,0xBF,0x9F,0x87,0x81,0x80,0x80,0x80,0x80,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0xFF, 0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF } }; #define LCD_PORTDATA PORTC #define LCD_DDRDATA DDRC #define LCD_PINDATA PINC #define LCD_PORTCONTROL PORTA #define LCD_DDRCONTROL DDRA #define LCD_wire_A0 PA3 #define LCD_wire_RW PA4 #define LCD_wire_E PA5 #define LCD_RES PA6 #define LCD_wire_CS PA7 //***************************************************************************** //Низкоуровневые команды //******************************************************************************/ // Установка цикла обмена по шине данных #define LCD_StrCYC() {LCD_PORTCONTROL &= ~_BV(LCD_wire_E);} // начало цикла обмена данными #define LCD_EndCYC() {LCD_PORTCONTROL |= _BV(LCD_wire_E);} // окончание цикла обмена данными //Процедура выдачи байта в индикатор void WriteByte(char b, int cd, int lr) { LCD_PORTCONTROL &= ~(_BV(LCD_wire_E)); // LCD.E=0;//Начальное значение сигнала индикатору // LCD.RW=0; LCD.A0=cd; //Выдача байта в индикатор как данных или команды if (cd) LCD_PORTCONTROL |= (_BV(LCD_wire_A0)); else LCD_PORTCONTROL &= ~(_BV(LCD_wire_A0)); // LCD.CS=lr; LCD.D=b; //Выбрать кристалл индикатора и выдать байт на шину данных индикатора if (lr) LCD_PORTCONTROL |= (_BV(LCD_wire_CS)); else LCD_PORTCONTROL &= ~(_BV(LCD_wire_CS)); LCD_PORTDATA = b; _delay_us(1); LCD_StrCYC(); // начало строба LCD_EndCYC(); // конец строба _delay_us(10); } void WriteCodeL(char B) { WriteByte(b,0,1); }//Команду в левый кристалл индикатора void WriteCodeR(char B) { WriteByte(b,0,0); }//Команду в правый кристалл индикатора void WriteDataL(char B) { WriteByte(b,1,1); }//Данные в левую половину индикатора void WriteDataR(char B) { WriteByte(b,1,0); }//Данные в правую половину индикатора //***LCD МЭЛТ int main(void) { int p;//Номер текущей страницы индикатора int c;//Позиция по горизонтали выводимого байта ASSR &= ~_BV(AS2); //Clear AS2 bit PC7 and PC6 // для PC5 и PC4 и PC3 и PC2 - JTAGEN Fuse поставить галку т.е. отключить JTAG TWCR &= ~(_BV(TWEN)); //Clear TWEN bit PC1 ADCSRA &= ~(_BV(ADEN)); //Clear all ADC on portA LCD_PORTDATA = 0x00; LCD_DDRDATA = 0xFF; LCD_PORTCONTROL = 0x00; LCD_DDRCONTROL = 0xFF; LCD_PORTCONTROL |= _BV(LCD_wire_E); // LCD.E=1;//Начальное значение сигнала индикатору LCD_PORTCONTROL &= ~_BV(LCD_RES); // LCD.RES=0;//Выдать сигнал RES=0 индикатору LCD_PORTCONTROL |= _BV(LCD_RES); // LCD.RES=1;//Снять сигнал RES WriteCodeL(0xE2);//Reset WriteCodeR(0xE2);//Reset WriteCodeL(0xEE);//ReadModifyWrite off WriteCodeR(0xEE);//ReadModifyWrite off WriteCodeL(0xA4);//Включить обычный режим WriteCodeR(0xA4);//Включить обычный режим WriteCodeL(0xA9);//Мультиплекс 1/32 WriteCodeR(0xA9);//Мультиплекс 1/32 WriteCodeL(0xC0);//Верхнюю строку на 0 WriteCodeR(0xC0);//Верхнюю строку на 0 WriteCodeL(0xA1);//Invert scan RAM WriteCodeR(0xA0);//NonInvert scan RAM WriteCodeL(0xAF);//Display on WriteCodeR(0xAF);//Display on for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора WriteCodeL(p|0xB8);//Установка текущей страницы для левого кристалла индикатора WriteCodeL(0x13);//Установка текущего адреса для записи данных в левую отображаемую позицию левой половины индикатора for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора WriteDataL(Logo122[p][c]);//Вывод очередного байта в индикатор } WriteCodeR(p|0xB8);//Установка текущей страницы для правого кристалла индикатора WriteCodeR(0x00);//Установка текущего адреса для записи данных в левую отображаемую позицию правой половины индикатора for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора WriteDataR(Logo122[p][c]);//Вывод очередного байта в индикатор } } while(1) { } } //main Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба не пойму надобность демонстрировать один и тот же исходник при чем без комментарив... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
asf 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба не пойму надобность демонстрировать один и тот же исходник при чем без комментарив... это рабочий вариант Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба не пойму надобность демонстрировать один и тот же исходник при чем без комментарив... это рабочий вариант А зачем const char Logo122[4][122]=// кому это надо???? Можно было просто исходник приаттачить и коментарии к нему... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
asf 0 7 декабря, 2006 Опубликовано 7 декабря, 2006 · Жалоба не пойму надобность демонстрировать один и тот же исходник при чем без комментарив... это рабочий вариант А зачем const char Logo122[4][122]=// кому это надо???? Можно было просто исходник приаттачить и коментарии к нему... нужно таким, как я - новичкам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться