|
打點子程序如下,其它程序未列出,主程序調(diào)用打點子程序,1應(yīng)該顯示一個點才對,請問為何顯示一條16個點的橫線?
2芯片是STC89C52,燒錄軟件為STC-ISP V6.88,打開燒錄軟件,選擇好程序文件寫入,此時一切正常。
如修改了程序文件,必須再次點擊“選擇程序文件”后確認(rèn)一下,才能把修改后的程序文件寫入單片機,否則寫入的是未修改的程序文件。什么原因?
好像程序小的話就沒問題。
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;//頁內(nèi)地址
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)//顏色設(shè)置
{
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;//反轉(zhuǎn)
default:break;
}
write_LCD_data(Read_H);//寫入高、低字節(jié)
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);//回到基本模式
}
|
|