驱动个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()函数直接赋值显示是没有问题的。
|