Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15450378
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2007-05-17 15:05:38

/*---------------------------------------------------------------------------
//【函数名】         void Glcd_dis_block_xx_base(uint8* data,uint8 n4page,uint8 x,uint8 width,uint8 height)
//【创建人及创建时间】 xxxx  2005-09-25  20:30
//【修改人及修改时间】 
//【修改原因】         
//【功能描述】          data  数据起始指针
                        n4page  数据显示起始页地址(分为4页,考虑到8*8点阵汉字的显示)
                        x     数据显示列
                        width 数据宽度
                        height 数据高度
                        数据块显示(汉字,ASCII和图片数据流)
                        数据流顺序:左上角->右上角->左下角->右下角
                        左         ----->     右
                        0         0
                        1         1
                        2         2
                        3         3
                        4         4
                        5         5
                        6         6
                        7         7
                     第1字节   第2字节
                        0         0
                        1         1
                        2         2
                        3         3
                        4         4
                        5         5
                        6         6
                        7         7
                     第16字节   第17字节
//--------------------------------------------------------------------------*/
void Glcd_dis_block_xx_base(uint8* data,uint8 n4page,uint8 x,uint8 height,uint8 width)//height行、width列
{uint8 i,j;
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,Glcd_a0);           //向lcd传送命令
    if(x == Gnull)
    {
        if(Gcursor > 121)Gcursor = 0;
        x = Gcursor;                                          //接着上一次的指针位置继续显示
        Gcursor += width;
    }else {Gcursor = x + width;};
   
    i = height / 8;
    if(height % 8)i++;
    height = i;
    for(i = 0;i < height;i++)
    {
        //n4page = n4page + i;
        //最后n4page++;
        //-----------------
        AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,Glcd_a0);       //向lcd传送命令
        if(x > 60)
        {
            OutSD(0xb8 + n4page);                             //第cur_page页
            OutSD(x % 61);                                    //重新制定列地址,第x列,否则接续显示
        }else
            {
                OutMD(0xb8 + n4page);                         //第cur_page页
                OutMD(x);                                     //重新制定列地址,第x列,否则接续显示
            }
        //-----------------
        AT91F_PIO_SetOutput(AT91C_BASE_PIOA,Glcd_a0);         //向lcd传送数据
        for(j = x;j < x + width;j++)
        {
            if(j == 61)
            {//如果数据从左边开始显示,到要跨越两屏
                AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,Glcd_a0);//向lcd传送命令
                OutSD(0xb8 + n4page);                         //第cur_page页
                OutSD(0x00);                                  //第0列
                AT91F_PIO_SetOutput(AT91C_BASE_PIOA,Glcd_a0); //向lcd传送数据
            }
            if(j > 60)OutSD(*data++);                         //送数据
            else OutMD(*data++);                              //送数据
        }
        n4page++;
    }
    GSpi_bus_busy = false;
}
阅读(1324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~