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

icc avr LCD1602显示屏程序

点击数:7259 次   录入时间:03-04 12:03:21   整理:http://www.55dianzi.com   AVR单片机
        SET_D7;
        DELAY();
        SET_E;   
        DELAY();
/* 这里读取AC0-AC3位的值,程序不需记录AC0-AC3的值,所以不存储 */
        CLR_E;   
        DELAY();
        if(busyCounter==1000)
        {
            LCD1602Err=TRUE;    //标识LCD1602错误,方便上缴系统报错
            return ;            //避免由于LCD1602错误而导致程序阻塞
        }
        busyCounter++;
    }
    while(busySta);

    LCD1602Err=FALSE;
    CLR_E;
    OUT_BF;
}
/*--------------------------------------------------------------------
函数名称:LCD1602写操作
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
void write(bool flag,uint8 dat)    //flag=0:command,flag=1:data
{  
    bdat=dat;
    busy();
    if(flag)
        SET_RS;
    else
        CLR_RS;
    DELAY();
    CLR_RW;
    DELAY();
    if(bdat4)
        SET_D4;
    else
        CLR_D4;
    if(bdat5)
        SET_D5;
    else
        CLR_D5;
    if(bdat6)
        SET_D6;
    else
        CLR_D6;
    if(bdat7)
        SET_D7;
    else
        CLR_D7;
    DELAY();
    SET_E;    
    DELAY();
    CLR_E;
    DELAY(); 

    if(bdat0)
        SET_D4;
    else
        CLR_D4;
    if(bdat1)
        SET_D5;
    else
        CLR_D5;
    if(bdat2)
        SET_D6;
    else
        CLR_D6;
    if(bdat3)
        SET_D7;
    else
        CLR_D7;
    DELAY();
    SET_E;        
    DELAY();
    CLR_E;
    DELAY();
}
/*--------------------------------------------------------------------
函数名称:LCD1602读操作
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
//void read(uint8 adr)
//{    
//}
/*--------------------------------------------------------------------
函数名称:LCD1602设置CGRAM内容
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:调用LCD1602_setCG(0,userCh),则写入用户定义的字符"userCh"
输    入:"adr"数据范围:0-8,"buf"为用户需要写入的字符"userCh"
返    回:无
--------------------------------------------------------------------*/
void LCD1602_setCGRAM(uint8 adr,const uint8 buf[8])
{    
    uint8 i;
    write(0,0x40+adr*8);
    for(i=0;i<8;i++)
        write(1,buf[i]);
/* 不得采样下面写法,因为传入的是数组,最后一个不是’\0’ */
    //while(*buf)
        //write(1,*buf++);
}
/*--------------------------------------------------------------------
函数名称:LCD1602命令设置
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:
输    入:"CLR_SCR"/"GO_HOME"/"AC_INC"/"AC_DEC"...
返    回:无
--------------------------------------------------------------------*/
//----    function  ------  1  --------  0  ----LcdWordPos--
//        dispEn        |   Enable    |  DISAble    |    bit2
//        cursorEn    |   Enable    |  Disable    |    bit1
//        blinkEn        |   Enable    |  Disable    |    bit0
//------------------------------------------------------
//        isACinc        |    INC_AC  |  DEC_AC    |    bit1
//        shiftEn        |   Enable    |  Disable    |    bit0
//------------------------------------------------------
void LCD1602_setCmd(uint8  *str)
{
    static bool dispEn  =0;
    static bool cursorEn=0;
    static bool blinkEn =0;
    static bool shiftEn =0;
    static bool isACinc =0;
    
    if(!strcmp(str,"CLR_SCR"))            //clear screen
        write(0,0x01);

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


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