打点子程序如下,其它程序未列出,主程序调用打点子程序,1应该显示一个点才对,请问为何显示一条16个点的横线?
2芯片是STC89C52,烧录软件为STC-ISP V6.88,打开烧录软件,选择好程序文件写入,此时一切正常。
如修改了程序文件,必须再次点击“选择程序文件”后确认一下,才能把修改后的程序文件写入单片机,否则写入的是未修改的程序文件。什么原因?
好像程序小的话就没问题。
void Draw_dots(uchar x,uchar y,uchar color)//********************************打点子程序
{
uchar ROW,xlabel1,xlabel_bit;
uchar Read_H, Read_L;
write_LCD_command(0x34);//
write_LCD_command(0x36);//绘图开
xlabel1=x>>4;//页地址
xlabel_bit=x&0x0f;//页内地址
if(y<32)//
ROW=y;
else
{ROW=y-32;xlabel1+=8;}
write_LCD_command(ROW+0X80);//
write_LCD_command(xlabel1+0X80);//
ReadByte();//空读
Read_H=ReadByte();
Read_L=ReadByte();
write_LCD_command(ROW+0X80);//垂直地址
write_LCD_command(xlabel1+0X80);//水平地址
if(xlabel_bit<8)
{
switch(color)//颜色设置
{
case 0:Read_H&=(~(0x01<<(7-xlabel_bit)));break;//变白
case 1:Read_H|=(0x01<<(7-xlabel_bit));break;//涂黑
case 2:Read_H^=(0x01<<(7-xlabel_bit));break;//反转
default:break;
}
write_LCD_data(Read_H);//写入高、低字节
write_LCD_data(Read_L);
}
else
{switch(color)//
{
case 0:Read_L&=(~(0x01<<(15-xlabel_bit)));break;//
case 1:Read_L|=(0x01<<(15-xlabel_bit));break;//
case 2:Read_L^=(0x01<<(15-xlabel_bit));break;//
default:break;
}
write_LCD_data(Read_H);//
write_LCD_data(Read_L);
}
write_LCD_command(0x30);//回到基本模式
}
|