驅動個160*160的黑白屏,用的uc1698u芯片,采用16位彩色數據格式,必須兩個8位才能驅動三個像素點,想讓屏顯示一個160*160的圖片,網上找了很久沒有找到相關程序,只能自己啃手冊
程序如下:
- static unsigned char code pic[]={
- 0xaa,0xaa,0xaa};//三個8位做個試驗
- void data8bit(unsigned char dat) //三位有效
- {
- if(dat==0x00){ transfer_data(0x00); transfer_data(0x00);}
- if(dat==0x01){ transfer_data(0x00); transfer_data(0x1f);}
- if(dat==0x02){ transfer_data(0x07); transfer_data(0xe0);}
- if(dat==0x03){ transfer_data(0x07); transfer_data(0xff);}
- if(dat==0x04){ transfer_data(0xf8); transfer_data(0x00);}
- if(dat==0x05){ transfer_data(0xf8); transfer_data(0x1f);}
- if(dat==0x06){ transfer_data(0xff); transfer_data(0xe0);}
- if(dat==0x07){ transfer_data(0xff); transfer_data(0xff);}
- }
復制代碼- void bmp()
- {
- unsigned long picdata=0;
- char temdata;
- set_lcd_address(0,0);
- picdata=(pic[0]<<16)|(pic[1]<<8)|pic[2];//三個八位數據組組合成24位
- temdata=picdata>>21; //
- data8bit(temdata&0x07);
- temdata=picdata>>18;
- data8bit(temdata&0x07);
- temdata=picdata>>15;
- data8bit(temdata&0x07);
- temdata=picdata>>12;
- data8bit(temdata&0x07);
- temdata=picdata>>9;
- data8bit(temdata&0x07);
- temdata=picdata>>6;
- data8bit(temdata&0x07);
- temdata=picdata>>3;
- data8bit(temdata&0x07);
- temdata=picdata;
- data8bit(temdata&0x07);
- }
復制代碼
為啥第一位數據pci[0]顯示不正常,而第二位pic[1]和第三位pic[2]顯示是正常的沒有問題的。
我試過,直接給data8bit()函數直接賦值顯示是沒有問題的。
|