Покажи участието

От тук може да видиш всички публикации на този потребител.


Теми - mihail19871987

Страници: [1]
1
Практика / Програмиране на 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,работи нормално.

Страници: [1]