Ejemplo n.º 1
0
//写指令
void WriteCommandLCD(unsigned char WCLCD) //BuysC为0时忽略忙检测
{
 ReadStatusLCD(); //根据需要检测忙 
 LCD_RS(0);
 LCD_RW(0);
 LCD_EN(0);
 Delay_us(1);
 LCD_WriteData(WCLCD);
 LCD_EN(1);
 Delay_us(1);
 LCD_EN(0); 
}
Ejemplo n.º 2
0
//写数据
void WriteDataLCD(unsigned char WDLCD)
{
	ReadStatusLCD(); //检测忙 
	LCD_RS(1);
	LCD_RW(0);
	LCD_EN(0);
	Delay_us(1);
	LCD_WriteData(WDLCD);
	LCD_EN(1);
	Delay_us(1);
	LCD_EN(0);
}
Ejemplo n.º 3
0
uint8_t
LCD_read(uint8_t RS)
{
    volatile uint8_t buf = 0;
    LCD_DATA_PORT->DIR &= ~(0xF0);
    LCD_RS(RS);
    LCD_RW(1);    
    LCD_EN(1);
    LCD_EN(0);
    buf = LCD_DATA_PORT->DATA & 0xF0;
    LCD_EN(1);
    LCD_EN(0);
    buf |= LCD_DATA_PORT->DATA >> 4;
    return buf;
}
Ejemplo n.º 4
0
void
__LCD_write(uint8_t RS,uint8_t data,uint8_t wait){
    LCD_DATA_PORT->DIR |= 0xF0;
    LCD_RS(RS);
    LCD_RW(0);    
    LCD_DATA_PORT->DATA = (LCD_CONTROL_PORT->DATA & ~(0xF0))|(data&0xF0);
    LCD_EN(1);
    LCD_EN(0);
    data <<=4;   
    LCD_DATA_PORT->DATA = (LCD_CONTROL_PORT->DATA & ~(0xF0))|(data&0xF0);
    LCD_EN(1);
    LCD_EN(0);
    if(wait){
        while(LCD_read(0) & 0x80);
    }
}
Ejemplo n.º 5
0
//读状态
void ReadStatusLCD(void)
{ 
 unsigned char  lcd_status;
 
 LCD_RS(0);
 LCD_RW(1); 
 LCD_Data_In();
 do
 {
  LCD_EN(1);
  Delay_us(1);
  lcd_status=GPIO_ReadInputData( LCD12864_GPIO);
  LCD_EN(0);
  }
  while (lcd_status&Busy); //检测忙信号
  LCD_Data_Out(); 
}
Ejemplo n.º 6
0
/**
 * Toggles enable pin
 */
static void lcdToggleEn() {
	LCD_EN(1);
	delay_us(LCD_DELAY_EN);		/* E Pulse Width (Minimum: 450 ns) */
	LCD_EN(0);
}