我看网上的程序是 正常程序 取值时 取反 - void LCD12864_Display(u8 y,u8 x,u8 px,u8 py,u8 *pp)
- {
- u8 i,j,k;
- LCD12864_Clear(); //清屏
- if(y<32) //如果起始行在上半屏
- {
- k = 32-y; //算出上半屏的行数
- for(i=0;i<k;i++,y++) //上半屏行数
- {
- LCD12864_WCMD(0x80|y); //写行地址(垂直地址)
- LCD12864_WCMD(0x80|x); //写列地址(水平地址)
- for(j=0;j<px/8;j++)
- LCD12864_WDAT(pp[i*px/8+j]); //写图片数据
- }
- y=0; //下半屏起始行,接上半屏继续写数据
- for(;i<py;i++,y++)//下半屏剩下的行数
- {
- LCD12864_WCMD(0x80|y);//写行地址(垂直地址)
- LCD12864_WCMD(0x80|(8+x));//写列地址(水平地址)
- for(j=0;j<px/8;j++)
- LCD12864_WDAT(pp[i*px/8+j]);//写图片数据
- }
- }
- else //如果起始行在下半屏
- {
- for(i=0;i<py;i++,y++)//行数
- {
- LCD12864_WCMD(0x80|(y-32));//写行地址(垂直地址)
- LCD12864_WCMD(0x80|(8+x));//写列地址(水平地址)
- for(j=0;j<px/8;j++)
- LCD12864_WDAT(pp[i*px/8+j]);//写图片数据
- }
- }
- }
- // 反白程序 同上一函数一样 <span style="background-color: rgb(255, 255, 255);">取值时 </span><span style="background-color: rgb(255, 255, 255); color: red;">取反</span>
- void LCD12864_DisplayFb(u8 y,u8 x,u8 px,u8 py,u8 *pp)
- {
- u8 i,j,k;
- LCD12864_Clear(); //清屏
- if(y<32) //如果起始行在上半屏
- {
- k = 32-y; //算出上半屏的行数
- for(i=0;i<k;i++,y++) //上半屏行数
- {
- LCD12864_WCMD(0x80|y); //写行地址(垂直地址)
- LCD12864_WCMD(0x80|x); //写列地址(水平地址)
- for(j=0;j<px/8;j++)
- LCD12864_WDAT(~pp[i*px/8+j]); //写图片数据 取反
- }
- y=0; //下半屏起始行,接上半屏继续写数据
- for(;i<py;i++,y++)//下半屏剩下的行数
- {
- LCD12864_WCMD(0x80|y);//写行地址(垂直地址)
- LCD12864_WCMD(0x80|(8+x));//写列地址(水平地址)
- for(j=0;j<px/8;j++)
- LCD12864_WDAT(~pp[i*px/8+j]);//写图片数据 取反
- }
- }
- else //如果起始行在下半屏
- {
- for(i=0;i<py;i++,y++)//行数
- {
- LCD12864_WCMD(0x80|(y-32));//写行地址(垂直地址)
- LCD12864_WCMD(0x80|(8+x));//写列地址(水平地址)
- for(j=0;j<px/8;j++)
- LCD12864_WDAT(~pp[i*px/8+j]);//写图片数据 取反
- }
- }
- }
复制代码 |