سلام.
همونطور که میدونید هدری که در حال حاظر برای ماژول LCD 2.8 ایچی سایت یا همون LCD N96 چینی وجود داره با C نوشته شده. من هم تصمیم گرفتم همون هدر رو به ++C و به صورت شی گرا درش بیارم. :read:
خوب حالا بریم سر اصل مطلب اول از همه این لینک هدر اصلی که توسط جناب آقای علی ایمانی فر با زبان C نوشه شده.
و این هم هدر جدید که با اندکی تغیرات که در ادامه توضیح میدم :
دانلود از پرشین گیگ
لینک کمکی
اول از همه نحوه کار هدر :
اول از همه باید فایل های زیر رو به پروژه اضافه کنیم (این فایل ها در لینک بالا موجود است) :
بعد باید وارد فایل N96LCDConfig بشیم و یه سری تنظیمات رو انجام بدیم.
این فایل حاوی یک سری ماکرو هست که باید با توجه به سخت افزارتون و ... تنظیمش کنید
TFTLCD_DATABUS_8 : با تعریف این ماکرو میتونید از مد 8 بیتی استفاده کنید ( البته باید توی سخت افزار تغیراتی ایجاد کنید)
LANDSCAPE : با تعریف این ماکرو صفحه در حالت افقی تنظیم میشه
MICRO_HEADER : مقابل این ماکرو باید هدر مربوط به میکرو کنترلرتون رو بنویسید. که به صورت پیشفرض <Atmel/ioat91sam7s64.h> هست.
DELAY_HEADER : میتونید هدر مربوط به تابع Delay رو از اینجا تغیر بدید ولی یکی توی لینک بالا همراه بقیه هدر ها هست میتونید از همون استفاده کنید
PORTRAIT : با تعریف این ماکرو صفحه در حالت عمودی تنظیم میشه
TFTLCD_DATAPORT_A : با تعریف این ماکرو مشخص میشه پایه های Data روی پرت A قرار داره ( میتونید پرتو با همین ماکرو عوض کنید یعنی در آخر ماکرو A تغیر بدید)
TFTLCD_CONTROLPORT_A : با تعریف این ماکرو مشخص میشه پایه های RST, RS, CS, WR, RD روی پرت A قرار داره (میتونید مثل ماکرو قبل پرت رو عوض کنید)
TFTLCD_DATAPORT_OFFSET : با استفاده از این ماکرو باید مشخص کنید اولین پایه مربوط به Data روی کدوم پین هست. بقیه پایه های Data باید به ترتیب به پین های بعدی متصل باشند
TFTLCD_RST : این ماکرو شماره پین پایه RST رو مشخص میکنه.
TFTLCD_RS : این ماکرو شماره پین پایه RS رو مشخص میکنه.
TFTLCD_CS : این ماکرو شماره پین پایه CS رو مشخص میکنه.
TFTLCD_WR : این ماکرو شماره پین پایه WR رو مشخص میکنه.
TFTLCD_RD : این ماکرو شماره پین پایه RD رو مشخص میکنه.
ّبعد از اعمال تنظیمات باید فایل N96LCD.h رو به فایل main برنامه ضمیمه کنیم. بعد یک شی از کلاس N96LCD میسازیم تا به با استفاده از اون به توابع مربوط به LCD دسترسی داشته باشیم.
و بعد هم قبل از کار با LCD باید تابع Init رو صدا بزنیم و بعد با استفاده از Fill صفحه رو با یک رنگ پاک کنیم.
تفاوت دیگه ی این هدر با هدر اصلی در اسم توابع هست که به این صورت تغیر کرده :
اینها توابع public بودند و این هم توابع private :
تقریبا کار همه توابع از روی اسمشون پیداست. تعریف توابع هم به این شکل صورت گرفته :
---------------------------------------------------------------
اینها چیزایی بود که برای شروع نیاز داشتیم. ولی خودم هنوز فکرایی دارم که انشالله روی این هدر پیاده میکنم ( مثل GUI به صورت شی گرا و ... ) . همینطور یکم بیشتر باید روی ساختار کار بشه یه سری چیزای دیگه هم از ماکرو در بیاد و با توابع قابل تنظیم باشه. به هر حال نسخه های بعدی رو هم توی همین پست قرار میدم :smile:
---------------------------------------------------------------
پروژه های نمونه نسخه 1 :
1. نمایش تصویر - کامپایلر IAR
2. ساعت عقربه ای - کامپایلر IAR
---------------------------------------------------------------
تصاویر :

