помогите с DG16080

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

помогите с DG16080

Сообщение igonzo »

как инициализировать (пишу в codevision)
:(
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

Код: Выделить всё

void lcd_graphics_init(void)
{
	//	unsigned char commandData;
	lcd_res_low();
	lcd_enable_low();
	lcd_rs_low();
	lcd_cs_low();
	DelayMs(1);
	lcd_res_high();
	DelayMs(50);

	lcd_write_command(0x00,0x32);
	lcd_write_command(0x01,0x77);
	lcd_write_command(0x02,(LCD_GRAPHIC_WIDTH / 8)-1);
	lcd_write_command(0x03,0x7F);
	lcd_write_command(0x04,0x07); 
	lcd_write_command(0x08,0x00);
	lcd_write_command(0x09,0x00);
	lcd_write_command(0x0A,0x00);
	lcd_write_command(0x0B,0x00);
	lcd_graphics_clear();
}
//
void lcd_write_command(unsigned char command, unsigned char data)
{
	lcd_writecom(command);    
	wait();   
	lcd_writedat(data);      
	wait();
}
//
//---------------------------------------------------------------
void lcd_writedat(unsigned char byte)
{
	lcd_rs_low();
	lcd_rw_low();
	wait();
	fnSetLcdData(byte);
	wait();
	lcd_strobe_enable();
}
//------------------------------------------
void lcd_writecom(unsigned char byte)
{
	lcd_rs_high();
	lcd_rw_low();
	wait();
	fnSetLcdData(byte);
	wait();
	lcd_strobe_enable();
}
//-------------------------------------------
Реклама
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

громное спасибо :))

только вот в чем проблема немогу вывести на дисплей хоть что нибудь :shock:
если можете посмотрите и пхните в нужном направлении :oops:

Код: Выделить всё

#include <mega8.h>
#include <atmega8_init.h>
#include <define.h>
#include <lc7981.h>
#include <delay.h>
  
void main()
 {
  atmega8_init(); 
  glcd_init();
  lcd_clear();
  lcd_plot_pixel (5,5,1);
  
  while (1)
      {

      }
 }

Код: Выделить всё

void lcd_clear()
  {
   int i;
   
   lcdcomand_write(0x0A,0x00);
                       
   lcdcomand_write(0x0B,0x00);
   
   lcd_com (0x0C); 
   
   for(i=0; i<160*80/8; i++)
    {  
      lcd_dat(0x00);
    } 
   
  }

 void lcd_setadress( unsigned char x, unsigned char y )
 {
    unsigned short pos;
    pos = ((y*160)+x)/8;
	lcdcomand_write(0x0A,pos);				// writeadress low
    lcdcomand_write(0x0B,pos);   			// writeadress high
 } 
 
 void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {
	unsigned char pos;
	lcd_setadress(x, y);
	pos = x%8;

	if (state == 1) 
		lcdcomand_write(0x0F, pos&0xff);
	else 
		lcdcomand_write(0x0E, pos>>8);
}
 
 void glcd_init()
 { 
  RESET = 0;
  E = 0;
  RS = 0;
  CS = 0;
  RESET = 1;
  delay_ms(10);
  
  lcdcomand_write(0x00,0x32);
  lcdcomand_write(0x01,0x07); //размер символа
  lcdcomand_write(0x02,0x13); //СИМВОЛОВ НА ЛИНИЮ 20
  lcdcomand_write(0x03,0x7F); //
  lcdcomand_write(0x04,0x07);
  lcdcomand_write(0x08,0x00);
  lcdcomand_write(0x09,0x00);
  lcdcomand_write(0x0A,0x00);
  lcdcomand_write(0x0B,0x00);
  lcd_clear();
 } 
   

Код: Выделить всё

#define lcd_data PORTD
#define lcd_ctrl_data DDRD
#define lcd_read_data PIND

#define RS PORTC.0
#define RS_BUZ PINC.0
#define RW PORTC.1
#define RW_BUZ PINC.1
#define E PORTC.2
#define CS PORTC.3
#define RESET PORTC.4


#define READ_DISPLAY PORTC.1 = 1
#define WRITE_DISPLAY PORTC.1 = 0
#define COMAND PORTC.0 = 1
#define DATA PORTC.0 = 0
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

