欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

uc1698u芯片驅動160*160屏 請教各位幫忙看下為啥第一位數據是錯的?

查看數: 3385 | 評論數: 9 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2023-6-25 18:14

正文摘要:

驅動個160*160的黑白屏,用的uc1698u芯片,采用16位彩色數據格式,必須兩個8位才能驅動三個像素點,想讓屏顯示一個160*160的圖片,網上找了很久沒有找到相關程序,只能自己啃手冊 程序如下: static unsigned ...

回復

ID:1010435 發表于 2023-6-26 20:19
xxxevery 發表于 2023-6-26 16:27
問題應該就出在 picdata = (pic[0]

你這個方法是對的,我用的Keil5,加上(unsigned long)后正常了。
ID:1010435 發表于 2023-6-26 16:55
人中狼 發表于 2023-6-26 16:35
void data8bit(unsigned char dat)有問題,而且你好像沒搞清楚pic[]數組和2字節顏色數據的關系,看你的描述 ...

這個data8bit函數我是驗證過的,給data8bit函數賦值0x00~0x07 屏幕上三個像素點按000 001 010 011 100 101 110 111(1代表亮,0代表滅)分別能正常顯示。
ID:384109 發表于 2023-6-26 16:35
void data8bit(unsigned char dat)有問題,而且你好像沒搞清楚pic[]數組和2字節顏色數據的關系,看你的描述也沒描述清楚
ID:1010435 發表于 2023-6-26 16:30
Hephaestus 發表于 2023-6-26 15:39
如果是unsigned顯然會是0。

有鑒于你沒有寫unsigned,高8位是符號擴展,如果char最高位是0,那么高八 ...

明白了 我再試試
ID:59202 發表于 2023-6-26 16:27
問題應該就出在 picdata = (pic[0] << 16) | (pic[1] << 8) | pic[2]; 這一行程序上,pic[0]、pic[1]是一個8位無符號數,你把它左移16和8位,本身就是一個非常規操作,不同編譯器會有不同的解釋操作,非常容易得到不是你想象的結果。你可以試試改成這樣
picdata = ((unsigned long)pic[0] << 16) | ((unsigned long)pic[1] << 8) | pic[2];
ID:883242 發表于 2023-6-26 15:39
mtt661 發表于 2023-6-26 12:59
另外再請教一下,8位的單片機,
如果變量
char a=0xff;

如果是unsigned顯然會是0。

有鑒于你沒有寫unsigned,高8位是符號擴展,如果char最高位是0,那么高八位全0;如果char最高位是1,那么高八位全1,表示負數。隨便舉個栗子,char類型0xfe表示-2,那么擴展到int類型就是0xfffe,同樣表示-2。
ID:1010435 發表于 2023-6-26 12:59
另外再請教一下,8位的單片機,
如果變量
char a=0xff;
int b;
b=a;
這個時候b應該是兩個字節,那么b的高八位全是0嗎?
ID:1010435 發表于 2023-6-26 12:53
yzwzfyz 發表于 2023-6-26 11:12
走單步慢慢調試吧。也不知道【顯示不正常】長什么樣子。

這樣說pic[0],pic[1],pic[2],每個字節8位,控制了3*8=24個像素點的亮和滅,上面的程序只能讓9~24位置的像素點正常顯示,而1~8位顯示時亂的,不是p[0]的值。
ID:123289 發表于 2023-6-26 11:12
走單步慢慢調試吧。也不知道【顯示不正常】長什么樣子。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表