Автор Тема: Програмиране на LCD-dysplay  (Прочетена 8413 пъти)

mihail19871987

  • Новодошъл
  • *****
  • Публикации: 4
    • Профил
Програмиране на LCD-dysplay
« -: Януари 23, 2013, 11:14:09 am »
Здравейте
От скоро се занимавам с програмиране на МК и сега искам да си програмирам чипа да извежда данни на дисплея.
използвам:
  чип-mega8L
  дисплей-RC1602
  текст-редактор-avrStudio5
написах следния код:

#include <avr/io.h>
#include <util/delay.h>

void lcd_cmd(unsigned char command){//LCD- 5-RS, 6-R/W , 7-E
PORTB = command;
PORTD = 0b10000000;//PORTD |= 1<<PIND7 | 0<<PIND6 | 0<<PIND5; //enable to write, send COMMAND
_delay_ms(2);
PORTD = 0x00;
_delay_ms(2);
}

void lcd_data(unsigned char data){
PORTB = data;
PORTD = 0b10100000;//PORTD |=1<<PIND5 | 0<<PIND6 | 1<<PIND7; //enable to write, send DATA
_delay_ms(2);
PORTD = 0b00100000;//PORTD |=1<<PIND5 | 0<<PIND6 | 0<<PIND7;
_delay_ms(2);
}

void lcd_send_string(char* string){//THIS FUNCTION WORK FOR STRING
while(*string){//Send value of pointer as data to LCD
lcd_data(*string);//Increment string pointer
string++;
}
}

int main(void){
//Settings PORTS
DDRD |= 1<<PIND5 | 1<<PIND6 | 1<<PIND7 ;//port D open to OUTPUT LCD-RS,R/W,E
DDRB = 0xff;//port B output


_delay_ms(16);

lcd_cmd(0x30);   
lcd_cmd(0x0F);   
lcd_cmd(0x01);   
lcd_cmd(0x02);   
lcd_send_string("A");

while(1){

}
return 0;
}
Предполагам ,че някъде правя грешка, но не съм сигурен.
Доста пъти разгледах даташийта на дисплея ,но...
На "proteus" направих почти същия код на примерен дисплей 16x2,работи нормално.

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Програмиране на LCD-dysplay
« Отговор #1 -: Януари 25, 2013, 04:53:03 pm »
Кодът има една видима грешка, а тя е както следва: липса на дефиниране на честотата на процесора което води до грешно отчитане на времето с функцията _delay_ms().

В AtmelStudio 6 компилаторът те предупреждава ако честотата не е дефинирана, препоръчвам ти да ползваш най-новата версия на студиото, то все пак решава особенно много проблеми и спестява много нерви.:)

П.П.
Този линк може да ти се окаже полезен, макар и за друг процесор:
http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=879

Поздрави и успех,
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

mihail19871987

  • Новодошъл
  • *****
  • Публикации: 4
    • Профил
Програмиране на LCD-dysplay
« Отговор #2 -: Януари 26, 2013, 12:07:03 am »
Мерси за инфото ще го имам на предвид.:)

Обаче проблема ми бил в дисплея , трябвало е да си настроя подсвета с трим. и така, излезе буквата А...
Обаче, ОБАЧЕ забелязвам много странен проблем, единия чип на дисплея грее толкова много че може да те опари, съответно и стабилизатора(20 на 5v. 500ma) ми ми също е като котлон и това става в периода от10-15 секунди след като се покаже буквата.
Захранването ми е от адаптер 220 на 12v 500ma.
Има ли вероятност LCD-то да е нещо калпаво...?

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Програмиране на LCD-dysplay
« Отговор #3 -: Януари 26, 2013, 01:37:53 pm »
Проблемите които водят до такъв ефект са много, засега провери следните три неща:

1.Адапторът на променлив или прав ток е?
2.Ако се премахне дисплея захранването още ли прегрява?
3.Ако закачиш дисплея на друго захранване отново ли прегрява?

Тези въпроси обхващат голяма част от възможностите в зависимост от отговорите ще се опитам да разбера какъв е проблема. :)

Успех,
когато можеж пиши.
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

mihail19871987

  • Новодошъл
  • *****
  • Публикации: 4
    • Профил
Програмиране на LCD-dysplay
« Отговор #4 -: Януари 26, 2013, 04:11:53 pm »
Така..
С адаптера зареждам един фенер и реших и да го ползвам за съответните цели.
(1)input 230-240a.c. 50hz 11w
out 9v.d.c 500ma

(2)Когато извадя кабела на 2-ри пин. VCC ,стабилизатора ми спира да грее.
Когато е закачен втори пин. VCC+5 стабилизатор започва да грее ,но чипа на дисплея не.
Когато се появи информация на дисплея и чип започва да грее и стабилизатора също.

(3)Нямам друго захранване да опитам...

Сега взех друг дисплей, като ми остане време ще го закача да го пробвам  и ще пиша.

А иначе сега когато си програмирам, го включвам за 10-15 секунди и така засега ми върши работа :-D

mihail19871987

  • Новодошъл
  • *****
  • Публикации: 4
    • Профил
Програмиране на LCD-dysplay
« Отговор #5 -: Януари 29, 2013, 08:24:31 am »
Смених дисплея.
Повредата е в него, явно е бил дефектен, последно забелязах, че и половината от него изобщо не изобразяваше нищо от (x07-x0f и x48-x50) .