покажи lcdcomand_write
а лучше весь проект.
Текст, который я привел - рабочий.
Посмотри задержки по выдаче инфы.
Мне как бы проще написать на кв свой текст, чем это править...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

Код: Выделить всё

#include <delay.h>

 void lcd_com (char com)
  {
   RS = 1;
   RW = 0;
   delay_ms(1);
   lcd_data = com;
   delay_ms(1);
   E = 1; 
  }
  
 void lcd_dat (char dat)
  {
   RS = 0;
   RW = 0;
   delay_ms(1);
   lcd_data = dat;
   delay_ms(1);
  } 

 void lcdcomand_write(char comand,char data)
  {
   
   lcd_ctrl_data = 0xFF;
   DDRC = 0x1F;
   
   RS = 1;
   RW = 0;
   delay_us(2);
   lcd_data = comand;
   delay_us(2);
   E = 1; 
   
   
   RS = 0;
   RW = 0;
   delay_us(2);
   lcd_data = data;
   delay_us(2);
   
  }  
  
 void lcd_clear()
  {
   int i;
   
   lcdcomand_write(0x0A,0x00);
                       
   lcdcomand_write(0x0B,0x00);
   
   lcd_com (0x0C); 
   
   for(i=0; i<160*80/8; i++)
    {  
      lcd_dat(0x00);
    } 
   
  }

 void lcd_setadress( unsigned char x, unsigned char y )
 {
    unsigned short pos;
    pos = ((y*160)+x)/8;
	lcdcomand_write(0x0A,pos);				// writeadress low
    lcdcomand_write(0x0B,pos);   			// writeadress high
 } 
 
 void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {
	unsigned char pos;
	lcd_setadress(x, y);
	pos = x%8;

	if (state == 1) 
		lcdcomand_write(0x0F, pos&0xff);
	else 
		lcdcomand_write(0x0E, pos>>8);
}
 
 void glcd_init()
 { 
  RESET = 0;
  E = 0;
  RS = 0;
  CS = 0;
  RESET = 1;
  delay_ms(10);
  
  lcdcomand_write(0x00,0x32);
  lcdcomand_write(0x01,0x07); //размер символа
  lcdcomand_write(0x02,0x13); //СИМВОЛОВ НА ЛИНИЮ 20
  lcdcomand_write(0x03,0x7F); //
  lcdcomand_write(0x04,0x07);
  lcdcomand_write(0x08,0x00);
  lcdcomand_write(0x09,0x00);
  lcdcomand_write(0x0A,0x00);
  lcdcomand_write(0x0B,0x00);
  lcd_clear();
 } 
   
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

Не сбрасываешь енейбл

void lcd_strobe_enable(void)
{
wait();
lcd_enable_high();
wait();
lcd_enable_low();
wait();
}

где wait(); - это задержка 3 микросекунды, зачем у тебя такие длинные задержки...
Реклама
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

:))) вроде работает только отображать не хочет :cry:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

Ну поправь код... Стробирование хромает...
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

Код: Выделить всё

