打印

12864程序谁帮我讲解

[复制链接]
884|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
默默登陆|  楼主 | 2015-3-27 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void init12864()
{
        unsigned char x,y;

        //字符初始化
        cmdwrite(0x30);         //选择基本指令,8位并行口
        cmdwrite(0x01);         //清零字符
        cmdwrite(0x02);         //地址复位
        cmdwrite(0x0c);         //显示开,游标关、游标反白关

        //图形初始化  
/*
绘图显示地址:64*32个字节,最多可以控制256*64点的二维绘图缓冲空间,
由扩充指令设定,由扩充指令更改,
由扩充指令先设置垂直地址,后设置水平地址,连续写入两个字节的数据完成垂直与水平的坐标地址
再写入两个字节的数据到绘图RAM,而地址计数器会自动加一。步骤如下:
1、先将垂直坐标写入绘图RAM地址
2、再讲水平坐标写入绘图RAM地址
3、将D15-D8写入到RAM中,第一个字节
4、讲D7-D0写入到RAMZ中,第二个字节
*/

        cmdwrite(0x34);        //开启扩展指令,关闭图形显示

        for(y = 0; y < 32; y++)        //清零图形显示缓冲区
        {
                cmdwrite(0x80|y);
                cmdwrite(0x80|0);
                for(x = 0; x < 32; x++)
                {
                        datwrite(0x00);
                }
        }
        cmdwrite(0x36);        //开启图形模式显示       
}
////////////////////////////////////////////////////////////////////
void lcdshowstring(unsigned char x, unsigned char y, unsigned char *str)
{
        unsigned char addr;
        //由输入的显示坐标计算DDRAM的地址
        x >>= 4;
        y >>= 4;
        if(y >= 2)
        {
                y -= 2;
                x += 8;
        }
        addr = y*16 + x;
        //由初始DDRAM地址连续写入字符串
        cmdwrite(0x30);//启动DDRAM操作
        cmdwrite(0x80|addr);
        while(*str != '\0')
        {
                datwrite(*str);
                str++;
        }               
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void lcdshowimage(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char *img)
{
        signed int i;
        unsigned char xi,yi;
        unsigned char xt,yt;
       
        x >>= 4;
        w >>= 3;
        i = 0;
        cmdwrite(0x36);//启动CGRAM操作
        for(yi = 0; yi < h; yi++)       
        {
                yt = y +yi;
                xt = x;
                if(yt >= 32)
                {
                        yt -= 32;
                        xt += 8;
                }
                cmdwrite(0x80|yt);
                cmdwrite(0x80|xt);
                for(xi = 0; xi < w; xi++)
                {
                        datwrite(img[i++]);
                }
        }
}
///////////////////////////////////////////////////////////////////////////////////////////////
void clearscreen(unsigned char x, unsigned char y, unsigned char w ,unsigned char h)
{
        unsigned char xi,yi;
        unsigned char xt,yt;
        x>>= 4;
        w>>= 3;
        cmdwrite(0x36);
        for(yi = 0; yi < h; yi++)       
        {
                yt = y + yi;
                xt = x;
                if(yt >= 32)
                {
                        yt -= 32;
                        xt += 8;
                }
                cmdwrite(0x80|yt);
                cmdwrite(0x80|xt);
                for(xi = 0; xi < w; xi++)
                {
                        datwrite(0x00);
                }
        }
}

相关帖子

沙发
176136| | 2015-8-12 17:17 | 只看该作者
学习中,

使用特权

评论回复
板凳
paier_tt| | 2015-8-18 10:20 | 只看该作者
我琢磨琢磨下,在告诉你

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

0

粉丝