您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机icc avr LCD1602显示屏程序 正文
icc avr LCD1602显示屏程序

icc avr LCD1602显示屏程序

点击数:7259 次   录入时间:03-04 12:03:21   整理:http://www.55dianzi.com   AVR单片机
        blinkEn=1;
        if(dispEn)
            if(cursorEn)
                write(0,0x0F);
            else
                write(0,0x0D);
        else
            if(cursorEn)
                write(0,0x0B);
            else
                write(0,0x09);
    }
    else if(!strcmp(str,"DIS_BLINK"))    //disable blink cursor
    {
        blinkEn=0;
        if(dispEn)
            if(cursorEn)
                write(0,0x0E);
            else
                write(0,0x0C);
        else
            if(cursorEn)
                write(0,0x0A);
            else
                write(0,0x08);
    }
/*--------------------------------------------------
dispEn & cursorEn & blinkEn共用一个命令设置
--------------------------------------------------*/
    else if(!strcmp(str,"RIGHT_SCR"))    //right shift screen
        write(0,0x1c);
    else if(!strcmp(str,"LEFT_SCR"))    //left shift screen
        write(0,0x18);
    else if(!strcmp(str,"RIGHT_CURS"))    //right shift cursor
        write(0,0x14);
    else if(!strcmp(str,"LEFT_CURS"))    //left shift cursor
        write(0,0x10);
}
/*--------------------------------------------------------------------
函数名称:LCD1602初始化
函数功能:
注意事项:
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
void LCD1602_init(void)
{   
    OUT_RS;
    OUT_RW;
    OUT_E;
    OUT_D4;
    OUT_D5;
    OUT_D6;
    OUT_D7;
    delay50ms(1);

    CLR_D7;
    CLR_D6;
    SET_D5;
    SET_D4;
    DELAY();
    CLR_RS;
    DELAY();
    CLR_RW;                         

    SET_E;
    DELAY();
    CLR_E;
    delay50us(200);        
    SET_E;
    DELAY();
    CLR_E;
    delay50us(200);    
    SET_E;
    DELAY();
    CLR_E;
    delay50us(200);    
    
    CLR_D7;
    CLR_D6;
    SET_D5;
    CLR_D4;
    DELAY();
    SET_E;
    DELAY();
    CLR_E;                           
    DELAY();
    LCD1602_setCmd("OPEN_LCD");
    LCD1602_setCmd("CLR_SCR");
    LCD1602_setCmd("INC_AC");
    //LCD1602_setCmd("OPEN_CURS");
    //LCD1602_setCmd("GO_HOME");
}
/*--------------------------------------------------------------------
  宏名称:设置AC值
  宏功能:设置AC值啦
注意事项:
提示说明:
输    入:
返    回:无
--------------------------------------------------------------------*/
#define LCD1602_setAC(adr) write(0,adr)
/*--------------------------------------------------------------------
函数名称:输出一个字符
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:调用LCD1602_putc(0x80,’A’),则在第一行第一个字符处输出’A’
输    入:
返    回:无
--------------------------------------------------------------------*/
void LCD1602_putc(uint8 adr,uint8 ch)
{
    write(0,adr);
    write(1,ch);
}
/*--------------------------------------------------------------------
函数名称:输出一个字符串
函数功能:
注意事项:无
提示说明:调用LCD1602_puts(0x80,"waveShare"),则从第一行第一个位置开始输出"waveShare"
输    入:
返    回:无
--------------------------------------------------------------------*/
void LCD1602_puts(uint8 startAdr,uint8 *str)
{
    /*
    while(*str)
    {
        LCD1602_putc(addr++,*str++);
    }
    */
    //LCD1602_setCmd("AC++");
    write(0,startAdr);
    while(*str)
        write(1,*str++);
}
/*--------------------------------------------------------------------
函数名称:输出一个数值(带0)
函数功能:有时候你可能不是需要"123",而是需要"00123"吧
注意事项:无
提示说明:调用LCD1602_putd0(0x8F,123,5),则从0x8B开始到0X8F输出"00123"
输    入:
返    回:无
--------------------------------------------------------------------*/
//for example:dat=123,length=6,output 000123 

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:程序  显示屏  AVR单片机单片机-工控设备 - AVR单片机