以下是网上关于 ST7920 打点 的代码,但我把它拷贝到我这里,总是显示不了点 显示一条线!有没有高手遇到过这样的问题?求解!
//读函数
unsigned char LcdRdata(void)
{
unsigned char LcdData;
lcd_data=0xff; //释放 我发现的问题:这里写入什么值,读出来的就是什么值
RW=1;
RS=1;
E=1;
delay(1); //延长延时不起作用
LcdData = lcd_data;
E=0;
return (LcdData);
}
//打点函数
void GUI_Point(unsigned char x,unsigned char y,unsigned char color)
{
unsigned char x_Dyte,x_byte;
unsigned char y_Dyte,y_byte;
unsigned char GDRAM_hbit,GDRAM_lbit;
LcdWcom(0x36);
x_Dyte=x/16;
x_byte=x&0x0f;
y_Dyte=y/32;
y_byte=y&0x1f;
LcdWcom(0x80+y_byte);
LcdWcom(0x80+x_Dyte+8*y_Dyte);
LcdRdata();
GDRAM_hbit=LcdRdata(); //上面 lcd_data==0xff 返回就是0xff
GDRAM_lbit=LcdRdata();
delay(1);
LcdWcom(0x80+y_byte);
LcdWcom(0x80+x_Dyte+8*y_Dyte);
delay(1);
if(x_byte<8)
{
if(color==1)
{
LcdWdata(GDRAM_hbit|(0x01<<(7-x_byte))); //0xff | dat ==oxff 显示一条线 不是一个点
}
else
LcdWdata(GDRAM_hbit&(~(0x01<<(7-x_byte))));
LcdWdata(GDRAM_lbit);
}
else
{
LcdWdata(GDRAM_hbit);
if(color==1)
LcdWdata(GDRAM_lbit|(0x01<<(15-x_byte)));
else
LcdWdata(GDRAM_lbit&(~(0x01<<(15-x_byte))));
}
LcdWcom(0x30);
}
GUI_Fill_GDRAM(0x00);
GUI_Point(64,32,1); //应该在中央显示一个点 确是一条线?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
//函数功能:读取GDRAM的数值,存于全局变量GDRAMH8bit和GDRAML8bit中
//全局变量
//static uchar idata GDRAMH8bit; //读取的GDRAM数据高8位,文件私有
//static uchar idata GDRAML8bit; //读取的GDRAM数据低8位,文件私有
void lcm_r_data(uchar x,uchar y)
{uchar temp;
// lcm_test(0,0x34); //先关闭图形显示功能
send_com(0x34);
// lcm_test(0,y); //设定垂直坐标
send_com(y);
// lcm_test(0,x); //设定水平坐标
send_com(x);
E = 0;
E = 0;
// DataPort = 0xff; //输入前置1
DATA=0xff;
RS = 1; //数据
RW = 1; //读模式
RS = 1; //数据
RW = 1; //读模式
E = 1; //使能
E = 1; //使能
E = 1; //使能
delay(8);
// temp = DataPort; //P0口的内容放到变量中,读回的正确值
temp=DATA;
E = 0;
E = 0;
E = 0;
E = 0;
//DataPort = 0xff; //输入前置1
DATA=0xff;
RS = 1; //数据
RW = 1; //读模式
RS = 1; //数据
RW = 1; //读模式
E = 1; //使能
E = 1; //使能
E = 1; //使能
delay(8);
// GDRAMH8bit = DataPort; //P0口的内容放到变量中,读回的正确值
GDRAMH8bit = DATA;
E = 0;
E = 0;
E = 0;
E = 0;
// DataPort = 0xff; //输入前置1
DATA=0xff;
RS = 1; //数据
RW = 1; //读模式
RS = 1; //数据
RW = 1; //读模式
E = 1; //使能
E = 1; //使能
E = 1; //使能
delay(8);
GDRAML8bit =DATA; //P0口的内容放到变量中,读回的正确值
E = 0;
E = 0;
E = 0;
E = 0;
}
一周热门 更多>