unsigned int lcdGetPixel_FSMC(JsGraphics *gfx, short x, short y) { if (x<0 || y<0 || x>=gfx->data.width || y>=gfx->data.height) return 0; lcdSetCursor(gfx,x,y); LCD_WR_REG(0x22); // start data tx return LCD_RD_Data(); }
static inline unsigned int LCD_RD_CMD(unsigned int index) { LCD_WR_REG(index); return LCD_RD_Data(); }
/** * 功能:LCD写字符子程序 * @x_start: * @y_start: * @x_end: * @y_end: * @ 尺寸 * @ 颜色 * @方向 * @数据 */ void lcd_wr_zf(unsigned int a, unsigned int b, unsigned int a1, unsigned int b1, unsigned int d,unsigned int e,unsigned char g,unsigned char *f) // X, Y,结束X,y,尺寸,颜色,方向,数据 { unsigned int temp=0,num,z,R_dis_mem=0,a2=0,b2=0,b3=0; unsigned char temp5; if(g==0) LCD_WriteReg(0x0003,0x1030); //左上起 else if(g==1) LCD_WriteReg(0x0003,0x1018); //左下起 else if(g==2) LCD_WriteReg(0x0003,0x1010); //右下起 else if(g==3) LCD_WriteReg(0x0003,0x1028); //右上起 //LCD_WriteReg(0x01,0x07); Delay(200); for(temp=0;temp<d;temp++) { b2=(temp*8); b3=b2/(a1-a+1); //计算纵坐标偏移 a2=b2%(a1-a+1); //计算横坐标偏移 temp5=*f; z=temp5; for(num=0; num<8; num++){ if((temp5&0x80)>0){ if(g==0){ LCD_WriteReg(80,a+a2+num); LCD_WriteReg(82,b+b3); LCD_WriteReg(81,a+a2+num); LCD_WriteReg(83,b+b3); LCD_WriteReg(32, a+a2+num); LCD_WriteReg(33, b+b3); //LCD_WriteReg(0,0x04,239); //LCD_WriteReg(1,0x05,319); } else if(g==1){ LCD_WriteReg(80,b+b3); LCD_WriteReg(82,a); LCD_WriteReg(81,b+b3); LCD_WriteReg(83,319-(a+a2+num)); //LCD_WriteReg(83,a); LCD_WriteReg(32,b+b3); LCD_WriteReg(33,319-(a+a2+num)); } else if(g==2){ LCD_WriteReg(80,a); LCD_WriteReg(82,b); LCD_WriteReg(81,239-(a+a2+num)); LCD_WriteReg(83,319-(b+b3)); LCD_WriteReg(32,239-(a+a2+num)); LCD_WriteReg(33,319-(b+b3)); } else if(g==3){ LCD_WriteReg(80,239-(b+b3)); LCD_WriteReg(82,(a+a2+num)); LCD_WriteReg(81,239-(b+b3)); LCD_WriteReg(83,319); LCD_WriteReg(32,239-(b+b3)); LCD_WriteReg(33,(a+a2+num)); } LCD_WriteIndex(34); LCD_WriteRAM(e); } else{ if(g==0){ LCD_WriteReg(80,a+a2+num); LCD_WriteReg(82,b+b3); LCD_WriteReg(81,a+a2+num); LCD_WriteReg(83,b+b3); LCD_WriteReg(32, a+a2+num); LCD_WriteReg(33, b+b3); LCD_WriteIndex(34); R_dis_mem=LCD_RD_Data(); LCD_WriteReg(32,a+a2+num); LCD_WriteReg(33,b+b3); } else if(g==1){ LCD_WriteReg(80,b+b3); LCD_WriteReg(82,a); LCD_WriteReg(81,b+b3); LCD_WriteReg(83,319-(a+a2+num)); LCD_WriteReg(32,b+b3); LCD_WriteReg(33,319-(a+a2+num)); LCD_WriteIndex(34); R_dis_mem=LCD_RD_Data(); LCD_WriteReg(32,b+b3); LCD_WriteReg(33,319-(a+a2+num)); //LCD_WriteReg(0,0x04,b+b3); //LCD_WriteReg(1,0x05,319-(a+a2+num)); } else if(g==2){ LCD_WriteReg(80,a); LCD_WriteReg(82,b); LCD_WriteReg(81,239-(a+a2+num)); LCD_WriteReg(83,319-(b+b3)); LCD_WriteReg(32,239-(a+a2+num)); LCD_WriteReg(33,319-(b+b3)); LCD_WriteIndex(34); R_dis_mem=LCD_RD_Data(); LCD_WriteReg(32,239-(a+a2+num)); LCD_WriteReg(33,319-(b+b3)); //LCD_WriteReg(0,0x04,239-(a+a2+num)); //LCD_WriteReg(1,0x05,319-(b+b3)); } else if(g==3){ LCD_WriteReg(80,239-(b+b3)); LCD_WriteReg(82,(a+a2+num)); LCD_WriteReg(81,239-(b+b3)); LCD_WriteReg(83,319); LCD_WriteReg(32,239-(b+b3)); LCD_WriteReg(33,(a+a2+num)); LCD_WriteIndex(34); R_dis_mem=LCD_RD_Data(); LCD_WriteReg(80,239-(b+b3)); LCD_WriteReg(82,(a+a2+num)); //LCD_WriteReg(0,0x04,239-(b+b3)); //LCD_WriteReg(1,0x05,319); } LCD_WriteIndex(34); LCD_WriteRAM(R_dis_mem); } temp5=z; temp5=temp5<<1; z=temp5; } f++; } }