这个程序也是借用人家的,已经运行过了
//************************打点函数参数: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);//恢复到基本指令集
}
|