Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

помогите с DG16080

Вс июн 17, 2012 12:57:37

как инициализировать (пишу в codevision)
:(

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

Пн июн 18, 2012 07:20:01

Код:
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();
}
//----------

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

Пн июн 18, 2012 19:51:50

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

только вот в чем проблема немогу вывести на дисплей хоть что нибудь :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

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

Пн июн 18, 2012 20:40:51

покажи lcdcomand_write
а лучше весь проект.
Текст, который я привел - рабочий.
Посмотри задержки по выдаче инфы.
Мне как бы проще написать на кв свой текст, чем это править...

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

Пн июн 18, 2012 20:49:16

Код:
#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();
 }
   

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

Пн июн 18, 2012 21:25:38

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

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

где wait(); - это задержка 3 микросекунды, зачем у тебя такие длинные задержки...

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

Пн июн 18, 2012 21:36:34

:))) вроде работает только отображать не хочет :cry:

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

Пн июн 18, 2012 21:44:48

Ну поправь код... Стробирование хромает...

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

Пн июн 18, 2012 21:46:59

Код:
#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 ();
 }

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

Пн июн 18, 2012 22:45:07

И что ?
Разница есть ?

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

Пн июн 18, 2012 23:08:07

ну экран мусором не засыпает :)))
а вот вывести хоть один пиксель не могу :cry:

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

Пн июн 18, 2012 23:44:50

Ну это как бы радует.
А на фига здесь сдвигаешь ?
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);
}

удостовериться, что с железом все нормально.

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

Вт июн 19, 2012 15:45:07

извиняюсь у меня DG16080-11 на LC7981 с touch-screen
но они ничего не хотят рисовать (у мну их 3шт) :cry: :cry:

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

Ср июн 20, 2012 10:30:45

У меня как бы тоже, но работают.На пике.
ждите выходных, возможно, меня пробьет портировать на мегу8 и потестить в железе.

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

Ср июн 20, 2012 15:05:15

а скажите плиз на какой частоте должен работать мк (а то у меня на 8Мгц)

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

Ср июн 20, 2012 16:55:58

Да причем здесь частота контроллера...

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

Ср июн 20, 2012 17:56:52

да я уже не пойму в чем может быть дело :shock: (должно оно работать !!!!!) только как запустить :dont_know:

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

Вс июн 24, 2012 23:35:30

Ура запустил :)))

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

Пн июн 25, 2012 00:14:15

(c) Хор имени пятницкого по этому поводу именно ?
Это Жванецкий, но у всех остальных как бы тоже работает.
Разделяя Вашу радость... :)

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

Пн июн 25, 2012 14:46:58

по поводу отображения шрифта 32x32 pixel сможете подсказать чё и как ? :roll:
Тема закрыта