LCD и Atmega8.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Сообщение kushman »

Добрый день!
Есть дисплей 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) {}          
}
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Воспользуйтесь кодевиженовским визардом.
Docendo discimus
Контактная информация:
Реклама
Ответить

Вернуться в «Периферия»