欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于單片機+LCD12864屏打點程序疑問
[打印本頁]
作者:
33943417
時間:
2021-7-6 06:47
標題:
關于單片機+LCD12864屏打點程序疑問
打點子程序如下,其它程序未列出,主程序調用打點子程序,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);//回到基本模式
}
作者:
yzwzfyz
時間:
2021-7-6 08:27
本帖最后由 yzwzfyz 于 2021-7-6 10:14 編輯
12864的顯示數據是按字節送往屏幕的,即一次至少修改8個顯示點,這是最小單位。
你要顯示一個點參考方案是:
1、讀取與此點相關聯的8個點(一個字節)。
2、修改其中你要顯示的點的值(0/1)。
3、回送這個改過1位的字節。
達成1、2、3、的方法有多種,這里有許多技巧,不在此啰嗦了。
明白這個道理即可,剩下的自由發揮吧。
作者:
33943417
時間:
2021-7-6 19:46
謝謝,我再研究下。。。。
作者:
人人學會單片機
時間:
2021-7-6 20:38
OLED12864源代碼分享 IIC協議
http://m.raoushi.com/bbs/dpj-204281-1.html
LCD12864中文資料包 容易看明白
http://m.raoushi.com/bbs/dpj-200462-1.html
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1