Добрый день!
Есть дисплей MT16S2D, когда то его подключал к ADuC845, все прекрасно работало, под адук писал код в кейле. Решил его же подключить к Atmega8, я их только осваиваю, и взял тот же код, и переделал его под CodeVisionAVR. И не работает. В чем может быть дело? Код ниже.
Код:
#include <mega8.h>
#include <lcd.h>
#include <delay.h>
#define set_first_line 0x80
#define set_second_line 0xC0
#define RS PORTB.2
#define RW PORTB.1
#define En PORTB.0
void send_lcd_4bit(unsigned char send_data) {
PORTD=send_data;
En=1;
delay_ms(30);
En=0;
}
void send_lcd_cmd(unsigned char send_data) {
RS=0;
send_lcd_4bit(send_data);
send_data=(send_data << 4);
send_lcd_4bit(send_data);
}
void send_lcd_data(unsigned char send_data) {
RS=1;
send_lcd_4bit(send_data);
send_data=(send_data << 4);
send_lcd_4bit(send_data);
}
void LCD_Init(void) {
send_lcd_4bit(0x30);
delay_ms(30);
send_lcd_4bit(0x30);
delay_ms(30);
send_lcd_4bit(0x30);
delay_ms(30);
send_lcd_4bit(0x20);
delay_ms(30);
send_lcd_cmd(0x28);
delay_ms(30);
send_lcd_cmd(0x0C);
delay_ms(30);
send_lcd_cmd(0x06);
delay_ms(30);
send_lcd_cmd(0x01);
}
void send_lcd_symbol(unsigned char adress, unsigned char send_data) {
send_lcd_cmd(adress);
send_lcd_data(send_data);
}
void main(void) {
DDRB=0xFF;
DDRD=0xFF;
DDRC=0xFF;
LCD_Init();
delay_ms(100);
send_lcd_symbol(set_first_line, 'Y');
while(1) {}
}