久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2913|回復: 9
收起左側

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

[復制鏈接]
ID:1010435 發表于 2023-6-25 18:14 | 顯示全部樓層 |閱讀模式
驅動個160*160的黑白屏,用的uc1698u芯片,采用16位彩色數據格式,必須兩個8位才能驅動三個像素點,想讓屏顯示一個160*160的圖片,網上找了很久沒有找到相關程序,只能自己啃手冊
123.jpg
程序如下:
  1. static unsigned char code pic[]={
  2. 0xaa,0xaa,0xaa};//三個8位做個試驗
  3. void data8bit(unsigned char dat) //三位有效
  4. {
  5.         if(dat==0x00){        transfer_data(0x00);        transfer_data(0x00);}
  6.         if(dat==0x01){        transfer_data(0x00);        transfer_data(0x1f);}
  7.         if(dat==0x02){        transfer_data(0x07);        transfer_data(0xe0);}        
  8.         if(dat==0x03){        transfer_data(0x07);        transfer_data(0xff);}        
  9.         if(dat==0x04){        transfer_data(0xf8);        transfer_data(0x00);}        
  10.         if(dat==0x05){        transfer_data(0xf8);        transfer_data(0x1f);}
  11.         if(dat==0x06){        transfer_data(0xff);        transfer_data(0xe0);}
  12.         if(dat==0x07){        transfer_data(0xff);        transfer_data(0xff);}        
  13. }
復制代碼
  1. void bmp()         
  2. {
  3.         unsigned long picdata=0;

  4.         char temdata;
  5.         set_lcd_address(0,0);
  6.         picdata=(pic[0]<<16)|(pic[1]<<8)|pic[2];//三個八位數據組組合成24位
  7.         temdata=picdata>>21;        //
  8.         data8bit(temdata&0x07);
  9.         temdata=picdata>>18;
  10.         data8bit(temdata&0x07);        
  11.         temdata=picdata>>15;
  12.         data8bit(temdata&0x07);               
  13.         temdata=picdata>>12;
  14.         data8bit(temdata&0x07);               
  15.         temdata=picdata>>9;
  16.         data8bit(temdata&0x07);
  17.         temdata=picdata>>6;
  18.         data8bit(temdata&0x07);        
  19.         temdata=picdata>>3;
  20.         data8bit(temdata&0x07);
  21.         temdata=picdata;
  22.         data8bit(temdata&0x07);        
  23. }
復制代碼



為啥第一位數據pci[0]顯示不正常,而第二位pic[1]和第三位pic[2]顯示是正常的沒有問題的。
我試過,直接給data8bit()函數直接賦值顯示是沒有問題的。

回復

使用道具 舉報

ID:123289 發表于 2023-6-26 11:12 | 顯示全部樓層
走單步慢慢調試吧。也不知道【顯示不正常】長什么樣子。
回復

使用道具 舉報

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:1010435 發表于 2023-6-26 12:59 | 顯示全部樓層
另外再請教一下,8位的單片機,
如果變量
char a=0xff;
int b;
b=a;
這個時候b應該是兩個字節,那么b的高八位全是0嗎?
回復

使用道具 舉報

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: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:1010435 發表于 2023-6-26 16:30 | 顯示全部樓層
Hephaestus 發表于 2023-6-26 15:39
如果是unsigned顯然會是0。

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

明白了 我再試試
回復

使用道具 舉報

ID:384109 發表于 2023-6-26 16:35 | 顯示全部樓層
void data8bit(unsigned char dat)有問題,而且你好像沒搞清楚pic[]數組和2字節顏色數據的關系,看你的描述也沒描述清楚
回復

使用道具 舉報

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:1010435 發表于 2023-6-26 20:19 | 顯示全部樓層
xxxevery 發表于 2023-6-26 16:27
問題應該就出在 picdata = (pic[0]

你這個方法是對的,我用的Keil5,加上(unsigned long)后正常了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清久久 | 午夜在线影院 | 成年人网站免费视频 | 亚洲欧美精品在线 | 成人在线电影网站 | 天堂男人av | 九色视频网站 | 国产三区在线观看视频 | 第一区在线观看免费国语入口 | 日韩中文字幕在线免费 | 97色在线观看免费视频 | 国产精品视频不卡 | 亚洲视频精品 | 国产午夜精品视频 | 国产区视频在线观看 | 欧美日韩黄色一级片 | 日韩免费一区二区 | 久久综合香蕉 | 亚洲精品二区 | av中文在线观看 | 欧美一区二区三区在线 | 国产精品揄拍一区二区久久国内亚洲精 | 亚洲美女av网站 | 一级黄色片一级黄色片 | 欧美成人性生活 | 色综合九九 | 久久久99精品免费观看 | 99精品视频在线 | 一区二区三区免费 | 中文字幕av第一页 | 日韩在线高清 | 麻豆久久久久久久久久 | 欧美亚洲国产日韩 | 国产成人福利 | 超碰97干| 国内av在线 | 欧美日高清视频 | 欧美成人精品一区二区三区 | 日本中文在线视频 | 国产小视频在线 | 久久久久久久久久久久久9999 |