找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1707|回复: 1
收起左侧

请问12864网上看的画点代码有问题,高八位写啥,低八位也就写啥。是不是型号问题

[复制链接]
ID:220385 发表于 2017-7-17 19:48 | 显示全部楼层 |阅读模式
请问12864网上看的画点代码有问题,高八位写啥,低八位也就写啥。是不是型号问题
回复

使用道具 举报

ID:202713 发表于 2017-7-18 00:11 | 显示全部楼层
这个程序也是借用人家的,已经运行过了

//************************打点函数参数:color=1:该点填充1,显示;color=0:该点填充0,不显示************************//

void Fill_Point(uchar x,uchar y, uchar color)
{
        uchar x_Dyte,x_byte;                                //定义列地址的字节位及在字节中的哪一位
        uchar        y_Dyte,y_byte;                                //上下两个屏(0,1),行地址(0~31)
        uchar        GDRAM_hbit,GDRAM_lbit;

        write_cmd(0x36);                                        //扩展指令集
                                                                                //---XY坐标互换,即普通的X,Y坐标---
        x_Dyte=x/16;                                                //计算在16个字节中的哪一个
        x_byte=x&0x0f;                                                //计算在该字节中的哪一位
        y_Dyte=y/32;                                                //0为上半屏,1为下半屏
        y_byte=y&0x1f;                                                //计算在0~31中的哪一行

        write_cmd(0x80+y_byte);                                //设定行地址(y坐标),即垂直坐标
        write_cmd(0x80+x_Dyte+8*y_Dyte);        //设定列地址(x坐标),并通过8*y_Dyte选定上下,水平地址
       
        ReadData();                                                        //预读取数据
        GDRAM_hbit=ReadData();                                //读取当前显示高八位数据
        GDRAM_lbit=ReadData();                                //读取当前显示第八位数据
        delay_1ms(1);

        write_cmd(0x80+y_byte);                                //设定行地址(y坐标)
        write_cmd(0x80+x_Dyte+8*y_Dyte);        //设定列地址(x坐标),并通过8*y_Dyte选定上下,即水平地址

        delay_1ms(1);
        if(x_byte<8)                                                //判断其在高八位还是低八位
        {
                if(color==1)
                {
                        write_dat(GDRAM_hbit|(0x01<<(7-x_byte)));//置位GDRAM高八位数据中相应的
                }
                else
                        write_dat(GDRAM_hbit&(~(0x01<<(7-x_byte))));//清除GDRAM区高八位数据中相应的点
                write_dat(GDRAM_lbit);//显示GDRAM区低八位数据
        }
        else
        {
                write_dat(GDRAM_hbit);
                if(color==1)
                write_dat(GDRAM_lbit|(0x01<<(15-x_byte)));//置位GDRAM区高八位数据中相应的点
                else
                write_dat(GDRAM_lbit&(~(0x01<<(15-x_byte))));//清除GDRAM区高八位数据中相应的点
        }
        write_cmd(0x30);//恢复到基本指令集
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表