| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| ATmega16 и LCD дисплей- какво бъркам? http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13518 |
Страница 1 от 1 |
| Автор: | Gioshev [ Пет Яну 16, 2015 1:09 pm ] |
| Заглавие: | ATmega16 и LCD дисплей- какво бъркам? |
Здравейте, от 1 седмица се мъча да "подкарам" LCD дисплей с един ATmega16, но без успех. Все още съм начинаещ и за това използвам готова програма от нета. Ето я: // Program to display a single alphabet ‘A’ on LCD /* LCD data transfer through 8 bit mode Writing a single letter A on LCD LCD DATA port----PORT A ctrl port------PORT B rs-------PB0 rw-------PB1 en-------PB2 */ #define F_CPU 4000000UL #include<avr/io.h> #include<util/delay.h> #define LCD_DATA PORTA // LCD data port #define ctrl PORTB #define en PB2 // enable signal #define rw PB1 // read/write signal #define rs PB0 // register select signal void LCD_cmd(unsigned char cmd); void init_LCD(void); void LCD_write(unsigned char data); int main() { DDRA=0xff; // making LCD_DATA port as output port DDRB=0x07; // making signal as out put DDRC=0xFF; PORTC=0xFF; // индикация, че микроконтролера работи _delay_ms(500); PORTC=0x00; _delay_ms(500); PORTC=0xFF; _delay_ms(500); PORTC=0x00; _delay_ms(500); init_LCD(); // initialization of LCD _delay_ms(50); // delay of 50 milli seconds LCD_write('A'); // call a function to write A on LCD PORTC=0xFF; // индикация, че микроконтролера работи _delay_ms(500); PORTC=0x00; _delay_ms(500); PORTC=0xFF; _delay_ms(500); PORTC=0x00; _delay_ms(500); return 0; } void init_LCD(void) { LCD_cmd(0x38); // initialization of 16X2 LCD in 8bit mode _delay_ms(1); LCD_cmd(0x01); // clear LCD _delay_ms(1); LCD_cmd(0x0E); // cursor ON _delay_ms(1); LCD_cmd(0x80); // ---8 go to first line and --0 is for 0th position _delay_ms(1); return; } void LCD_cmd(unsigned char cmd) { LCD_DATA=cmd; ctrl =(0<<rs)|(0<<rw)|(1<<en); // RS and RW as LOW and EN as HIGH _delay_ms(1); ctrl =(0<<rs)|(0<<rw)|(0<<en); // RS, RW , LOW and EN as LOW _delay_ms(50); return; } void LCD_write(unsigned char data) { LCD_DATA= data; ctrl = (1<<rs)|(0<<rw)|(1<<en); // RW as LOW and RS, EN as HIGH _delay_ms(1); ctrl = (1<<rs)|(0<<rw)|(0<<en); // EN and RW as LOW and RS HIGH _delay_ms(50); // delay to get things executed return ; } Явно бъркам нещо с фусовете, но как ли не ги въртях (използвах и калкулатора). На порт "C" съм сложил светодиод, който индикира, че все пак контролера работи. Програмата е взета от тук: http://www.engineersgarage.com/embedded/avr-microcontroller-projects/interface-lcd-circuit Увеличавах и времената между различните команди, пробвах и с други готови кодове, но пак без успех. Дисплеите са 2бр. C16217A и са чисто нови. Вече нямам идеи, моля помагайте! |
|
| Автор: | ike [ Пет Яну 16, 2015 2:09 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Купи си това: http://www.ebay.com/itm/1P-HOT-USB-Nano ... 3f41c2b5ef И пробвай с него. Иначе проблема може да е в: 1. фусовете 2. самата програма 3. свързването на ATmega16 (кондензатори, ресет, кварц ...) 4. свързването на LCD-то. 5. Контраста на LCD-то. 6. инициализацията на LCD-то. 7. нито едно от изброените. |
|
| Автор: | Gioshev [ Пет Яну 16, 2015 2:41 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Иначе проблема може да е в: 1. фусовете 2. самата програма // Пробвал съм с различни готови програми 3. свързването на ATmega16 (кондензатори, ресет, кварц ...) // Използвам вътрешния RC осцилатор, но съм пробвал и с различни кварцове. 4. свързването на LCD-то. // Със сигурност проблема не е тук 5. Контраста на LCD-то. // Използвам тример 10k ohm м/у +5v и GND 6. инициализацията на LCD-то. 7. нито едно от изброените. Захранването е стабилизирано, но както казах използвам светодиод, който индикира, че контролера работи. Възможно ли е LCD драйвера да е различен? Доколкото знам има стандарт въведен от Hitachi |
|
| Автор: | ike [ Пет Яну 16, 2015 2:58 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Има стандарт но всеки си го тълкува както си знае. Инициализацията на новите LCD-та се различава малко от на Hitachi и не са съвместими. |
|
| Автор: | Cino [ Пет Яну 16, 2015 3:07 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Погледни инициализацията от Ардуино библиотеките за HD44780 ако дисплея е такъв де. Реда и таймингите на командите за 8-бит режим. https://code.google.com/p/arduino/sourc ... rystal.cpp |
|
| Автор: | ike [ Пет Яну 16, 2015 3:23 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Няма смисъл от 8 битов режим. Да скача направо на 4 битов. |
|
| Автор: | Gioshev [ Пет Яну 16, 2015 8:31 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Ще купя дисплей, който да съм сигурен че е с този HD44780 драйвер. Силно се надявам причината да е в него. До няколко дена ще пиша за резултата. |
|
| Автор: | CarBeta [ Пет Яну 16, 2015 9:37 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Инициализацията нещо не ми харесва, вижда ми се малко постна. Първоначално имаше няколко команди дето искаха по 5 милисекунди пауза. Това по спомен де, нямам пред мен таблицата да погледна. |
|
| Автор: | vgeorgiev [ Пет Яну 16, 2015 10:36 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
цък |
|
| Автор: | nobodyshadow [ Пет Яну 16, 2015 11:06 pm ] | |||||||||
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? | |||||||||
Я пробвай да замениш твоята функция с тази.
|
||||||||||
| Автор: | Gioshev [ Нед Яну 18, 2015 11:32 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Най после успях. Използвах линка на колегата vgeorgiev. Благодаря на всички които се опитахте да помогнете. Форума е интересен, надявам се и аз скоро да успея да помагам със съвети |
|
| Автор: | Реконструктор [ Пон Яну 19, 2015 9:41 pm ] | |||||||||
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? | |||||||||
Да, и аз съм забелязал, че има девиации. Фактически всеки производител си има некви особености. Като цяло съм на принципа - слагам стандартния драйвер и купувам LCD-та докато не попадна на такова, дето върви с драйвера. |
||||||||||
| Автор: | bobihot [ Сря Яну 21, 2015 6:14 pm ] |
| Заглавие: | Re: ATmega16 и LCD дисплей- какво бъркам? |
Аз си ги писах процедурите, но за х52 (АТ8052) |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|