您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机KS0108 128X64 LCD C语言AVR程序 正文
KS0108 128X64 LCD C语言AVR程序

KS0108 128X64 LCD C语言AVR程序

点击数:7191 次   录入时间:03-04 12:03:00   整理:http://www.55dianzi.com   AVR单片机
"限",0xFF,0x81,0x99,0xE7,0x00,0xFF,0x25,0xE5,0x25,0xBF,0x40,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0x04,0x02,0x01,0x02,0x04,0x00,
"公",0x20,0x10,0x08,0x07,0xC0,0x30,0x83,0x0C,0x10,0x20,0x20,0x00,0x00,0x04,0x06,0x05,0x04,0x04,0x02,0x03,0x06,0x00,0x00,0x00,
"司",0x08,0x09,0xE9,0x29,0x29,0x29,0xED,0x09,0x01,0xFF,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x04,0x04,0x07,0x00,0x00,
};

unsigned char GetPage(void) /*得到当前页*/
{
    return CurPage;
}

unsigned char GetCol(void) /*得到当前列*/
{
    return CurCol;
}

void SetPageCol(unsigned char upage, unsigned char ucol) /* 设置液晶的页和列 */
{
    CurPage = upage;
    CurCol = ucol;
    if(ucol<64)
    {
        set_page_L(upage);
        set_col_addr_L(ucol);
    }
    else
    {
        set_page_R(upage);
        set_col_addr_R(ucol-64);
    }
}

/* 设置当前显示的页和列 */
void SetRowCol(unsigned char urow, unsigned char ucol) 
{
    unsigned char page;
    CurRow = urow;
    CurCol = ucol;
    
    switch(urow)
    {
        case 1:
            page=0;
            CurOffset=1;
            break;
        case 2:
            page=1;
            CurOffset=2;
            break;
        case 3:
            page=3;
            CurOffset=1;
            break;
        case 4:
            page=4;
            CurOffset=2;
            break;
        case 5:
            page=6;
            CurOffset=1;
            break;
    }
    SetPageCol(page,ucol);
}

void disp_ch(unsigned char c)
{
    unsigned char k,j,uPage,uCol,ch_r,ch_w;
    unsigned char width;
    unsigned char len;
    uPage = GetPage();
    uCol = GetCol();
    len=sizeof(ASC_16)/sizeof(ASC_16[0]);
    for(k=0;k<len;k++)
    {
        if(c == ASC_16[k].Index[0] ) break;
    }
    if(k<len)
    {
        
        if(c==’-’||c==’:’) 
            width=ASC_CHR_WIDTH-2;
        else if(c==’|’)
            width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
        else 
            width=ASC_CHR_WIDTH;
        
        if(CurOffset==1) //下半部是写半个字节
        {
            for(j=0;j<width;j++)
            {
                SetPageCol(uPage,uCol+j);
                ch_w=ASC_16[k].Msk[j];
                if(uCol+j<64)    write_LCD(LEFT,DATA,ch_w); 
                else write_LCD(RIGHT,DATA,ch_w);
            }
            SetPageCol(uPage+1,uCol);
            
            for(j=0;j<width;j++)
            {
                SetPageCol(uPage+1,uCol+j);
                if(uCol+j<64) ch_r=read_LCD(LEFT);
                else ch_r=read_LCD(RIGHT);
                ch_r&=0xf0;
                ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j]&0x0f; 
                ch_w|=ch_r;
                SetPageCol(uPage+1,uCol+j);
                if(uCol+j<64)    write_LCD(LEFT,DATA,ch_w); 
                else write_LCD(RIGHT,DATA,ch_w); 
            }
        }
        else //上半部是写半个字节
        {
            for(j=0;j<width;j++)
            {

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


本文关键字:程序  C语言  AVR单片机单片机-工控设备 - AVR单片机