Uc1698u有32-Gray模式,64K-color,可以生成32灰阶黑白图片,别有一番韵味,显示模式只能取LC[7:6]=10b,2个字节写3个像素点,下面上取160*160图片代码:
void bmptest(uchar *pic)
{
unsigned char i,j,k,m;
unsigned char BmpDataRAM[24]={0}; //定义缓存,存放3个字节24位点数状态
LCD_CursorX(0);
LCD_CursorY(0);
SetWindows(0,0,162,160);
for(m=0;m<160;m++) //160行
{
for(j=0;j<6;j++) //160160每一行有6个24位,外加2个字节
{
for(k=0;k<3;k++) //3个字节
{
for(i=0;i<8;i++) //检测1个字节中8位状态,并赋值给缓存0或1
{
if(*pic & (0x80>>i)) BmpDataRAM[i+k*8]=1; //检测高位到低位,并赋值给缓存0或1
else BmpDataRAM[i+k*8]=0;
}
pic++; //取模数据地址加1
}
for(i=0;i<24;i++) //因24位缓存数据全是0或1,更换为RGB显示数据RRRRRGGGGGGBBBBB
{
if(i%3==0 || i%3==2) //判断是第0位还是第2位,RB数据
{
if(BmpDataRAM[i]) BmpDataRAM[i]=0x1f; //R和B数据各占5位
else {BmpDataRAM[i]=0;}
}
if(i%3==1) //判断是不是第1位,G数据
{
if(BmpDataRAM[i]) BmpDataRAM[i]=0x3f; //G数据占6位
else BmpDataRAM[i]=0;
}
}
for(i=0;i<8;i++) //调用缓存数据,写24个点
{
LCD_DataWrite(BmpDataRAM[i*3]<<3 | BmpDataRAM[i*3+1]>>3);
LCD_DataWrite(BmpDataRAM[i*3+1]<<5 | BmpDataRAM[i*3+2]);
}
}
for(k=0;k<2;k++) //每一行检测写完6个字节后,还多余2个字节,要单独处理这2个字节,16个点因不够3整除
{
for(i=0;i<8;i++) //方法同上,缓存存放2个字节的点位状态
{
if(*pic & (0x80>>i)) BmpDataRAM[i+k*8]=1;
else BmpDataRAM[i+k*8]=0;
}
pic++;
}
for(i=0;i<16;i++) //判断状态,转换为显示数据
{
if(i%3==0 || i%3==2) //判断是第0位还是第2位,RB数据
{
if(BmpDataRAM[i]) BmpDataRAM[i]=0x1f; //R或B的显示数据
else BmpDataRAM[i]=0;
}
if(i%3==1) //判断是不是第1位,G数据
{
if(BmpDataRAM[i]) BmpDataRAM[i]=0x3f; //G的显示数据
else BmpDataRAM[i]=0;
}
}
for(i=0;i<6;i++) //第一行还剩余2个字节,16个点,2个字节写3个点,要写6次
{
LCD_DataWrite(BmpDataRAM[i*3]<<3 | BmpDataRAM[i*3+1]>>3);
LCD_DataWrite(BmpDataRAM[i*3+1]<<5 | BmpDataRAM[i*3+2]);
}
}
pic=0;
}
取32灰阶图片,144*144像素代码:
void bmpgraytest(uchar *p)
{
unsigned int i;
uchar GrayDataR,GrayDataGH,GrayDataGL,GrayDataB;
LCD_CursorX(0);
LCD_CursorY(0);
SetWindows(0,0,144,144);
LCD_CmdWrite(0xaf); //32-shade on
DelayMs(50);
for(i=0;i<6912;i++)
{
GrayDataR = ((*p & 0xff)/8)<<3;p++;
GrayDataGH = ((*p & 0xff)/4)>>3;
GrayDataGL = ((*p & 0xff)/4)<<5;p++;
GrayDataB = ((*p & 0xff)/8)&0x1f;p++;
LCD_DataWrite(GrayDataR | GrayDataGH);
LCD_DataWrite(GrayDataGL | GrayDataB);
}
}
灰阶图片取模工具借助BmpConvert.exe
浅谈Uc1698u的写数据模式LC[7:6]=10b,64K-Color
最新推荐文章于 2023-12-12 17:52:42 发布