همونطور که میدونید هدری که در حال حاظر برای ماژول LCD 2.8 ایچی سایت یا همون LCD N96 چینی وجود داره با C نوشته شده. من هم تصمیم گرفتم همون هدر رو به ++C و به صورت شی گرا درش بیارم. :read:
خوب حالا بریم سر اصل مطلب اول از همه این لینک هدر اصلی که توسط جناب آقای علی ایمانی فر با زبان C نوشه شده.
و این هم هدر جدید که با اندکی تغیرات که در ادامه توضیح میدم :
دانلود از پرشین گیگ
لینک کمکی
اول از همه نحوه کار هدر :
اول از همه باید فایل های زیر رو به پروژه اضافه کنیم (این فایل ها در لینک بالا موجود است) :
کد:
N96LCD.cpp N96LCDConfig.h N96LCD.h Delay.h FAmap.h PE & EN font1
این فایل حاوی یک سری ماکرو هست که باید با توجه به سخت افزارتون و ... تنظیمش کنید
TFTLCD_DATABUS_8 : با تعریف این ماکرو میتونید از مد 8 بیتی استفاده کنید ( البته باید توی سخت افزار تغیراتی ایجاد کنید)
LANDSCAPE : با تعریف این ماکرو صفحه در حالت افقی تنظیم میشه
MICRO_HEADER : مقابل این ماکرو باید هدر مربوط به میکرو کنترلرتون رو بنویسید. که به صورت پیشفرض <Atmel/ioat91sam7s64.h> هست.
DELAY_HEADER : میتونید هدر مربوط به تابع Delay رو از اینجا تغیر بدید ولی یکی توی لینک بالا همراه بقیه هدر ها هست میتونید از همون استفاده کنید
PORTRAIT : با تعریف این ماکرو صفحه در حالت عمودی تنظیم میشه
TFTLCD_DATAPORT_A : با تعریف این ماکرو مشخص میشه پایه های Data روی پرت A قرار داره ( میتونید پرتو با همین ماکرو عوض کنید یعنی در آخر ماکرو A تغیر بدید)
TFTLCD_CONTROLPORT_A : با تعریف این ماکرو مشخص میشه پایه های RST, RS, CS, WR, RD روی پرت A قرار داره (میتونید مثل ماکرو قبل پرت رو عوض کنید)
TFTLCD_DATAPORT_OFFSET : با استفاده از این ماکرو باید مشخص کنید اولین پایه مربوط به Data روی کدوم پین هست. بقیه پایه های Data باید به ترتیب به پین های بعدی متصل باشند
TFTLCD_RST : این ماکرو شماره پین پایه RST رو مشخص میکنه.
TFTLCD_RS : این ماکرو شماره پین پایه RS رو مشخص میکنه.
TFTLCD_CS : این ماکرو شماره پین پایه CS رو مشخص میکنه.
TFTLCD_WR : این ماکرو شماره پین پایه WR رو مشخص میکنه.
TFTLCD_RD : این ماکرو شماره پین پایه RD رو مشخص میکنه.
ّبعد از اعمال تنظیمات باید فایل N96LCD.h رو به فایل main برنامه ضمیمه کنیم. بعد یک شی از کلاس N96LCD میسازیم تا به با استفاده از اون به توابع مربوط به LCD دسترسی داشته باشیم.
و بعد هم قبل از کار با LCD باید تابع Init رو صدا بزنیم و بعد با استفاده از Fill صفحه رو با یک رنگ پاک کنیم.
تفاوت دیگه ی این هدر با هدر اصلی در اسم توابع هست که به این صورت تغیر کرده :
کد:
tftlcd_fill -> Fill tftlcd_imshow -> DrawImage tftlcd_set_area -> SetArea tftlcd_set_font_color -> SetFontColor tftlcd_fa_num -> SetNumberFa tftlcd_en_num -> SetNumberEn tftlcd_font_effect -> SetFontEffect tftlcd_italic_on -> TurnItalicOn tftlcd_italic_off -> TurnItalicOff tftlcd_put_char -> PutChar tftlcd_put_bold_char -> PutBoldChar tftlcd_goto_xy -> GoToXY tftlcd_text_highlight_on -> TurnTextHighlightOn tftlcd_text_highlight_off -> TurnTextHighlightOff tftlcd_text_highlight_color -> SetTextHighlightColor tftlcd_putsf_mix -> PutSizableString tftlcd_clear -> Clear tftlcd_init -> Init tftlcd_write_pixel -> SetPixel tftlcd_read_pixel -> GetPixel tftlcd_draw_line -> DrawLine tftlcd_draw_rectangle -> DrawRectangle tftlcd_draw_round_rectangle -> DrawRoundRectangle tftlcd_draw_circle -> DrawCircle tftlcd_draw_elliptic -> DrawElliptic tftlcd_write_pic -> DrawPicture init_lcd_for_picture -> InitPicture tftlcd_gotoxy -> GoToEnXY tftlcd_putchar -> PutEnChar tftlcd_putsf -> EnPutsf tftlcd_puts -> EnPuts tftlcd_draw_button -> DrawButton tftlcd_pattern -> Pattern unicode2ascii -> UniToAsc
کد:
tftlcd_write_index_register -> SetRegister tftlcd_write_wdr -> SendData tftlcd_read_rdr -> ReadData tftlcd_write_command -> SendCommand
کد:
public: void Fill(int color); void DrawImage(int x0,int y0,int N,int gray,const unsigned short *img); void SetArea(int X0,int Y0,int DX,int DY,int S_X,int S_Y); void SetFontColor(int color); void SetNumberFa(void); void SetNumberEn(void); void SetFontEffect(int ef); void TurnItalicOn(void); void TurnItalicOff(void); void PutChar(char character); void PutBoldChar(char character , int size); void GoToXY(int x,int y); void TurnTextHighlightOn(void); void TurnTextHighlightOff(void); void SetTextHighlightColor(unsigned int color); void PutSizableString(const unsigned char *string , int size); void Clear(void); void Init(void); void SetPixel(int x,int y,int color); int GetPixel(int x,int y); void DrawLine(int x0,int y0,int x1,int y1,int color); void DrawRectangle(int x0,int y0,int x1,int y1,char fill,int color); void DrawRoundRectangle(int x0,int y0,int x1,int y1,int rad,char fill,int color); void DrawCircle(int x0,int y0,int radius,char fill,int color) ; void DrawElliptic(int x0,int y0,int a,int b,char fill,int color); void DrawPicture(int x0,int y0,const unsigned short *pointer); void InitPicture(void); void GoToEnXY(int x,int y); void PutEnChar(char character,int forground_color,int background_color,int transparent_mode); void EnPutsf(const char *string,int forground_color,int background_color,int transparent_mode); void EnPuts(char *string,int forground_color,int background_color,int transparent_mode); void DrawButton(int x0,int y0,int x1,int y1,int font_color,char *string); void Pattern(void); void UniToAsc(char *uni_str , char *ascii_str); private: void SetRegister(int); void SendData(int); int ReadData(void); void SendCommand(int,int);
اینها چیزایی بود که برای شروع نیاز داشتیم. ولی خودم هنوز فکرایی دارم که انشالله روی این هدر پیاده میکنم ( مثل GUI به صورت شی گرا و ... ) . همینطور یکم بیشتر باید روی ساختار کار بشه یه سری چیزای دیگه هم از ماکرو در بیاد و با توابع قابل تنظیم باشه. به هر حال نسخه های بعدی رو هم توی همین پست قرار میدم :smile:
---------------------------------------------------------------
پروژه های نمونه نسخه 1 :
1. نمایش تصویر - کامپایلر IAR
2. ساعت عقربه ای - کامپایلر IAR
---------------------------------------------------------------
تصاویر :


دیدگاه