#include <delay.h>

 void lsd_buz ()
  {
   lcd_ctrl_data = 0x00;
   RS = 1;
   RW = 1;
   
   while(lcd_read_data == 0x80)
    {
     delay_ms(3);
    }
   
  }
  
 void lcd_strobe_enable(void)
 {
  delay_us(3);
  E = 1;
  delay_us(3);
  E = 0;
  delay_us(3);
 } 
  
 void lcd_com (char com)
  {
   RS = 1;
   RW = 0;
   delay_us(3);
   lcd_data = com;
   delay_us(3);
   lcd_strobe_enable(); 
  }
  
 void lcd_dat (char dat)
  {
   RS = 0;
   RW = 0;
   delay_us(3);
   lcd_data = dat;
   delay_us(3);
   lcd_strobe_enable();
  } 

 void lcdcomand_write(char comand,char data)
  {
   
   lcd_ctrl_data = 0xFF;
   DDRC = 0x1F;
   
   RS = 1;
   RW = 0;
   delay_us(3);
   lcd_data = comand;
   delay_us(3);
   lcd_strobe_enable();  
   
   
   RS = 0;
   RW = 0;
   delay_us(3);
   lcd_data = data;
   delay_us(3);
   lcd_strobe_enable();
   
  }  
  
 void lcd_clear()
  {
   int i;
   
   lcdcomand_write(0x0A,0x00);
                       
   lcdcomand_write(0x0B,0x00);
   
   lcd_com (0x0C); 
   
   for(i=0; i<160*80/8; i++)
    {  
      lcd_dat(0x00);
    } 
   
  }

 void lcd_setadress( unsigned char x, unsigned char y )
 {
    unsigned short pos;
    pos = ((y*160)+x)/8;
	lcdcomand_write(0x0A,pos);				// writeadress low
    lcdcomand_write(0x0B,pos);   			// writeadress high
 } 
 
 void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {
	unsigned char pos;
	lcd_setadress(x, y);
	pos = x%8;

	if (state == 1) 
		lcdcomand_write(0x0F, pos&0xff);
	else 
		lcdcomand_write(0x0E, pos>>8);
}
 
 void glcd_init()
 { 
  RESET = 0;
  E = 0;
  RS = 0;
  CS = 0;
  RESET = 1;
  delay_ms(10);
  
  lcdcomand_write(0x00,0x32);
  lsd_buz ();
  lcdcomand_write(0x01,0x07); //размер символа
  lsd_buz ();
  lcdcomand_write(0x02,0x13); //СИМВОЛОВ НА ЛИНИЮ 20 
  lsd_buz ();
  lcdcomand_write(0x03,0x7F); // 
  lsd_buz ();
  lcdcomand_write(0x04,0x07);
  lsd_buz ();
  lcdcomand_write(0x08,0x00);
  lsd_buz ();
  lcdcomand_write(0x09,0x00);
  lsd_buz ();
  lcdcomand_write(0x0A,0x00);
  lsd_buz ();
  lcdcomand_write(0x0B,0x00);
  lsd_buz ();
  lcd_clear();
  lsd_buz ();
 } 
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

И что ?
Разница есть ?
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

ну экран мусором не засыпает :)))
а вот вывести хоть один пиксель не могу :cry:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

Ну это как бы радует.
А на фига здесь сдвигаешь ?
void lcd_plot_pixel(unsigned short x, unsigned short y, unsigned char state) {

lcdcomand_write(0x0E, pos>>8);

Код: Выделить всё

void lcd_graphics_plot_pixel(unsigned char x, unsigned char y, unsigned char state)
{
	unsigned char pos;
	lcd_graphics_move(x, y);
	/* Since lcd_graphics_move() moves the cursor to a particular
	* byte, not bit, we need the relative distance to the specified
	* bit we are going to set/clear. */
	pos = x%8;
	if (state == PIXEL_ON)
		lcd_write_command(LCD_CMD_SET_BIT, pos);
	else
		lcd_write_command(LCD_CMD_CLEAR_BIT, pos);
}
хотя на вопрос, почему ничего нет, как бы невнятный ответ.
Заполни при очистке пол экрана нулями, а вторую чем нибудь типа

Код: Выделить всё

void lcd_graphics_clear(void)
{
	unsigned int i;
               lcd_write_command(0x0A,0x00);
                lcd_write_command(0x0B,0x00);
                for(i = 0; i < 800; i++)
                   {
	                   lcd_write_command(0x0C,0x00);
	               } 
                for(i = 800; i < 1600; i++)
                   {
	                   lcd_write_command(0x0C,0x55);
	               } 	               

                lcd_write_command(0x0A,0x00);
                lcd_write_command(0x0B,0x00);
}
удостовериться, что с железом все нормально.
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

извиняюсь у меня DG16080-11 на LC7981 с touch-screen
но они ничего не хотят рисовать (у мну их 3шт) :cry: :cry:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

У меня как бы тоже, но работают.На пике.
ждите выходных, возможно, меня пробьет портировать на мегу8 и потестить в железе.
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

а скажите плиз на какой частоте должен работать мк (а то у меня на 8Мгц)
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

Да причем здесь частота контроллера...
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

да я уже не пойму в чем может быть дело :shock: (должно оно работать !!!!!) только как запустить :dont_know:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

Ура запустил :)))
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: помогите с DG16080

Сообщение urry »

(c) Хор имени пятницкого по этому поводу именно ?
Это Жванецкий, но у всех остальных как бы тоже работает.
Разделяя Вашу радость... :)
Аватара пользователя
igonzo
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Re: помогите с DG16080

Сообщение igonzo »

по поводу отображения шрифта 32x32 pixel сможете подсказать чё и как ? :roll:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»