Example #1
0
void LCD_WrData(char d)
{
  LCD_Wr4(__swap_nibbles(d) | 0x10);
  Delay_us(10);
  LCD_Wr4(d | 0x10);
  Delay_us(50);
}
Example #2
0
void LCD_CommonFunc(unsigned char data)
{
#ifdef BUS_4BIT  
  unsigned char tmp; 
  tmp  = PORT_DATA & 0x0F;
  tmp |= (data & 0xF0);

  PORT_DATA = tmp;		//вывод старшей тетрады 
  SetBit(PORT_SIG_EN, EN);	        
  _delay_us(LCD_SPEED);
  ClearBit(PORT_SIG_EN, EN);	

  data = __swap_nibbles(data);
  tmp  = PORT_DATA & 0x0F;
  tmp |= (data & 0xF0);
 
  PORT_DATA = tmp;		//вывод младшей тетрады 
  SetBit(PORT_SIG_EN, EN);	        
  _delay_us(LCD_SPEED);
  ClearBit(PORT_SIG_EN, EN);	 
#else 
  PORT_DATA = data;		//вывод данных на шину индикатора 
  SetBit(PORT_SIG_EN, EN);	        //установка E в 1
  _delay_us(LCD_SPEED);
  ClearBit(PORT_SIG_EN, EN);	//установка E в 0 - записывающий фронт
#endif
}
Example #3
0
void LCD_WrCmd(char d)
{
  LCD_Wr4(__swap_nibbles(d) & 0x0F);
  Delay_us(10);
  LCD_Wr4(d & 0x0F);
  Delay_us(50);
}
Example #4
0
void LCD_Wait(void)
{
#ifdef CHECK_FLAG_BF
  #ifdef BUS_4BIT
  
  unsigned char data;
  DDRX_DATA &= 0x0F;            //конфигурируем порт на вход
  PORT_DATA |= 0xF0;	        //включаем pull-up резисторы
  SetBit(PORT_SIG_RW, RW);         //RW в 1 чтение из lcd
  ClearBit(PORT_SIG_RS, RS);	//RS в 0 команды
  do{
    SetBit(PORT_SIG_EN, EN);	
    _delay_us(LCD_SPEED);
    data = PIN_DATA & 0xF0;      //чтение данных с порта
    ClearBit(PORT_SIG_EN, EN);
    data = __swap_nibbles(data);
    SetBit(PORT_SIG_EN, EN);	
    _delay_us(LCD_SPEED);
    data |= PIN_DATA & 0xF0;      //чтение данных с порта
    ClearBit(PORT_SIG_EN, EN);
    data = __swap_nibbles(data);
  }while((data & (1<<FLAG_BF))!= 0 );
  ClearBit(PORT_SIG_RW, RW);
  DDRX_DATA |= 0xF0; 
  
  #else
  unsigned char data;
  DDRX_DATA = 0;                //конфигурируем порт на вход
  PORT_DATA = 0xFF;	        //включаем pull-up резисторы
  SetBit(PORT_SIG_RW, RW);         //RW в 1 чтение из lcd
  ClearBit(PORT_SIG_RS, RS);	//RS в 0 команды
  do{
    SetBit(PORT_SIG_EN, EN);	
    _delay_us(LCD_SPEED);
    data = PIN_DATA;            //чтение данных с порта
    ClearBit(PORT_SIG_EN, EN);	
  }while((data & (1<<FLAG_BF))!= 0 );
  ClearBit(PORT_SIG_RW, RW);
  DDRX_DATA = 0xFF; 
  #endif    
#else
  _delay_us(40);
#endif  
}