#include "ili9341.h" volatile uint16_t LCD_W=ILI9341_TFTWIDTH; volatile uint16_t LCD_H=ILI9341_TFTHEIGHT; void ili9341_hard_init(void)//init hardware { controlddr=0xFF;//output for reset controlport |=(1<>8); ili9341_writedata8(x1); ili9341_writedata8(x2>>8); ili9341_writedata8(x2); ili9341_writecommand8(0x2B); ili9341_writedata8(y1>>8); ili9341_writedata8(y1); ili9341_writedata8(y2); ili9341_writedata8(y2); ili9341_writecommand8(0x2C);//meory write } void ili9341_hard_reset(void)//hard reset display { controlport |=(1<>8); ili9341_writedata8(colour); } //clear lcd and fill with colour void ili9341_clear(uint16_t colour) { uint16_t i,j; ili9341_setaddress(0,0,LCD_W-1,LCD_H-1); for(i=0;i=LCD_W) || (y3 < 0) || (y3 >=LCD_H)) return; ili9341_setaddress(x3,y3,x3+1,y3+1); ili9341_pushcolour(colour1); } //draw vertical line void ili9341_drawvline(uint16_t x,uint16_t y,uint16_t h,uint16_t colour)//basically we will see this line horizental if we see the display 320*240 { if((x >=LCD_W) || (y >=LCD_H)) return; if((y+h-1)>=LCD_H) h=LCD_H-y; ili9341_setaddress(x,y,x,y+h-1); while(h--) { ili9341_pushcolour(colour); } } //draw horizental line void ili9341_drawhline(uint16_t x,uint16_t y,uint16_t w,uint16_t colour) { if((x >=LCD_W) || (y >=LCD_H)) return; if((x+w-1)>=LCD_W) w=LCD_W-x; ili9341_setaddress(x,y,x+w-1,y); while(w--) { ili9341_pushcolour(colour); } } //draw simple rectangle void ili9341_drawrect(uint16_t x,uint16_t y,uint16_t w,uint16_t h,uint16_t colour) { ili9341_drawhline(x,y,w,colour); ili9341_drawhline(x,y+h-1,w,colour); ili9341_drawvline(x,y,h,colour); ili9341_drawvline(x+w-1,y,h,colour); } //draw colour filled rectangle void ili9341_fillrect(uint16_t x,uint16_t y,uint16_t w,uint16_t h,uint16_t colour) { if((x >=LCD_W) || (y >=LCD_H)) return; if((x+w-1)>=LCD_W) w=LCD_W-x; if((y+h-1)>=LCD_H) h=LCD_H-y; ili9341_setaddress(x, y, x+w-1, y+h-1); for(y=h; y>0; y--) { for(x=w; x>0; x--) { ili9341_pushcolour(colour); } } } //draw circle //rotate screen at desired orientation void ili9341_setRotation(uint8_t m) { uint8_t rotation; ili9341_writecommand8(0x36); rotation=m%4; switch (rotation) { case 0: ili9341_writedata8(0x40|0x08); LCD_W = 240; LCD_H = 320; break; case 1: ili9341_writedata8(0x20|0x08); LCD_W = 320; LCD_H = 240; break; case 2: ili9341_writedata8(0x80|0x08); LCD_W = 240; LCD_H = 320; break; case 3: ili9341_writedata8(0x40|0x80|0x20|0x08); LCD_W = 320; LCD_H = 240; break; } }